[운영체제] Process Management (2)
2022. 3. 16. 17:16ㆍCS/OS
wait() 시스템 콜
: 프로세스를 잠들게 함(block 상태로 보냄. - 오래 걸리는 이벤트 기다리고 준비된다면 ready 상태로 변함.).
: 보통 자식 프로세스를 만든 후 기다리면서 wait()를 함. -> 부모 프로세스가 blocked 에서 ready로 변환되면서 부모 프로세스를 깨움.
int main() {
int childPID;
s1;
childPID = fork();
if(childPID == 0) {
//ready for child process
}
else {
//부모 프로세스라면?
wait();
// CPU를 얻지 못하고 잠들게 됨.
// 자식 프로세스가 코드를 다 실행하고 자식 프로세스가 종료가 되면 wait을 빠져나가서 다음 것 실행.
}
}
exit() 시스템 콜
: 프로세스 종료 하는 시스템 콜
명시적으로 하는 경우도 있고, exit를 사용하지 않았더라도 컴파일러가 exit를 넣어서 호출되도록 함.
- 자발적 종료
: 마지막 statement 실행 후 exit로 종료.
: main 함수가 리턴되는 위치에 컴파일러가 넣어줌.
- 비자발적 종료
: 부모 프로세스가 자식 프로세스 강제 종료. (자원 부족, 태스크 더 필요하지 않는 경우)
: 키보드로 kill, break 경우.
: 부모가 종료 (부모 종료 -> 자식도 종료)
프로세스 간 협력
- 독립적 프로세스 (independent process)
: 원칙적으로 프로세스는 독립적. 다른 프로세스 수행에 영향을 미치지 못함.
- 협력 프로세스 (cooperating process)
: 프로세스가 다른 프로세스 수행에 영향 미칠 수 있음.
- 프로세스 간 협력 메커니즘. (IPC : Interprocess Communication)
- message passing : 커널을 통해 메시지 전달.
- message system : 프로세스 사이에 공유 변수(shared variable) 일체 사용않고 통신하는 시스템
- direct communication : 통신하려는 프로세스 이름 명시적으로 표시
- indirect communication : mailbox(또는 port)를 통해 메시지 간접 전달.
- shared memory : 주소 공간 공유.
- thread : 프로세스의 협력으로 보기 어렵지만 process를 구성하는 thread 간에는 주소공간을 아예 공유하고 있기 때문에 협력 가능.
'CS > OS' 카테고리의 다른 글
[운영체제] CPU Scheduling (2) (0) | 2022.03.18 |
---|---|
[운영체제] CPU 스케쥴링 (1) (0) | 2022.03.16 |
[운영체제] Process Management (1) (0) | 2022.03.16 |
[운영체제] Process 3 (0) | 2022.01.24 |
[운영체제] Process 2 (0) | 2022.01.24 |