[KOCW] 운영체제, 4. CPU 스케줄링(1)

임창묵·2022년 6월 17일
0

Computer science

목록 보기
11/11
post-thumbnail

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() 시스템 콜

  • 프로세스의 종료
    1. 자발적 종료
      • 마지막 statement 수행 후, 자동으로 main 함수가 리턴되는 위치에 컴파일러가 넣어줌
    2. 비자발적 종료
      • 부모 프로세스가 자식 프로세스를 강제 종료시키는 경우
        • 자식 프로세스가 한계치를 넘어서는 자원을 요청했거나,
        • 자식에게 할당된 task가 더 이상 필요하지 않은 경우
      • 키보드로 kill, break 등을 친 경우
      • 부모가 종료되는 경우
        • 부모 프로세스가 종료되기 전에 자식들이 먼저 종료됨

프로세스간 협력

  • 독립적 프로세스(Independent process)
    • 프로세스는 각자의 주소 공간을 가지고 수행되므로, 원칙적으로는 서로 영향을 미치지 못함
  • 협력 프로세스(Cooperationg process)

    • 프로세스 협력 메커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음
  • 프로세스 간 협력 메커니즘(IPC: Inter-Process Communication)

    1. message passing: 커널을 통해 메시지를 전달하는 방법
    2. shared memory: 주소 공간을 공유하는 방법
      • 서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 메커니즘
        • thread는 사실상 하나의 프로세스이므로 프로세스 간 협력으로 보기는 어렵지만, 동일한 프로세스를 구성하는 thread 간에는 주소 공간을 공유하므로 협력 가능

Message Passing

  • 프로세스 A가 커널에 메시지를 보내고, 커널이 프로세스 B에게 메시지를 전달하는 방식

  • Message system: 프로세스 사이에 공유 변수(shared variable)를 사용하지 않고 통신하는 시스템

    • Direct Communication: 통신하려는 프로세스의 이름을 명시적으로 표시
    • Indirect Communication: mailbox(또는 port)를 통해 메시지를 간접 전달

Shared Memory

  • 프로세스가 커널에 요청을 보내서, 어느 주소의 메모리를 다른 프로세스와 공유하겠다고 선언하는 방식

0개의 댓글