운영체제 - Process Scheduling

Jocy·2022년 5월 25일
0
post-thumbnail

Process Scheduling

CPU는 프로세스를 실행할 때 어떤 프로그램에게 CPU 소유권을 줄것인지 결정합니다.
CPU의 이용율은 높게, 주어진 시간에 많은 일을 하게, 준비 큐에 있는 프로세스는 적게,
응답 시간을 짧게 설정하는 것을 목표로 합니다.

PCB(Process Control Block)

운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터로 프로세스 제어 블록(PCB)이라고 합니다.
프로세스가 생성되면 운영체제는 메타데이터를 저장할 해당 PCB를 생성합니다.
PCB의 구조는 프로세스 스케쥴링 상태, 프로세스 ID, 프로세스 권한, 프로그램 카운터,
CPU 레지스터, CPU 스케쥴링 정보, 계정 정보(프로세스 실행에 사용된 CPU 사용량),
I/O 상태정보(프로세스에 할당된 I/O 디바이스 목록)이 있습니다.

Context Switching

컨텍스트 스위칭은 PCB를 교환하는 과정을 말합니다.
한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생합니다.
여러 프로그램이 동시에 실행된 것처럼 보이지만 실제로 실행된 프로세스는 1개이며
컨텍스트 스위칭으로 실행 프로세스빠른 속도로 변경하여 실행합니다.(동시성)

스레드에서도 Context Switching이 일어나지만 스택 영역을 제외하고
모든 메모리를 공유하기 때문에 컨텍스트 스위칭 비용이 적고 시간도 적게 걸립니다.

IPC(Inter Process Communication)

멀티프로세스는 IPC가 가능하며 IPC는 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 것을 말합니다. 대표적으로 클라이언트와 서버가 있습니다. 클라이언트(프로세스)는 데이터를 요청하고 서버(프로세스)는 클라이언트 요청에 응답하기 때문입니다. 스레드를 사용하는 것보다 속도가 떨어집니다.
IPC종류로 소켓, 공유메모리, 파일, 익명파이프, 명명파이프, 메시지 큐가 있습니다.

Race condition(경쟁상태), Shared Resource(공유자원)

시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 데이터와 같은 자원이나 변수 등을
공유 자원이라고 합니다. 이 공유 자원을 2개 이상의 프로세스가 읽거나 쓰는 상황
경쟁상태(race condition) 이라고 합니다.

Critical section(임계영역)

공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 영역임계 영역(Critical section)이라고 합니다. 이를 해결하기 위해 상호배제, 한정대기, 융통성이란 조건을 만족하는
뮤텍스, 세마포어, 모니터라는 3가지 방법이 있습니다.

상호배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음
한정대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안됨
융통성 : 한 프로세스가 다른 프로세스의 일을 방해해서는 안됨

Mutex(뮤텍스)

공유 자원을 사용하기전에 설정하고 사용한 후에 해제하는 잠금입니다.
뮤텍스는 하나의 상태만 가집니다.

Semaphore(세마포어)

하나의 공유자원을 사용하기 위해 여러 스레드들이 공유자원에 대해
원활하게 관리하기 위해 사용되는 동기화 프로그래밍 기법 입니다.
wait 함수signal 함수의 연산을 통해 자원 사용을 마치면
대기 스레드에 알려주어서 스레드를 동기화 합니다.

wait 함수 : 자신의 차례가 올때까지 기다리는 함수로 P 함수라고도 합니다.
signal 함수 : 다음 프로세스로 순서를 넘겨주는 함수로 V 함수라고도 합니다.

Monitor (모니터)

둘 이상의 프로세스나 스레드가 공유자원에 안전하게 접근할 수 있도록
공유 자원을 숨기고 공유자원 접근에 대해 인터페이스만 제공해줍니다.

Deadlock(교착상태)

두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태입니다.
윈도우에서 프로세스를 실행시키다 응답 없음 이라고 뜰 때가 있는데
이 경우가 교착상태(Deadlock)가 발생한 경우 입니다.
이러한 교착 상태를 해결하기 위해 여러가지 방식이 있지만
현대의 OS나 Pintos 프로젝트에서는 주로 Round-Robin 방식으로 구현되어 있습니다.

Round Robbin(RR)

Pintos가 기본적으로 제공하는 스케줄러는 Round-Robin(RR)으로 구현되어 있습니다. 자원 사용 제한 시간을 두어 프로세스에 할당된 시간이 지나면 자원을 반납하는
방식의 알고리즘을 활용하여 특정 프로세스의 자원 독점(monopoly)를 방지 합니다.
단점으로는 Context Switch overhead가 큽니다.

profile
Software Engineer

0개의 댓글