프로세스 (Process)란?
* 프로세스란 실행중인 프로그램의 메모리,리소스 등을 총칭하는 의미이다.
프로세스는 실행파일(바이너리파일)이 스택,힙,데이터영역,코드영역에 담겨서 프로그램을 순서대로 실행하게 된다.
OS가 레지스터에 연산할 것을 가져다 놓고, CPU는 레지스터에 있는 데이터를 가져와서 연산을 한다.
CPU는 다시 그 데이터를 레지스터에 가져다 놓고, OS가 레지스터의 데이터를 다시 가져간다.
이 전체의 과정이 프로세스이다.
* CPU의 레지스터(Register) - CPU에 들어 있는 엑세스가 매우 빠른 메모리 공간
Swap File : 운영체제는 둘 이상의 프로세스가 실행 될 경우, 데이터를 하드디스크에 보관한다.
Context-Switching : 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.
프로세스 스케줄링(Process Scheduling)이란?
프로세스가 항상 CPU를 점유하고 있는 것은 아니다. 프로세스가 실행 가능한 시점까지 실행하고, I/O 등 CPU를 사용하지 않는 작업을 할 때는 다른 프로세스를 실행한다면 CPU의 사용 효율을 높일 수 있다.
오늘 날에는 위 아이디어를 프로세스 스케줄링(Process Scheduling)이라는 기술로 구현한다.
프로세스 상태 (Process State)
생성(create) : 프로세스의 생성
실행(running, burst) : 프로세스가 프로세서를 차지하여 명령어들이 실행되고 있다.
준비(ready) : CPU가 할당 되기를 기다리고 있다.
대기(wating) : 프로세스가 입출력 완료하고 시그널 수신 등 어떤 사건을 기다리고 있는 상태이다.
종료(terminate) : 프로세스의 실행이 종료되었다.
운영체제는 준비 큐(Ready Queue), 대기 큐(Wating Queue) 등의 자료구조를 두어 이들 프로세스를 관리한다.
선점(Preemptive)과 비선점(Non-Preemptive)
선점 -> 빼았을 수 있다. (타의에 의해 자원을 빼았길 수 있음)
Context Switching 오버헤드가 크다.
비선점 -> 빼았을 수 없다. (할당 자원을 스스로 반납할 때까지 사용)
Context Switching 오버헤드가 적다.
프로세스 스케줄링은 다음 네 가지 경우 일어날 수 있다.
- 프로세스가 실행 상태에서 대기상태로 전환할 때
- 프로세스가 실행상태에서 준비 상태로 전환될 때
- 프로세스가 대기상태에서 준비 상태로 전환 될 때
- 프로세스가 종료되었을 때
1,4의 경우 비선점 스케줄링이라고 한다.
선점 스케줄링은 위의 네 가지 경우 모두 해당
스케줄링 기법
1 FCFS(First Come First Serve) 스케줄링
큐와 같은 방식으로 CPU를 먼저 요청한 프로세스가 먼저 CPU를 배정받는 스케줄링 방법. 비선점 스케줄링 방식이다.
batch system에 적합, interactive system에 부적합
convoy effect가 발생하므로 그렇게 좋은 처리 방법이 아니라고 한다. (평균대기시간이 길어질 수 있기 때문이다.)
convoy effect는 모든 프로세스들이 커다란 한 프로세스가 끝날 때까지 기다리는 현상이다.
2 SPN(Shortest-Process-Next) 스케줄링 = (SJF Shortest-Job-First)
비선점 스케줄링이다.
CPU 한 차례 사용시간(burst time) 이 작은 프로세스부터 먼저 끝내는 방법
convoy effect를 최소화 할 수 있다.
장점 : 평균대시간 최소화, 시스템 내 프로세스 수 최소화, 빠른 응답시간 제공
단점 : 무한대기(Starvation) 현상 발생, 정확한 실행시간을 알 수 없음.
3 SRTN(Shortest-Remaining Time Next) 스케줄링
잔여 실행이 더 적은 프로세스가 Ready 상태가 되면 선점됨
장점 : SPN의 장점 극대화
단점 : 총 실행시간 예측이 필요함, 잔여 실행을 계속 추적해야함 -> 오버헤드 발생, Context switching overhead,
구현 및 사용이 비현실적이다.
4 HRNN (High-Response-Ratio-Next)
SPN + Aging concepts
Aging concepts = 프로세스의 대기시간을 고려하여 기회를 제공
비선점 스케줄링이다.
Response Ratio가 높은 프로세스가 우선이다.
Response Ratio = (대기시간+실행시간) / 실행시간
5 Robin Round 스케줄링
도착시간 (ready queue 기준)
먼저 도착한 프로세스를 먼저처리
자원 사용제한 시간(Time Quantum)이 있음 (프로세스는 할당된 시간이 지나면 자원 반납)
대화형, 시분할 시스템에 적합
6 MLQ ( Multi-level Queue)
작업 또는 우선순위 별 별도의 Ready Queue를 가짐. (레디큐가 여러개이다.)
큐 사이에는 우선순위 기반의 스케줄링사용
장점 : 중요한 애들의 빠른 응답시간
단점 : 여러개의 큐 관리 등 스케줄링 오버헤드
큐의 구성은 정책에 따라 관리
7 MFQ (Multi-level Feedback Queue)
프로세스의 큐간 이동이 허용됨.
피드백을 통해 우선순위 조정 (동적으로 우선순위 부여 가능)
특징
Dynamic Priority, 선점 스케줄링,
장점 : 각 준비 큐마다 시간 할당량을 다르게 배정, 입출력위주 프로세스들을 상위 단계의 큐로 이동, 우선순위 높임
대기시간이 지정된 시간을 초과한 프로세스들을 상위큐로 이동(에이징 기법)
단점 : 설계 및 구현이 복잡
프로세스에 대한 사전 정보 없이 SPN, SRTN, HRRN 기법의 효과를 볼 수 있다.