[운영체제] 4. Process Management

do_large·2021년 2월 3일
0

운영체제강의

목록 보기
4/8
post-thumbnail

프로세스 생성(Process Creation)

  • 부모 프로세스(Parent process)가 자식 프로세스(Children process) 생성
  • 프로세스 트리 형성
  • 프로세스는 자원을 필요로한다.
    - 운영체제로부터 받는다.
    - 부모와 공유한다.
  • 자원의 공유
    - 부모와 자식이 모든 자원을 공유하는 모델
    - 일부를 공유하는 모델
    - 전혀 공유하지 않는 모델
  • 수행(Execution)
    - 부모와 자식은 공존하며 수행되는 모델
    - 자식이 종료될때까지 부모가 기다리는 모델
    - Copy-on-write(COW) : 자식은 부모를 일단 복사하는게 아니라 부모와 공통되는 부분을 공유해서 사용하다가, 부모와 자식의 내용이 달라지게되면 그제서야 부모와 공유하던 메모리공간의 일부를 카피해서 자식이 가지게 된다.
  • 주소공간
    - 자식은 부모의 공간을 복사함
    - 자식은 그 공간에 새로운 프로그램을 올림 > 서로다른 프로그램들이 컴퓨터내에 존재할 수 있다.

프로세스의 생성은 2단계를 거치는데
1. 부모프로세스가 자신을 복제(프로세스의 문맥을 복사하는 것, 부모의 메모리를 복사하고, pc도 카피)해서 자신과 똑같은 자식프로세스를 만든다.
2. 복제한 곳에 새로운 프로그램을 덮어씌움

  • 유닉스의 예
    - fork() 시스템콜은 새로운 프로세스를 생성한다.(부모를 그대로 복사, 주소공간 할당)
    - fork다음에 이어지는 exec() 시스템콜을 통해 새로운 프로그램을 메모리에 올림 (exec시스템콜은 완전히 새로운 프로세스가 생성되게함)

프로세스 종료

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려준다(exit이라는 시스템콜을하면 프로세스가 종료된다)
    - 자식이 부모에게 output data를 보냄
    - 프로세스의 각종 자원들이 운영체제에게 반납됨
  • 부모 프로세스가 자식의 수행을 종료시킴(abort)
    - 자식이 할당 자원의 한계치를 넘어섬
    - 자식에게 할당된 태스크가 더 이상 필요하지 않음
    - 부모가 종료(exit)하는 경우
    • 운영체제는 부모 프로세스가 종료하는 경우 자식이 더이상 수행되도록 두지 않는다.
    • 자식을 다 죽인다음에 부모가 죽는다.
    • 단계적인 종료

프로세스와 관련된 시스템 콜

  • fork : create a child
  • exec : overlay new image
  • wait : sleep until child id done
  • exit : frees all the resources, notify parent

wait() 시스템콜

  • 프로세스 A가 wait() 시스템콜을 호출하면
    - 커널은 child가 종료될 때까지 프로세스 A를 sleep 시킨다(block 상태)
    - Child process가 종료되면 커널은 프로세스 A를 깨운다(ready 상태)

exit() 시스템콜

프로세스의 종료

  • 자발적 종료
    • 마지막 statement수행후 exit()시스템콜을 통해 프로그램에 명시적으로 적어주지 않아도 main함수가 리턴되는 위치에 컴파일러가 넣어줌
  • 비자발적 종료
    • 부모 프로세스가 자식 프로세스를 강제 종료시킴
      1. 자식 프로세스가 한계치를 넘어서는 자원 요청
      2. 자식에게 할당된 태스크가 더이상 필요하지 않음
    • 키보드로 kill, break등을 친 경우
    • 부모가 종료하는 경우 : 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨

프로세스간 협력

독립적 프로세스

프로세스는 각자의 주소공간을 가지고 수행되므로 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치지 못함

협력 프로세스

프로세스 협력 매커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음

프로세스 간 협력 메커니즘(IPC : Interprocess Communication)

  • 메시지를 전달하는 방법
    • message passing : 커널을 통해 메시지 전달
      • message system : 프로세스 사이에 공유변수를 일체 사용하지 않고 통신하는 시스템
      • direct Communication : 통신하려는 프로세스의 이름을 명시적으로 표시
      • Indirect Communication : mailbox(또는 port)를 통해 메시지를 간접 전달
  • 주소공간을 공유하는 방법
    • shared memory : 서로 다른 프로세스간에도 일부 주소공간을 공유하게 하는 shared memory 메커니즘이 있음
    • ★thread : thread는 사실상 하나의 프로세스이므로 프로세스 간 협력으로 보기는 어렵지만 동일한 process를 구성하는 thread들 간에는 주소공간을 공유하므로 협력이 가능

0개의 댓글