TIL 221201

강지훈·2022년 11월 30일
0

프로세스와 스레드의 차이

프로세스: 실행 중인 프로그램으로 디스크로 부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것

프로세스 제어 블록(Process Control Block, PCB)
PCB 는 특정 프로세스에 대한 중요한 정보를 저장
프로세스의 생성과 동시에 고유한 PCB를 생성

스레드: 프로세스의 실행 단위
스택을 스레드 마다 독립접으로 할당하는 이유:
스레드의 정의에 따라 독립적인 실행 흐름을 추가하기 위한 최소 조건으로 독립된 스택을 할당한다.

PC Register를 스레드마다 독립적으로 할당하는 이유
명령어가 연속적으로 수행되지 못하고 어느 부분까지 수행 했는지 기억할 필요가 있어서.

멀티 스레딩의 장점: 시스템의 throughput이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축된다.

멀티 스레딩의 단점: 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다.

CPU 스케줄러
FCFS(First Come First Served)
먼저 온 순서대로 처리
비선점형 스케쥴링

문제점: 소요시간이 긴 프로세스가 먼저 도달하여 효율성을 낮추는 현상이 발생

SJF(Shortest - Job - First)
다른 프로세스가 먼저 도착했어도 CPU burst time이 짧은 프로세스에게 선 할당
비선점형 스케쥴링

문제점: 효율성을 추구하는게 가장 중요하지만 특정 프로세스가 지나치게 차별받으면 안되는 것이다.
이 스케쥴링은 극단적으로 CPU 사용이 짧은 job을 선호한다. 그래서 사용 시간이 긴 프로세스는 거의 영원히
CPU를 할당받을 수 없다.

SRTF(Shortest Remaining Time First)
새로운 프로세스가 도착할 때마다 새로운 스케줄링이 이루어진다
선점형 스케쥴링
현재 수행중인 프로세스의 남은 burst time보다 짧은 CPU burst time을 가지는 새로운 프로세스가 도착하면 CPU를 뺏긴다.

문제점: 새로운 프로세스가 도달할 대마다 스케쥴링을 다시 하기때문에 CPU burst time을 측정할 수가 없다.

Priority Scheduling
우선 순위가 가장 높은 프로세스에게 CPU를 할당하는 스케줄링.
선점형 스케줄링 방식: 더 높은 우선순위가 오면 실행중인 프로세스를 멈추고 CPU를 선점한다
비선점형 스케줄링 방식: 더 높은 우선순위의 프로세스가 도착하면 Ready Queue의 Head에 넣는다

문제점:starvation
무기한 봉쇄: 실행 준비는 되어있으나 CPU를 사용못하는 프로세스를 CPU가 무기한 대기하는 상태

해결책: aging
아무리 우선순위가 낮은 프로세스라도 오래 기다리면 우선순위를 높여주자

Round Robin
현대적인 CPU 스케줄링
각 프로세스는 동일한 크기의 할당 시간을 갖게된다
할당 시간이 지나면 프로세스는 선점 당하고 ready queue의 제일 뒤에 가서 다시 줄을 선다
RR 은 CPU 사용시간이 랜덤한 프로세스들이 섞여 있을 경우에 효율적
RR 이 가능한 이유는 프로세스의 context를 save 할 수 있기 때문이다.

장점:
Response time이 빨라진다.
n개의 프로세스가 ready queue에 있고 할당시간이 q인 경우 각 프로세스는 q단위로 CPU 시간의 1/n을 얻는다.
즉 어떤 프로세스도 (n-1)q time unit 이상 기다리지 않는다.
프로세스가 기다리는 시간이 CPU를 사용할 만큼 증가한다. 공정한 스케줄링이라고 할수 있다.

profile
never stop

0개의 댓글