1. 프로세스 스케줄링
프로세스란?
- 실행중에 있는 응용 프로그램을 의미한다.
- 스케줄링의 대상이 되는 작업(task)와 같은 의미로 쓰인다.
- 프로세스는 최소 1개의 스레드(thread)를 갖고 있으며, 스레드 단위로 스케줄링이 수행된다.
스케줄링이란?
- 응용 프로그램을 CPU에 할당하는 방식을 의미한다.
- 응용 프로그램을 CPU에 어떤 순서로 어떤 방식으로 할당하는 일이다.
2. 프로세스 스케줄링의 종류
- 배치 처리 시스템, 시분할 시스템, 멀티 태스킹, 멀티 프로세싱, 멀티 프로그래밍
a. 배치 처리 시스템( = 일괄 처리 시스템)
- 응용 프로그램을 순차적으로 CPU에 할당하여 실행시키는 방식
- Queue 자료구조와 같은 방식으로 작동한다. (First In, First Out)
- 그러므로 배치 처리 시스템은 Queue를 이용하여 작성된다.
a-1. 배치 처리 시스템을 더이상 사용하지 않는 이유
- 응용 프로그램을 순차적으로 실행시키기 때문에, 시간 효율성이 매우 나쁘다.
ex) A 프로그램은 실행하는데 12시간이 걸리고 B 프로그램은 1시간이 걸린다고 했을 때, A와 B 프로그램을 순차적으로 실행하는 경우, B프로그램이 실행되기 까지 13시간이 걸리게 된다. - 두가지 프로그램을 동시에 사용하기가 힘들다. (동시에 여러 응용 프로그램 실행)
ex) 음악을 들으면서 문서작업을 하려는 경우, 배치 처리 시스템에서는 한 프로그램의 실행이 끝날 때까지 다른 프로그램을 실행할 수 없다. - 다중사용자에 대한 지원이 힘들다. (여러 사용자가 하나의 컴퓨터를 사용하는 경우)
ex) 한 사용자의 응답이 처리될 때까지, 다른 사용자의 응답은 대기하게 된다. - 이와같은 단점을 보완하기 위해서 시분할 시스템 / 멀티 프로그래밍 기술이 나왔다.
b. 시분할 시스템
- 시간을 분할하여 여러개의 응용 프로그램을 돌려가면서 실행시키는 기술
c. 멀티 태스킹
- 단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 기술 / 시스템
- 시분할 시스템과 같은 방식으로 동작한다.
- 10 ~ 20ms 단위로 실행되는 응용 프로그램이 바뀐다. (1000ms = 1초)
d. 멀티 프로세싱
- 복수의 CPU를 사용하여 하나의 프로그램을 병렬로 실행하여 실행속도를 극대화하는 시스템이다.
e. 멀티 프로그래밍
- 병렬 처리 초기단계의 모습
- 다수의 프로세스를 메모리에 올려 번갈아 가면서 처리하는 방식
- 시간대비 CPU의 활용도를 최대화하는 시스템
- CPU의 활용도가 높아지기 때문에, 응용 프로그램을 짧은 시간안에 실행 완료시킬 수 있다.
- 여러 응용 프로그램을 단일 프로세서(CPU) 상에서 동시에 실행되는 것처럼 보이게 한다.
e-1. 멀티 프로그래밍이 필요한 이유
- 응용 프로그램은 온전히 CPU를 쓰기보다, 다른 작업을 필요로 하는 경우가 많다.
ex) 응용 프로그램 실행 중 파일을 읽는 작업 - 저장매체에 접근하여 파일을 읽는 동안, 기존의 실행중이던 응용 프로그램은 작업을 멈추게 된다. 다른 작업으로 인해 멈춰있는 CPU를 다른 응용 프로그램에 할당하여 CPU의 활용도를 최대화 한다.
e-2. 저장매체에 접근하는데 시간이 얼마나 걸릴까?
- CPU에 있는 레지스터를 기점으로 CPU와 멀어질수록 접근하는데 필요한 시간이 늘어난다.
- 아래 그림에서 Flash Drive는 SSD를 의미한다.
- 시스템 버스(System Bus)
- CPU는 메모리나 저장 매체 등에 직접 접근하지 않고 DMA에게 요청하여 데이터를 전달하고 전달 받는다.
'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글
8. 프로세스 상태와 스케줄링 알고리즘 (0) | 2021.04.02 |
---|---|
7. 운영체제 - 스케줄링 알고리즘 (0) | 2021.03.31 |
5. 운영체제의 구조 (0) | 2021.03.26 |
4. 운영체제, 응용 프로그램, 컴퓨터 하드웨어의 관계 (0) | 2021.03.26 |
3. 운영체제의 역사(1970년 ~ 2000년대) (0) | 2021.03.26 |
댓글