[운영체제] 프로세스 관리

Junseo Kim·2020년 10월 5일
0

운영체제 공부

목록 보기
4/10

프로세스 관리

프로세스 생성

  • 부모 프로세스가 자식 프로세스를 생성한다.(보통 복제 생성(복제한 후 새로운 프로그램을 올림)한다.)
  • 부모 프로세스가 자식 프로세스를 생성하기 때문에 트리가 형성된다.
  • 운영체제를 통해서만 생성할 수 있다.

fork(): 새로운 프로세스를 생성(부모 프로세스를 복제) 부모 프로세스인 경우 fork()의 리턴 값은 양수(자식 프로세스의 id값), 자식 프로세스인 경우는 0이 된다.

자식 프로세스는 처음부터 실행되는 것이 아니라 fork() 이후 부터 실행된다. 왜냐하면 복제 생성은 부모 프로세스의 문맥을 모두 가져오기 때문에 부모 프로세스의 PC가 fork() 시스템콜을 수행한 이후를 가리키고 있으므로 자식 프로세스의 PC도 해당부분을 가리키고 있기 때문에

exec(): 새로운 프로그램을 메모리에 올림

프로세스가 실행되다가 exec 함수를 만나면 완전히 새로운 프로그램이 덮어쓰여 다시 처음부터 실행된다. 다시 원래의 프로그램으로 돌아올 수는 없다. 즉 exec 함수 이후에 오는 코드는 실행되지 않는다.

프로세스 종료

wait(): 자식 프로세스가 종료될 때 까지 기다리는 시스템 콜이다. 즉 프로세스를 block 상태로 보낸다. 자식 프로세스가 종료되면 부모 프로세스가 block상태에서 ready상태로 변한다.

exit(): 자원을 반납하고 프로세스를 종료시킨다. 이 때 자식 프로세스가 부모 프로세스에게 output 데이터를 보낸다. 자발적으로 종료되는 경우.

*abort: 비자발적으로 프로세스를 종료시킨다.(자원 한계치를 넘었을 때, task가 더 이상 없는 경우, 부모 프로세스가 종료되는 경우)

프로세스 협력(IPC: interprocess communication)

  • message passing: 사용자 프로세스끼리 직접 소통할 수 없으므로, 운영체제 커널을 통해 메세지를 전달.
    1) direct communication: 통신하려는 프로세스의 이름을 명시적으로 표시
    2) indirect communication: mailbox를 통해 메세지를 간접적으로 전달
  • shared memory: 원칙적으로 프로세스는 본인의 주소공간(code | data | stack)만 볼 수 있지만, shared memory는 일부 주소 공간을 프로세스 간에 서로 공유하는 방법이다.

0개의 댓글