프로세스 관리

윤상준·2022년 3월 12일
0

운영체제

목록 보기
6/20
post-thumbnail

프로세스 관리 (Process Management)

프로그램 (Program)

하드 디스크 (보조기억장치)에 저장되어있지만 실행되지 않는 상태

프로세스 (Process)

하드 디스크 (보조기억장치)에 저장되어있는 프로그램이 실행 중인 상태 (Program in execution)

프로세스 상태

프로세스 상태 전이도 (Process State Transition Diagram)

  • New : 프로그램이 메인 메모리에 할당됨.
  • Ready : 메인 메모리에 할당된 프로그램이 실행 되기 위한 준비를 모두 마침.
  • Running : CPU가 프로세스를 실행함.
  • Waiting : 프로세스가 끝나지 않은 상태에서 잠시 다른 작업을 진행함.
  • Terminated : 프로세스가 종료됨.

Process Control Block (PCB)

Task Control Block (TCB)라고도 하며, 프로세스에 대한 모든 정보가 저장되어있는 하나의 블록이다.

  • 프로세스 상태 (Running, Ready, Waiting 등등)
  • PC
  • 레지스터
  • MMU 정보 (Base, Limit 주소)
  • CPU 시간
  • 프로세스 ID
  • 현재 열려있는 파일 목록

등이 포함되어 있다.

Queues

운영체제의 프로세스 관리 부서에 위치한 다양한 Queue를 일컫는다. 요청 또는 작업이 순서대로 대기 중인 대기줄같은 개념이다.

Job Queue

Job Scheduler

하드 디스크 안에서 기다리고 있는 여러개의 Job에 중에서, 어떤 Job을 먼저 메인 메모리에 올릴 지를 결정한다.

하나의 Job이 끝날 때 즉, 메모리가 빌 때만 실행되기 때문에 Long-Term Scheduler라고도 한다. 실행되는 텀이 길기 때문이다.

Ready Queue

CPU Scheduler

CPU 서비스를 어떤 프로세스에게 먼저 할당할 지 결정한다.

여러 개의 프로그램이 마치 동시에 실행하는 듯 할 정도로 동작해야하기 때문에 CPU의 스케쥴링 속도는 매우 빨라야 한다. 따라서 CPU Scheduler는 Short-Term Scheduler라고도 한다.

Device Queue

Device Scheduler

디스크 서비스를 어떤 프로세스에게 먼저 할당할 지 결정한다.

이처럼 여러 개의 Queue가 존재하며 각 Queue에 저장된 데이터는 각 프로세스의 PCB에 저장되어 있다. 또한 각 Queue에 저장되어 있는 작업 중 어떤 작업을 먼저 실행할 지 결정하는 알고리즘을 스케쥴링 알고리즘 (Scheduling Algorithm)이라고 한다.

멀티프로그래밍 (Multiprogramming)

메인 메모리에 여러 개의 프로세스가 한꺼번에 올라가는 방식이다.

몇 개의 프로세스가 올라와있는지를 나타내는 척도로 Degree of Multiprogramming이라고 한다.

프로세스는 크게 I/O 위주의 프로세스 (I/O Bound)CPU 위주의 프로세스 (CPU Bound)로 나뉘어져 있으며, Job Scheduler가 이 프로세스 들을 적절하게 분배해서 실행시킨다.

Swapping

운영체제는 주기적으로 메인 메모리를 순회하면서 그 안에 있는 프로세스를 보조기억장치로 옮기기도 하고, 보조기억장치에서 프로세스를 메인 메모리로 다시 옮기기도 한다.

옮기는 기준은 다양하지만 대표적으로 장기간 사용되지 않은 프로세스를 보조기억장치로 옮기고, 사용해야하는 프로세스를 메인 메모리로 옮긴다.

이러한 동작을 Swapping이라고 한다.

  • Swap Out : 메인 메모리의 프로세스를 하드 디스크로 옮기는 동작이다. 이때 하드디스크를 Swap Device 혹은 Backing Store라고도 한다.
  • Swap In : 하드디스크 (= Swap Device = Backing Store)에서 프로세스를 메인 메모리로 갖고 와서 할당하는 동작이다.

Swapping을 통해 메인 메모리의 공간을 더욱 효율적으로 관리할 수 있다. 또한 Swap Out된 프로세스가 다시 메인 메모리로 Swap In될 때, 원래 있던 자리로 다시 할당된다는 보장은 없다. 왜냐하면 Swap Out된 자리에 또 다른 프로세스가 할당되어있을 수 있기 때문이다. 하지만 이는 뒤에 나올 재배치 레지스터 (Relocation Register)를 통해 아무 문제 없이 이루어진다.

Medium-Term Scheduler

Swapping을 담당하는 Schedulersms Short-Term Scheduler보다는 느리고 Long-Term Scheduler보다는 빠르게 동작하기 때문에 Medium-Term Scheduler라고 한다.

Context Switching (문맥 전환)

문맥 전환

CPU가 지금 실행되고 있는 프로세스를 잠시 멈추고 다른 프로세스를 실행시키는 동작

문맥 전환에는 다음과 같은 하위 개념이 있다.

스케쥴러 (Scheduler)

CPU Scheduler를 의미하며, CPU가 어떤 프로세스를 멈추고 또 어떤 프로세스를 실행시킬 지 결정한다.

디스패처 (Dispatcher)

문맥 전환이 일어나면 디스패처는 지금 까지의 작업 상태를 PCB에 저장하고, 다른 PCB에 저장되어있던 상태로 모든 값을 Restore한다. 즉, 현재 문맥을 저장하고 다른 문맥으로 갈아끼우는 역할을 수행한다.

Context Switching Overhead

문맥 전환이 일어날 때마다 디스패처가 작업을 수행하며 이 모든 과정은 CPU의 성능에 부담(Overhead)을 주게 된다. 또한 문맥 전환은 필연적으로 매우 자주 발생하므로 Overhead를 줄이기 위해서는 디스패처를 최대한 효율적으로 제작해야한다.

profile
하고싶은건 많은데 시간이 없다!

0개의 댓글