KOCW > 이화여자대학교 반효경 교수님 > 운영체제 > 4. CPU 스케줄링(1)
4. CPU 스케줄링(1)
프로세스와 관련한 시스템 콜
fork()
: create a child (copy)
exec()
: overlay new image
wait()
: sleep until child is done
exit()
: frees all the resources, notify parent
wait() 시스템 콜
- 프로세스 A가 wait() 시스템 콜을 호출하면
- 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다(block 상태)
- Child process가 종료되면 커널은 프로세스 A를 깨운다(ready 상태)
exit() 시스템 콜
- 프로세스의 종료
- 자발적 종료
- 마지막 statement 수행 후, 자동으로 main 함수가 리턴되는 위치에 컴파일러가 넣어줌
- 비자발적 종료
- 부모 프로세스가 자식 프로세스를 강제 종료시키는 경우
- 자식 프로세스가 한계치를 넘어서는 자원을 요청했거나,
- 자식에게 할당된 task가 더 이상 필요하지 않은 경우
- 키보드로 kill, break 등을 친 경우
- 부모가 종료되는 경우
- 부모 프로세스가 종료되기 전에 자식들이 먼저 종료됨
프로세스간 협력
- 독립적 프로세스(Independent process)
- 프로세스는 각자의 주소 공간을 가지고 수행되므로, 원칙적으로는 서로 영향을 미치지 못함
Message Passing
-
프로세스 A가 커널에 메시지를 보내고, 커널이 프로세스 B에게 메시지를 전달하는 방식
-
Message system: 프로세스 사이에 공유 변수(shared variable)를 사용하지 않고 통신하는 시스템
- Direct Communication: 통신하려는 프로세스의 이름을 명시적으로 표시
- Indirect Communication: mailbox(또는 port)를 통해 메시지를 간접 전달
Shared Memory
- 프로세스가 커널에 요청을 보내서, 어느 주소의 메모리를 다른 프로세스와 공유하겠다고 선언하는 방식