본문 바로가기
운영체제/이화여대 반효경 교수님 OS 정리

4.1. 프로세스 관리

by latissimus 2022. 7. 25.

 

Process Management 1

이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크

1. 프로세스 생성, 종료

1.1. 생성

부모 프로세스가 자식 프로세스를 생성하며, 프로세스의 트리 구조를 형성한다. 맨 위에 태초의 노드가 있다고 하면, 삼각형 구도로 자식노드가 연결되는 구조를 상상하면 되겠다. 프로세스는 자원(CPU, 메모리 등)을 필요로 하며, 보통 운영체제로부터 받는다.

  • 자원 공유 방식
    • 부모와 자식이 모든 자원을 공유하는 모델
    • 일부를 공유하는 모델
    • 전혀 공유하지 않는 모델

원칙적으로는 자식 프로세스가 생겨나면, 자원을 두고 경쟁하는 사이가 되며, 자원을 공유하지 않는다. 하지만 공유하는 모델도 존재한다.

  • Copy-on-write(COW)
    • write가 발생할 때 copy하겠다는 의미이다. 그 전까지는 그냥 부모의 것을 공유한다.
    • 리눅스 등 효율적인 운영체제들은 일단 카피하지 않고, 부모의 주소 공간을 공유(카운터만 하나 카피해서 같은 위치 가르킴)한다. 이 상태로 실행하다가 data, stack등이 달라지면 그제서야 부모의 메모리 공간 일부를 카피한다.
    • code, data, stack은 잘게 쪼개져 필요한 부분만 물리적 메모리에 올라가는데, 쪼개진 부분에서 cow시 해당 부분만 copy한다.
  • 수행(Execution)
    • 부모와 자식은 공존하며 수행되는 모델
    • 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델

프로세스는 부모 프로세스가 자식 프로세스를 생성하는 구조이다. 사실상 운영체제에게 부탁(시스템콜)을 해서 자식 프로세스를 생성한다. 자식은 부모의 주소 공간을 복사(bianry and OS data)하고, 자식은 그 공간에 새로운 프로그램을 올린다.

1.2. 종료

1.2.1. 자발적 종료

프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려준다. 보통 컴파일러가 exit 명령을 끝에 자동으로 추가해준다.

  • 자식이 부모에게 output data를 보낸다.(wait 시스템 콜을 통해 전달)

1.2.2. 비자발적 종료

부모 프로세스가 자식의 수행을 종료시킴(abort)

  • 자식이 할당 자원의 한계치를 넘어섬
  • 자식에게 할당된 태스크가 더 이상 필요하지 않음
  • 부모가 종료(exit)하는 경우
    • 운영체제는 부모 프로세스가 종료하는 경우 자식이 더 이상 수행되도록 두지 않음 -> 단계적인 종료
    • 교수님의 농담 : 프로세스의 세계에서는 자식이 사치를 부려도 죽이고, 하는 일이 없어도 죽인다. 또 부모가 죽으면 다 같이 죽인다.

2. 복제

복제는 문맥을 모두 복제하는 것을 말한다.

  • 메모리(주소 공간) ~code, data, stack
  • cpu문맥, PC 레지스터

유닉스의 경우 fork() -> exec() 를 통해 자식 프로세스를 생성한다. 사용자 프로세스가 직접 못하고, 운영체제를 통해서만(시스템콜) 복제할 수 있다.

  • fork() 시스템 콜
    • 복제하는 단계
    • 부모를 그대로 복사한다. 운영체제, PCB 등도 그대로 복제한다. (OS data except PID + binary)
    • 주소 공간 할당
  • exec() 시스템 콜
    • 덮어씌우는 단계
    • 새로운 프로그램을 메모리에 올린다.

'운영체제 > 이화여대 반효경 교수님 OS 정리' 카테고리의 다른 글

5.1. CPU 스케줄링  (0) 2022.07.27
4.2. 프로세스 관리  (0) 2022.07.26
3.2. 프로세스  (0) 2022.07.24
3.1. 프로세스  (0) 2022.07.23
2.2. 컴퓨터 시스템의 구조와 프로그램의 실행  (0) 2022.07.22

댓글