프로세스는 일반적으로 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램 즉 실행중인 프로그램을 의미하며, 작업(Job) 태스크(Task)라고도 합니다.
윈도우 사용자가 특정 프로그램을 실행시키면 하드디스크에 저장된 프로그램이 메모리(RAM)에
올라오게 되고, 메모리에 올라온 프로그램은 CPU를 통해 연산되는데 하드디스크에서 메모리로 올라온 프로그램을 프로세스라고 합니다.
프로세스는 다음과 같이 여러 형태로 정의할 수 있습니다.
PCB를 가진 프로그램
실기억장치에 저장된 프로그램
프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
프로시저가 활동중인 것
비동기적 행위를 일으키는 주체
지정된 결과를 얻기 위한 일련의 계통적 동작
목적 또는 결과에 따라 발생되는 사건들의 과정
운영체제가 관리하는 실행 단위
※ 프로시저란?
한 프로그램은 여러개의 작은 프로그램으로 분할될 수 있는데 이떄 분할된 작은 프로그램을 의미하며, 부 프로그램이라고도 합니다.
운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB 를 생성 한다. 프로세스는 CPU를 할당받아 작업을 처리하다가도 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU 를 반환해야 하는데, 이때 작업의 진행 상황을 모두 PCB 에 저장하게 된다. 그리고 다시 CPU 를 할당받게 되면 PCB 에 저장되어있던 내용을 불러와 이전에 종료됐던 시점부터 다시 작업을 수행한다.
컴파일 시 지역변수 얼마나 사용할 지 미리 계산할수 없기 때문에 런타임에 지역변수 선언 순서에 따라 스택영역은 위쪽으로 주소값을 매기고 동적 할당될때 힙영역은 아래쪽으로 주소값을 매긴다.
프로세스 상태 전이는 프로세스가 시스템내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미하며, 프로세스의 상태를 아래와 같이 상태 전이도로 표시할 수 있습니다.
제출 : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태입니다.
접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태입니다
준비(Ready) : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태입니다. 프로세스는 준비상태 큐(스케줄링 큐)에서 실행을 준비하고 있으며 접수상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행됩니다.
실행(Run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태이며 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료 되면 프로세스는 준비상태로 전환됩니다. 실행중인 프로세스에 입출력 처리가 필요하면 실행중인 프로세스는 대기상태로 전이되며, 실행상태로의 전이는 CPU 스케줄러
에 의해 수행됩니다.
대기(Wait) : 프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될떄까지 대기하고 있는상태입니다.
종료(Terminated) : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태입니다.
Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
Wake Up : 입 출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling : 입 출력 장치의 공유 및 상대적으로 느린 입출력 장치의 처리속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입 출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
교통량 제어기 : 프로세스의 상태에 대한 조사와 통보 담당
??
프로세스들이 CPU를 할당받을 수 있도록 관리해주는 프로세스이다.
프로세서 스케줄링의 기법에는 크게 아래와 같이 선점(preemptive)/비선점(non-preemptive) 형태가 있다.
먼저, 비선점(non-preemptive) 은 이미 할당된 CPU 를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.
프로세스가 CPUS 를 할당 받으면 해당 프로세스가 완료될 때 까지 CPU 를 사용하지 않는다.
비선점 기법에 종류로는 크게 아래 종류들이 존재한다.
FCFS 스케줄링 (First Come First Serve Scheduling)
CPU 를 먼저 요청한 프로세스가 먼저 CPU 를 배정 받는 스케줄링 방법. P1(24ms), P2(3ms), P3(3ms) 프로세스가 있다 가정하면, CPU 스케줄링의 결과는 다음과 같이 표현된다.
장점 : 가장 간단
단점 : p3 가 priority 가 가장 높은 프로세스였다면, 의미 없는 대기 시간을 기다려야만한다. 이런 식으로 다른 모든 프로세스들이 커다란 한 프로세스가 끝날때까지 계속 기다리는 현상을 convey effect 라 한다. convey effect는 CPU와 장치들의 사용률을 낮추기 때문에 되도록이면 지양해야 한다.
SPN(Shortest Process Next) 혹은 Shortest Job First
준비 큐에서 기다리고 있는 프로세스 중에서 가장 CPU 요구량이 적은 것을 먼저 실행시켜 주는 방식
장점 : 평균 응답 시간 최소화
단점 : 실행 시간이 긴 프로세스가 CPU를 할당받지 못하고 계속해서 대기하는 무한 대기 현상이 발생
convey effect 가 길어지면 무한대기현상?
HRRN(Highest Response Ratio Next)
준비 큐에 있는 프로세스들 중에서 응답률(Response Ratio = (대기시간 + CPU 요구량) / CPU 요구량)이 가장 높은 프로세스에게 높은 우선순위를 주는 방식
장점 : SPN과 SRT 방식의 약점인 수행 시간이 긴 프로세스의 무한 대기 현상을 방지하기 위한 기법
선점(preemptive) 은 CPU 사용권을 선점한다고 생각하면 이해가 쉽다. 특정 요건에 따라 각 프로세스의 요청이 있을 때 프로세스에게 분배하는 방식이다. 가장 자원을 필요로하는 프로세스에게 CPU 를 분배하며 상황에 따라 강제로 회수할 수 도 있다. 따라서 빠른 응답신을 요하는 대화식 시분할 시스템에 적합하며 긴급한 프로세스를 제어할 수 있다.
라운드 로빈(Round-Robin/RR) 스케줄링
FCFS 스케줄링을 기반으로 하여 CPU를 할당하되, 각 프로세스는 한 번에 쓸 수 있는 CPU 시간 크기(시간 할당량)이 지나면 시간 종료 인터럽트에 의해 CPU를 뺏기게 되는 방식이다. 주로 우선순위 스케줄링(Priority scheduling)과 결합해 프로세스의 시간 할당량을 조절하는 방식으로 활용한다.
장점 : FCFS에서 convey effect의 방지
단점 : Context Switch의 오버헤드를 감수해야한다.
SRT(Shortest Remaining Time) 스케줄링
준비 큐에서 완료까지 남은 CPU 요구량이 가장 짧은 것을 먼저 실행시켜주는 방식이다. 실행 도중 남은 실행 시간이 더 적은 프로세스가 준비 큐에 들어올 경우, 현재 실행 중인 것을 중단하고 새 프로세스에게 CPU를 할당한다.
다단계 큐(Multi-level Queue) 스케줄링
프로세스들의 우선순위 개수만큼의 큐가 필요하다. 프로세스들은 자신의 우선순위 값에 해당하는 큐에 들어가게 되며, 우선순위가 낮은 하위 단계 큐의 작업은 실행 중이더라도 상위 단계 큐에 프로세스가 도착하면 CPU를 뺏긴다.
https://coding-factory.tistory.com/307
https://ybdeveloper.tistory.com/20
https://velog.io/@emily0_0/OS-Process-Thread
https://sugerent.tistory.com/270