본문 바로가기

3-2/운영체제

OS - Ch03.Processes (2)

10. Operations on Processes

fork(), exec(), exit() .. 등은 system call임.

- Process Creation (프로세스 생성)

    - fork() : OS에게 프로세스를 생성해달라고 요청하는 system call

- Process Execution (프로세스 실행)

    - exec() : file system에 어떤 실행파일이 있는데, 이 실행파일을 실행시켜달라고 요청하는 system call

- Process termination (프로세스 종료)

    - exit() : 프로세스를 종료시켜달라고 요청하는 system call

    - _exit()

    - abort()

    - wait()

- Cooperating processes (프로세스 간 협력)

: 두 개의 프로세스가 하나의 목적으로 동작할 때, 동기화 하고, 서로 데이터를 전달하고 .. 하는 것.

    - Inter-Process Communication (IPC) 와 관련된 system call들.

        ㄴ 다양하게 많아서 운영체제 수업 시간엔 다루지 않겠습니다.

 

11. Process Creation : Unix/Linux - fork()

프로세스 생성 시 사용하는 system call - int fork()

- 동작 절차

1) 새로운 PCB 하나 생성. (Creates and initializes a new PCB)

    : 프로세스를 하나 더 만드는 거니까, 그 프로세스를 다룰 PCB가 하나 더 필요함. 이 PCB에 새 프로세스와 관련해 필요한 정보들을 다 채워야함.

 

2) 메모리 공간을 잡음. (Creates and initializes a new address space)

    : 프로세스는 메모리에 자리를 잡고 수행되는 거니까, 해당 메모리 공간을 잡아야 함.

 

3) Initializes the address space with a copy of the entire contents of the address space of the parent

    : fork()를 통해 자기 자신과 완전히 똑같은 프로세스를 하나 만듦. 

    Parent process가 위에 저만큼의 메모리 공간을 차지하면서 동작을 하고 있었다고 할 때,

    fork()를 하면 이거랑 똑같은 걸 copy하는 거니까

    위의 parent process와 똑같은 내용이 아래 child process에 메모리 공간도 똑같이 copy가 된다.

 

4) 실제 메모리 뿐만 아니라, 운영체제 안에서 parent process가 하던 작업들도 다 똑같이 copy함. (또는 share할 수 있게 함.)

 

5) Process 상태를 ready 상태로 만들고, PCB를 ready queue에 집어넣음.

    : 프로세스 하나를 다 만들었으니까 얘를 실행시킬 수 있게 준비시키는 것임.

6) fork()의 return value

    : Returns the child's PID to the parent, and zero(0) to the child

'3-2 > 운영체제' 카테고리의 다른 글

OS - Ch03.Processes (1)  (0) 2023.03.27