프로세스의 구조
코드 영역
- 프로그램의 본문이 기술된 곳으로, 프로그래머가 작성한 코드가 탑재된다.
- 탑재된 코드는 읽기 전용으로 처리되어 변경할 수 없다.
데이터 영역
- 코드가 실행되면서 사용하는 변수나 파일 등의 각종 데이터를 모아놓은 곳이다.
- 데이터는 변하는 값이기 때문에 이곳의 내용은 기본적으로 읽기와 쓰기가 가능하다.
스택 영역
- 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳이다.
- 프로세스 내에서 함수를 호출하면 해당 함수를 수행하고 원래 프로그램으로 되돌아올 위치를 이 영역에 저장한다.
- 이 영역은 사용자에게는 보이지 않으며 운영체제에 의해 관리된다.
fork() 시스템 호출
개념
- 실행 중인 프로세스로부터 새로운 프로세스를 복사하는 함수다.
- 실행 중인 프로세스와 똑같은 프로세스가 하나 더 만들어진다.
동작 과정
fork()
시스템 호출을 하면, 부모 프로세스의 프로세스 제어 블록(PCB)을 포함한 대부분의 영역이 자식 프로세스에 복사된다.- 복사된 내용 중 프로세스 구분자, 메모리 관련 정보, 부모 및 자식 프로세스 구분자는 변경된다.
장점
- 프로세스의 생성 속도가 매우 빠르다.
- 추가 작업 없이 자원을 상속할 수 있다.
- 시스템 관리를 효율적으로 할 수 있다.
예
- 부모 프로세스의 코드가 실행되어
fork()
문을 만나면, 똑같은 내용의 자식 프로세스를 하나 생성한다. - 이때
fork()
문은 부모 프로세스에 0보다 큰 값을 반환하고, 자식 프로세스에는 0을 반환한다. - 만약 0보다 작은 값을 반환하면 자식 프로세스가 생성되지 않은 것으로 간주하고 ‘Error’를 출력한다.
'운영체제' 카테고리의 다른 글
SJF 스케줄링 (Shortest-Job-First Scheduling) (0) | 2024.04.21 |
---|---|
CPU 스케줄링 (1) | 2024.04.21 |
컴퓨터 시스템의 인터럽트 처리 매커니즘 (0) | 2024.04.21 |
문맥 교환 (Context Switching) (0) | 2024.04.20 |
프로세스 제어 블록(Process Control Block, PCB) (1) | 2024.04.20 |