<청춘> 격정적으로 사는 것

밤을 새고 공부한 다음 날 새벽에 느꼈던 생생한 환희와 야생적인 즐거움을 잊을 수 없다

운영체제 OS (Operating System)

[운영체제] #03-3 프로세스 관리 : 프로세스의 정의, CPU 스케쥴러, 멀티프로그래밍

수학도 2021. 8. 9. 21:33

출처

https://www.youtube.com/watch?v=QwBe0iYZBEg&list=PLK4xviZcdB9ieuusJ5j1UYZMFTuAgZCq8&index=6 

 

 


프로세스 관리 (Process Management)

 

프로세스란?

실행 중에 있는 프로그램(program in execution)을 프로세스라고 한다.

즉, 메인 메모리 상에 올라가있는 프로그램을 프로세스라고 한다.

 

아래 그림에서는 테트리스 게임 프로그램이 프로세스이다.

 

프로그램 vs 프로세스 (Program VS Process)

프로그램은 무덤 속에 있다고 표현할 수 있다.

아무것도 못하고 아무일도 일어나지 않는 상태이기 때문이다.

 

프로세스는 살아 움직인다고 표현할 수 있다.

프로세스는 task, job이라고도 한다.

실행중인 프로그램(program in execution)인 프로세스에서는 text + data + stack, pc, sp, register, ... 등이 바뀔 수 있다.

 

 

 

프로세스 상태

멀티 프로그래밍

 

타임쉐어링

 

하드 디스크 안에 프로그램이 있으면 아무것도 안한다.

 

  • new : 프로그램이 메인 메모리로 올라온 상태
  • ready : CPU만 할당받으면 실행이 가능한 상태
  • running : CPU에서 실행중인 상태
  • waiting :  순서적으로 처리해야 하는 입출력 처리 장치(I/O)의 작업이 끝나기를 기다리는 상태
  • terminated : 프로세스 실행 종료

 

 

PCB (Process Control Block, 프로세스 제어 블록)

TCB(Task Control Block)라고도 한다.

PCB 안에는 프로세스에 대한 모든 정보들이 들어있다.

PCB는 O/S 내의 프로세스 관리 부서 안에 들어있다. (구조체)

 

하나의 프로세스에 대해 한개의 PCB가 할당된다.

PCB1에는 P1에 대한 모든 정보가 들어있고,

PCB2에는 P2에 대한 모든 정보가 들어있고,

PCB3에는 P3에 대한 모든 정보가 들어있다.

 

 

 

프로세스에 대한 정보에는 무엇이 있을까?

 

프로세스의 상태(Process state) - new, ready, running ... 등

PC(Program Count) - 다음 몇 번째에 실행할것인가?

registers - PC외 다른 레지스터 정보들

MMU info - base, limit (메모리 번지) 값

CPU time - 현재까지 CPU를 얼마나 사용했는지. 너무 많이 사용한 프로세스는 다음에 조금만 사용하게끔

pid(process id) - 프로세스마다 부여된 번호

list of open files - 프로세스가 사용하고 있는 파일들

 

 

 

프로세스는 사람과 비슷하다.

 

O/S는 정부와 비슷하다.

정부는 사람에 관한 정보(이름, 주민번호, 주소 등)를 가진다.

O/S는 프로세스에 관한 정보 PCB를 가진다.

 

 

Queue

프로세스 관리 부서(Process Management)에는 Job Queue, Ready Queue, Device Queue 등 많은 줄이 있고, 프로세스들이 여기에 줄을 선다.

 

하드디스크안에는 많은 프로그램이 존재한다.

메인메모리는 작다.

메인메모리에 올라가려는 프로그램이 많다.

따라서 한번에 못올라가고 줄서서 기다려야한다.

이렇게 프로세스가 메인 메모리에 적재되기 전에 줄서서 기다리는 것을 Job Queue라고 한다.

 

메인메모리에 적재된 후에도 CPU를 할당받기 위해서는 또 기다려야한다. (타임쉐어링)

CPU 서비스를 받다가도 시간이 지나면 CPU를 다시 할당받기 위해 또 기다려야한다.

이것은 Ready Queue라고 한다.

 

