프로그램과 프로세스의 차이, 프로세스 스케줄링

이제우·2023년 11월 25일
0

프로그램, 프로세스의 차이?

프로그램은 명렁어 목록이 있는 파일로 디스크에 저장되어있는 정적인 상태이며
프로세스는 이 프로그램을 실행했을 때 메모리에 올라와 실행되고 있는 동적인 상태이다.

예를 들어 메모장이라는 프로그램을 실행했을 때에 메모장을 사용하는데 필요한 정보들을 모두 메모리로 올린 후 고유한 PID(프로세스 ID)를 부여한다. 만약 메모장 프로그램을 두번 실행할 경우 실행한 프로그램은 메모장 하나이지만 프로세스에는 두개의 메모장이 올라와있다. 또한 같은 프로그램이라도 독립된 프로세스의 PID를 갖고 있다.

정리하면 프로그램은 저장장치에 저장된 명령어 집합이며 프로세스는 실제로 실행중인 프로그램이다.


프로세스 스케줄링이란?

프로세스 스케줄링은 프로세스에게 언제, 얼마나 자원과 시간을 할당할지 조율하는 것
만약 하나의 프로세스가 cpu의 자원을 독점하게 된다면 다른 프로세스는 돌아가지 못하며 컴퓨터는 제대로된 작동을 하지 못하게 된다. 이를 방지하고 자원을 효율적으로 사용하기위해 cpu의 자원을 커널이 관리하여 스케줄링 하는 것이다.

커널 : 운영체제의 핵심으로 컴퓨터의 자원관리 역할을 한다.


프로세스 스케줄링의 종류는 ?

비선점 스케줄링과 선점 스케줄링으로 나눌 수 있는데, 비선점 스케줄링은 한 프로세스가 cpu를 할당 받으면 다른 프로세스가 강제로 자리를 빼앗을 수 없는 방식으로 모든 프로세스에게 공정하게 시간을 부여하고 예측 시간계산이 쉽지만, 짧은 시간의 작업이 긴 대기시간을 가질 수 있다.
선점 스케줄링은 한 프로세스가 cpu를 할당 받았더라도 우선 순위가 높은 프로세스가 자리를 선점할 수 있다. 우선 순위가 높은 프로세스를 먼저 처리해야하거나 시분할 시스템에 적합하지만 선점 방식에 의해 오버헤드가 발생할 수 있다.

시분할 시스템 : 하나의 컴퓨터를 복수의 사용자가 사용하는 시스템
오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 시간, 메모리


비선점 스케줄링에는 어떤 방식이 있을까 ?

비선점 스케줄링에는 FCFS(First Come First Service), SJF(Shortest Job First), HRN(Highest Response ratio), 기한부(DeadLine), 우선순위(Priority)로 정리할 수 있다.

FCFS : CPU에 먼저 도착한 프로세스부터 CPU를 할당하는 방법. 공평하지만 우선순위가 높은 프로세스가 낮은 프로세스를 기다리는 상황이 발생한다.

SJF : 작업시간이 가장 짧은 프로세스부터 처리하는 방법. 평균 응답시간을 최소화 할 수 있지만 작업시간이 긴 프로세스는 무한히 대기하는 상황이 발생한다.

HRN : 우선순위(대기시간 + 서비스시간 / 서비스시간)의 결과값이 높을 수록 먼저 처리하는 방법.대기시간이 길어질 수록 우선순위가 높아져 작업시간 차이에 따른 불평들을 해소할 수 있다.

기한부 : 프로세스들에게 일정한 시간을 부여하여 그 시간동안 cpu를 할당하는 방법.

우선순위 : 각 프로세스별로 우선순위를 부여하고, 그 우선순위에 따라 cpu를 할당하는 방법.
만약 우선순위가 같을경우 FCFS를 적용한다.

선점 스케줄링에는 어떤 방식이 있을까 ?

선점 스케줄링에는 SRT(Shortest Remaining Time), 라운드로빈(Round Robin:RR), 다단계 큐(Multi Level Queue:MLQ), 다단계 피드백 큐 (Multi Level Feedback Queue:MLFQ)로 정리할 수 있다.

SRT : 가장 짧은 작업시간을 가진 프로세스부터 처리하는 방법. 더 짧은 작업시간을 가진 프로세스가 생기면 그 프로세스가 선점하게 된다.

라운드 로빈 : 프로세스마다 균등한 시간을 부여하고 그 시간동안 cpu를 할당한다. 만약 시간안에 프로세스를 처리하지 못한다면 대기열의 맨 뒤로 보내진다.

다단계 큐 : 우선순위마다 큐를 생성하고 가장 높은 우선순위 큐부터 cpu를 할당한다. 낮은 우선순위의 큐에 할당중이라도 높은 우선순위에 프로세스가 들어오면 높은 우선순위에게 cpu를 빼앗긴다. 각 큐마다 독자적인 스케줄링을 사용가능하다. 우선순위가 낮은 큐는 대기시간이 길어지는 기아현상이 발생한다. 또한 한번 큐들간의 프로세스 이동이 불가능해 유연성이 떨어진다.

기아현상 : 우선순위가 낮아서 자원을 계속해서 할당받지 못하는 상태

다단계 피드백 큐 : 하나의 큐에 모든 프로세스를 적재한 후 라운드 로빈 방식으로 cpu를 할당한다. 여기서 처리되지 않은 프로세스는 다음 큐로 넘기고 최종적으로 FCFS를 적용한다.

profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글