프로세스는 코드영역, 데이터 영역, 힙 영역, 스택 영역 으로 구성된다.
예를 들어 워드 프로세서 프로그램을 실행하면
프로그램은 코드 영역에 탑재되고, 편집중인 문서는 데이터 영역에 탑재된다.
또한 운영체제가 워드프로세서를 작동하기 위해 사용하는 각종 부가 데이터는 스택 영역에서 관리한다.
코드 영역
실제 CPU가 실행할 기계어가 위치한다.
프로그램의 본문이 기술된 곳으로 텍스트 영역이라고도 한다.
프로그래머가 작성한 프로그램은 코드 영역에 탑재되며 탑재된 코드는 읽기전용으로 처리된다.
데이터 영역
코드가 실행되면서 사용하는 변수(전역변수, static 변수)나 파일등의 각종 데이터를 모아놓은 곳이다.
스택 영역
운영체제가 프로세스를 실행하기위해 부수적으로 필요한 데이터를 모아놓은 곳이다.
함수의 콜스택
사용자에게 보이지 않는 영역
실행중인 프로세스로부터 새로운 프로세스를 복사하는 방법도 있다.
fork() 시스템 호출은 실행중인 프로세스로 부터 새로운 프로세스를 복사하는 함수이다.
커널에서 제공하는 이 함수는 프로세스를 복사하는 일종의 시스템 호출이다.
fork() 시스템 호출을 사용하면 실행중인 프로세스와 똑같은 프로세스가 하나 더 만들어진다.
예를 들어 워드프로세서로 문서작업하다가 새로운 문서를 실행하면, 운영체제는
새로운 워드프로세서 프로그램을 실행하지 않고, fork() 시스템 호출을 사용해 기존의 프로세스를 복사한다
이렇게 복사하면 속도가 훨씬 빠르다.
프로세스 생성 속도가 빠르다
추가 작업없이 자원을 상속할 수 있다
시스템 관리를 효율적으로 할 수 있다.
부모 프로세스와 자식프로세스가 자식 프로세스 구분자와 부모 프로세스 구분자로 연결되어 있어
자식 프로세스를 종료하면, 자식이 사용하던 자원을 부모 프로세스가 정리할 수 있다.
이러한 정리를 부모 프로세스에 맡김으로써 시스템이 효율적으로 관리된다.