프로세스가 I/O(입출력장치)를 사용하려고 해도 다른 프로세스가 사용중이라면 줄서서 기다려야한다.

이것은 Device Queue라고 한다.

 

 

 

그럼 Queue에 줄서있는 프로세스 중 어떤 프로세스가 우선시될까?

 

Job Queue에 줄 서있는 프로세스 중 어떤 프로세스를 먼저 메인메모리에 올려줄지 결정하는 프로그램을 Job Scheduler라고 한다. 다른말로 long-term Scheduler라고 한다.

 

Ready Queue에 줄 서있는 프로세스 중 어떤 프로세스에게 먼저 CPU를 할당해줄지 결정하는 프로그램을 CPU

Scheduler라고 한다. 다른말로 short-term Scheduler라고 한다.

 

Device Queue에 줄 서있는 프로세스 중 어떤 프로세스에게 먼저 I/O를 할당해줄지 결정하는 프로그램을 Device Scheduler라고 한다.

이 프로그램(스케줄러)들은 O/S내의 프로세스 관리 부서에 들어있다. (코드)

 

 

 


 

Multiprogramming

 

 

Degree of multiprogramming란?

 

메인메모리에 몇 개의 프로세스가 올라와있는가를 나타내는 것

 

 

 

i/o-bound vs CPU-bound process

 

프로세스는 크게 i/o-bound와 CPU-bound process 두가지 종류로 나눌 수 있다.

i/o-bound process

  • 주로 i/o 작업을 하는 프로세스
  • 워드 프로세스, hwp 등 문서편집 작업하는 프로그램

 

CPU-bound process

  • 주로 cpu를 많이 사용하는 작업(계산)을 하는 프로세스
  • 기상청 등 슈퍼컴퓨터를 사용하는 애플리케이션 프로그램 

 

i/o만 자주 사용하면 cpu가 놀고, cpu만 자주 사용하면 i/o가 놀기 때문에 i/o 와 cpu를 골고루 사용하도록 프로세스를 메인 메모리에 적재시켜야한다. O/S는 Job Shceduler를 이용하여 이것을 조절한다.

 

 

 

Swapping이란?

 

 

현재 서버 컴퓨터를 A, B, C가 동시에 사용하고 있다고 하자. (multiprogramming system)

그럼 서버 컴퓨터의 메인 메모리에는 O/S와 A의 메모리, B의 메모리, C의 메모리 영역이 할당되어 있을 것이다.

 

이런 상황에서 사용자 B가 커피를 마시러 가면, B의 메모리는 메인 메모리에 적재되어 있지만, CPU는 더이상 B의 일을 하지 않는다. 이것은 CPU의 성능을 저하시키므로 B가 커피를 마시는 동안 놀고 있는 B의 메모리는 메인 메모리에서 쫓겨나야한다. 이 역할은 O/S가 해준다.

 

O/S는 끊임없이 PCB 등을 감시하다가 B가 아무 일도 하지 않는 것을 발견하면 B의 메모리를 하드 디스크로 쫓아낸다. 그럼 B가 있던 메인 메모리 영역이 비게 되고, 그 영역에 다른 프로세스를 올리던가 A나 C에게 영역을 나눠줄 수 있게 된다.

 

이렇게 메인 메모리에 있던 프로세스를 하드 디스크로 쫓아내는 것을 swap out이라고 하고, 이때 사용하는 디스크를 swap device라고 한다.

 

swapping

 

이후 B가 돌아와서 다시 작업을 시작하면, B의 메모리가 다시 메인 메모리로 적재되어야 하는데 이를 swap in이라고 한다.

이런 swap out, swap device, swap in 등을 통칭해서 swapping이라고 한다.

 

 

 

Medium-term scheduler란?

O/S가 메모리를 뒤져서 현재 사용되고 있지 않은 프로세스 중 어떤 프로세스를 swap out할 것인지 결정하는 스케줄러로,  어떤 프로세스를 내쫓을 것인지 결정하는 일은 short-term 보다는 덜 long-term 보다는 많이 일어나기 때문에 medium-term 이라고 부른다.

 

 

 

Context switching (문맥전환)

-Scheduler

-Dispatcher