티스토리 뷰
### Process termination ###
: 프로세스 종료 발생 대부분의 os에서 exit() 시스템 호출이 프로세스 종료에 사용됩니다.(process 끝)
: os는 종료 될 process와 관련된 모든 resource를 할당 해제 합니다.
<Cascading termination>
: parent process 종료되면 모든 child proess를 종료해야 합니다.
(계단식 종료, 순차적(폭포수) 종료)
: 종료는 os에 의해 시작됩니다.
<Two issues in process termination>
1. Zombie process(unerased process, ghost process)
: child process가 종료되었지만 parent process가 child process의 종료 상태를 회수 하지 않았을 경우 child process를 zombie process 라한다.
(child process 가 작업을 끝내고 exit() -> parent process 가 wait() 안 할 경우)
: 종료된 process일 경우 process의 정보가 process table에 남는다.
-> parent process가 wait()를 하지 않으면 child process가 exit()되지만 정보가 남아 있는 상태(zombie process)
2. Orphan process
: child process가 exit()하기 전에 parent process exit()하는 경우
=> wait()를 실행 해줄 process 가 없다(회수 해줄 process가 없다)
<해결>
- 모든 process의 parent process(system d process) 가 orphan process를 인지 해서 system d process가 wait()해서 모든 정보 삭제 해 준다.
<Process Termination Command>
1. exit()
: process 자체를 제거하기 위한 System call
: process resource는 os에 의해 할당 해제됩니다.
2. abort()
: parent process가 child process를 종료하기 위한 System call
<이유>
1. child process가 할당된 자원을 초과할 때
2. parent가 exit할 때
### Interprocess Communication ###
: process 상호간에 작용하는 통신
< Cooperating processes(다중 process 협력) >
: 동일 정보 공유
: 병렬 및 분산 계산
: 모듈성
< *Interprocess communication(IPC) >
1. Shared memory based IPC (메모리 공유)
: 공동으로 작업을 처리할 수 있는 공유 메모리 공간을 통한 process 통신
: 통신은 os가 아닌 process에 의해 제어가 됩니다.
: 공유 데이터의 일관성을 유지하려면 동기화가 필요합니다.
2. *Message passing based IPC (메세지 전달)
: 공동의 공간이 주어지지 않고 협업가능 process들이 직접적으로 data를 주고 받는 형식
: os를 통해 제어가 됩니다.
: 보내기 / 받기를 통해 수행됩니다.
: message 크기는 고정적이거나 가변적입니다.
<message passing based IPC communication Type>
1. Direct communication(직접 통신)
: kernel을 통해 바로 message를 주고 받는 형식
: 각 process 가 명시적으로 이름(process id)을 밝힌다.
: send(P, msg): send a msg to proc P.
: receive(Q, msg): recv a msg from proc Q.
2. Indirect communication(간접 통신)
: 바로 보내지 못하고 중간 매체(mail boxes, 공유memoryX, 연산)를 통해 주고 받는 형식
: 여러개의 mail box 생성 가능
: 각 mail boxe는 unique한 id를 가진다.(mail box id)
: 각 process쌍은 여러 통신 링크를 공유합니다.
: send(A, msg): send a msg to mailbox A.
: receive(A, msg): recv a msg from mailbox A.
'운영체제 > 이론' 카테고리의 다른 글
(20) Multithreading Models (0) | 2020.09.19 |
---|---|
(19) Thread (0) | 2020.09.19 |
(17) Process Management(Process creation) (0) | 2020.09.17 |
(16) Context Switching (0) | 2020.09.17 |
(15) Processing Scheduling (0) | 2020.09.17 |