Copy On Write(COW) : Write가 발생했을 시 Copy한다.
A process is created by fork()
system call.
- 프로세스를 생성하는 것
- pid = 0 : child
- pid ≠ 0 : parent
A process can execute a different program by the exec()
system call.
wait()
system call
프로세스 A가 wait() 시스템 콜을 호출하면
exit()
system call
프로세스의 종료
-
자발적 종료
- 마지막 statement 수행 후 exit() 시스템 콜을 통해
- 프로그램에 명시적으로 수행하지 않아도 main 함수가 리턴되는 위치에 컴파일러가 넣어준다.
-
비자발적 종료
- 부모 프로세스가 자식 프로세스를 강제 종료시킴
- 자식 프로세스가 한계치를 넘어서는 자원 요청
- 자식에게 할당된 태스크가 더 이상 필요하지 않음
- 키보드로 kill, break 등을 친 경우
- 부모가 종료하는 경우
- 부모 프로세스가 종료되기 전에 자식 프로세스들이 먼저 종료됨
-
자원을 반납하고 부모 프로세스에게 알림
프로세스 간 협력
- 독립적 프로세스(Independent process)
- 프로세스는 각자의 주소 공간을 가지고 수행되므로 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못함
- 협력 프로세스(Cooperating process)
- 프로세스 협력 매커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음
- 프로세스 협력 매커니즘 (
IPC
: Interprocess Communication)
-
메시지를 전달하는 방법(Message Passing) : 커널을 통해 메시지 전달
- 프로세스 사이에 공유 변수를 일체 사용하지 않고 통신하는 시스템
방법
1) Direct Communication : 통신하려는 프로세스의 이름을 명시적으로 표시
2) Indirect Communication : mailbox (or port)를 통해 메시지를 간접 전달
-
주소 공간을 공유하는 방법(Shared Memory) : 서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 Shared Memory 매커니즘이 있음
- 원래는 독자적인 공간을 가지고 있으나, Shared Memory 방법을 공유한다면 메모리를 공유할 수 있다.
- Thread : Thread는 사실상 하나의 프로세스이므로 프로세스 간 협력으로 보기는 어렵지만 동일한 process를 구성하는 thread들 간에는 주소 공간을 공유하므로 협력이 가능