CPU 자원을 어떻게 효과적으로 나눠주는가
1. 프로세스
1) 프로세스의 정의
프로그램 vs 프로세스(program vs process)
프로세스(process)는 task, job으로도 불린다.
실행 중인 프로그램을 프로세스라고 한다.(program in execution : text+data+stack,pc,sp,registors...)
=> 무덤 속 프로그램, 살아 움직이는 프로세스
2) 프로세스 상태
프로세스 상태에는 new, ready, running, wating, terminated가 있다.
New : 하드디스크에서 메인메모리로 프로그램이 올라온 상태
Ready : 프로세스가 초기화를 마치고 실행 준비 중인 상태
Running : 프로세스가 실행 중인 상태
Waiting : 프로세스가 I/O 등의 이유로 CPU로부터 자원을 할당받는 것을 잠시 멈춘 상태
Terminated : 프로세스가 제거되어 다시 하드디스크로 돌아간 상태
Time expired : TSS 에서 발생하며 I/O를 만나지 않더라도 일정 시간이 지나면 Ready 상태로 돌아가는 것을 말함
2. PCB
PCB(Process Control Block, 프로세스 제어 블록)은 프로세스에 대한 모든 정보를 갖고 있는 구조체를 말한다. TCB(Task Control Block)이라고도 한다.
PCB가 갖고 있는 정보에는 process state(running, ready, wating,...), PC(program counter, 번지정보), registors, MMU info(base, limit), CPU time, process id(프로세스마다 고유번호 부여), list of open files 등이 있다.
3.Queue
1) Job Queue
하드디스크에서 메인메모리로 올라올 때 기다리는 줄을 Job Queue라고 한다. Job Queue 내부에는 Job Scheduler가 있으며, 빈번히 일어나지 않기 때문에 Long-term scheduler라고도 한다.
2) Ready Queue
어떤 프로세스에게 다음 CPU 자원을 할당해줄 것인가.메모리에 올라온 프로세스가 CPU자원을 할당받기 위해 기다리는 줄을 말한다. Reday Queue 내부에는 CPU scheduler가 있으며 굉장히 빈번히 일어나기 때문에 Short-term scheduler라고도 한다.
3) Device Queue
프린터, 마우스, 키보드 등의 디바이스를 할당받기 위해 기다리는 줄을 말한다.
4. Multiprogramming
1) Degree of multiprogramming
메인 메모리에 몇개의 프로세스가 올라와있는가.
2) I/O bound vs CPU-bound process
주로 I/O 작업을 하는 프로세스를 I/O bound process라고 하며, 주로 계산 작업을 많이 하는 프로세스를 CPU-bound process라고 한다. O/S 내부의 Job Scheduler는 이 둘을 적절히 섞어준다.
3) Medium-term scheduler
하나의 Server 컴퓨터로부터 A, B, C가 자원을 할당받고 있을 때, B가 잠시 자리를 비웠다고 가정해보자. 운영체제 입장에서는 아무것도 하지않는 B의 자원을 A, C에게 배분하거나 다른 사용자에게 배분한다. 그동안 B의 자원은 swap device에 저장되는데 이것을 swap out이라 한다. 그리고 B가 다시 자리로 돌아오면 swap device에 잠시 저장해두었던 B의 자원을 메인메모리에 올리는데 이것을 swap In이라고 한다. 이 모든 과정을 Swapping 이라 한다.
Medium-term Scheduler라고 부르는 이유는 short-term보다는 덜 자주 발생하고, Long-term보다는 자주 발생하기 때문이다.
4) Context switching(문맥전환)
- Scheduler
- Dispatcher
- Context switching overhead
프로세스가 다른 프로세스로 넘어가는 것을 Context switching(문맥전환)이라 한다.
예를 들어 p1에서 p2로 넘어가기 위해서는 1) p1의 현재 상태를 저장하고 2) p2의 저장된 값을 복원(restore)하는 과정이 필요한데, 이러한 일을 하는 프로그램이 바로 Dispatcher이다.
Context switching을 하는 것은 컴퓨터에 부담을 준다. 이것을 가리키는 용어가 Context switching overhead이다.
'Programming > 운영체제' 카테고리의 다른 글
CPU 스케쥴링 알고리즘(2) - SJF, Priority, Round-Robin (0) | 2021.07.25 |
---|---|
CPU 스케쥴링 알고리즘(1) - FCFS (0) | 2021.07.24 |
운영체제 서비스 (0) | 2021.07.13 |
이중모드, 하드웨어 보호 (0) | 2021.07.13 |
고등운영체제, 인터럽트 기반 운영체제 (0) | 2021.07.12 |