본문 바로가기

Today I Learned

운영체제와 정보기술의 원리5 프로세스 관리

1. 프로세스 개념

프로세스 : 실행 중인 프로그램 process in execution

프로세스의 문맥 context : 프로세스의 주소 공간, 레지스터 값, 커널에서 수행한 일의 상태, 커널이 관리하고 있는 각종 정보 등을 포함하는 현재 상태 (프로세스 문맥을 통해서 과거의 상태도 알 수 있다.)

2. 프로세스의 상태

  • 시작 New : 프로세스를 생성 중인 상태
  • 준비 Ready : 프로세스가 CPU만 보유하면 당장 명령을 실행할 수 있지만, CPU를 할당받지 못한 상태
  • 실행 Running : 프로세스가 CPU를 보유하고 기계어 명령을 실행하고 있는 상태
  • 봉쇄 Blocked : CPU를 할당받더라도 당장 명령을 실행할 수 없는 상태 (예) 입출력 작업 진행, 시간이 오래 걸리는 작업
  • 완료 Terminated : 프로세스를 종료 중인 상태중지 Suspended : 중기 스케줄러가 있을 때 프로세스 수행이 정지된 상태. 스왑 아웃된 상태.

3. 프로세스 제어블록

PCB : Process Control Block : 운영체제가 시스템 내의 여러 프로세스를 관리하기 위해 프로세스마다 유지하는 정보를 담는 커널 내의 자료구조.

  • 구성 요소
    • 프로세스의 상태
    • 프로그램 카운터
    • CPU 레지스터
    • CPU 스케줄링 정보
    • 메모리 관리 정보
    • 자원 사용 정보
    • 입출력 상태 정보

4. 프로세스 문맥교환

프로세스 A에서 프로세스 B로 넘겨주는 과정을 말한다. 원래 수행 중이던 프로세스를 저장하고 새로운 프로세스의 문맥을 저장한다. 모드 변경에 비해 문맥교환은 더 많은 오버헤드를 가진다. 문맥교환 중에 일어나는 작업이 실제 시스템에 유용한 작업이 아니기 때문이다.
(예) 타이머 인터럽트, 입출력 요청에 의한 봉쇄 상태

CPU 디스패치 : 준비 상태인 프로세스가 CPU의 제어권을 넘겨받는 과정

5. 프로세스를 스케줄링하기 위한 큐

  • 준비 큐 : CPU를 기다리는 프로세스를 줄 세우는 큐
  • 장치 큐 : 특정 자원을 기다리는 프로세스를 줄 세우는 큐
  • 작업 큐 Job Queue : 시스템 내의 모든 프로세스를 관리하기 위한 큐. 현재 시스템 내에 있는 모든 프로세스가 작업 큐에 속한다.

6. 스케줄러

어떤 프로세스가 자원을 할당받을지를 결정하는 커널의 코드를 말한다.

  • 장기 스케줄러 : 어떤 프로세스가 메모리를 할당받을지 결정한다.
  • 중기 스케줄러 : 현대의 시분할 시스템에서는 장기 스케줄러를 사용하지 않는다. 대신 비슷한 역할의 중기 스케줄러를 두는데, 프로세스당 메모리 양이 많아지면 스왑아웃시키는 역할을 한다.
  • 단기 스케줄러 : 준비 큐에 있는 여러 프로세스 중에서 어떤 프로세스를 다음 실행 상태로 만들 것인지 결정한다. 수행 속도가 빨라야한다.

7. 프로세스의 생성

시스템이 부팅된 후, 최초의 프로세스는 운영체제가 직접 생성하지만, 그 다음부터는 이미 존재하는 프로세스가 다른 프로세스를 복제 생성하게 된다. fork() 시스템 콜을 통해 식별자를 제외하고 모든 것을 복제한다.

8. 프로세스 간의 협력

원칙적으로 하나의 프로세스는 다른 프로세승의 수행에 영향을 미칠 수 없다. 단, 여러 프로세스가 협력하면 업무의 효율성이 증대될 수 있다.

IPC : Inter-Process Communication(인터프로세스 커뮤니케이션) : 하나의 컴퓨터 안에서 실행 중인 프로세스 간의 통신과 동기화를 이루기 위한 매커니즘을 말한다. 메시지 전달 방식과 공유데이터 방식이 있다.