본문 바로가기
IT ▶/Security

[운영체제 구조 개념] 프로세스, 쓰레드 차이 및 CPU 스케쥴링

by 오프로 2020. 1. 1.

 

 

# 프로세스 (Process)

프로세서 의해 수행되는 프로그램 단위 (실행 중 또는 실행 가능한 PCB)

레지스터, 스택 , 포인터, 실행중인 프로그램, 데이터 등의 집합체

 

# 스레드 (Thread)

제어 흐름으로 프로세스 실행 부분으로 실행의 기본 단위

 

  프로세스 쓰레드
처리방식 자원 할당 기본 구분 단위 CPU 이용 기본 작업
단위로 구분
상호통신 System Call
전체 자원 Blocking
Library Call
요청 쓰레드 Blocking
부하 Context Switching 부하 발생
프로세스 자원 할당 시 부하
프로세스보다 상대적으로 적음

 

 

1. 프로세스 상태전이

 

  1> Admit : 프로세스 실행을 위해 준비상태 큐(FIFO) 

  2> Dispatch : CPU 스케쥴링에 따라 CPU 점유 및 프로세스 실행

  3> Timer Run Out : Timeout 발생 시 다시 준비상태 큐

  4> Blocked : CPU 할당 프로세스가 다른 서비스 작업 요청 시 발생

  5> Wake up : 대기 중 처리가 끝났을 때 발생

  6> Release : 프로세스 종료

 

 

2. 문맥 교환 (Context Switching)

 

- CPU가 이전의 프로세스 상태를 PCB 보관하고, 또 다른 프로세스 정보를 PCB에서 읽어 레지스터에 적재 과정

- 프로세스 상태가 변경 될 때 발생!!

 

 

PCB : 프로세스 컨트롤 블록으로 OS가 프로세스 제어하기 위해 정보를 저장해놓은 곳, 프로세스 상태 정보 저장

 

- 프로세스 상태 관리와 문맥 교환을 위해 필요

- 프로세스 생성 시 만들어지고, 주기억 장치에서 유지

- PID, 상태, 포인터, 레지스터 저장 정보, 우선순위, Account, Memory Point ers, 입출력 상태 정보, 할당 자원 정보

 

 

 

 

 

3. CPU 스케쥴러 구분

 

- 장기 스케줄러 : 상위 스케줄링, 작업 스케줄링으로 시스템 자원을 차지할 작업 결정 (큐 적재)

- 중기 스케줄러 : CPU에 할당받을 프로세스 결정

- 단기 스케줄러 : 하위 스케줄링, CPU 스케줄링, 프로세스 스케줄링으로 프로세스에 CPU 할당 (Dispatcher)

- 선점 방식(라운드 로빈, SRT), 비선점 방식(FCFS, SJF, HRN, MFQ) 구분

- 멀티 레벨 피드백 큐 (Hybrid) = 라운드 로빈 + FCFS

- 라운드 로빈 스케쥴링 : CPU 시간이 다될때까지 처리 안되면 다음 프로세스로 넘기고 해당 프로세스는 준비 상태 큐로 다시 보낸다.

 

* CPU 스케쥴링 : 컴퓨터 자원을 효율적으로 사용하기 위한 작업

 

- 프로세스 대상으로 CPU 자원 할당

- 목적 : CPU 효율적 활용, 자원 사용 효율, 프로세스 응답 시간 단축, 멀티태스킹 효율

- Ready State -> Dispatch -> Running State (CPU) -> Blocked -> Block State -> Wake up -> Ready State

- Dispatch : 대기 큐에서 CPU 선점하여 작업 실행

- Wake up : 대기 큐에서 준비 단계로 깨움

 

* 스케쥴러 알고리즘

 

1> 선점형 (Preemptive) : 프로세스가 CPU 점유를 선점하여 우선순위 변경 가능.

 

- Round Robin (순환 할당 스케쥴링) : 같은 크기의 Time Slice 단위로 CPU 할당 

- Multi Level Queue : 여러 개의 Queue 사용하여 독자적으로 처리 / Round Robin, 우선순위 둘 다 사용

- Multi Level Feedback Queue : 우선순위에 의해 Queue 안에서 등급별로 처리 (결과에 따라 피드백을 주어 처리)

- SRT (Shortest Remaining Time)

: 남은 작업이 짧은 프로세스에서 CPU 점유 (실행 중에도 판단하여 변경) / 실시간 시스템 유용

 

2> 비선점형 (Non-preemtive) : 프로세스가 CPU 해제할 때까지 다른 프로세스 대기 (우선순위 변경 불가)

 

- 우선순위

- FCFS : 대기 큐 도착하면 먼저 CPU 할당 

- SJF (Shortest Job First) : 대기 작업 중 가장 짧은 작업부터 먼저 수행 (작업 수행 버스트 시간 체크)

- HRN, MFQ

 

 

4. 상호배제 : 다수 프로세스가 동일 자원 접근 시 무결성 보장 (동시에 접근 못하게 하기)

 

5. 임계영역 (Critical Section)

 

- 프로그램에서 공유 자원의 독점 보장하는 코드 영역

- 세마포어 동기화 메커니즘

 

 

6. Dead Lock (교착상태)

 

- 프로세스가 더이상 진행 안되고, 어떤 특정 사건이 발생되기를 대기하고 있는 정체된 상태

- 발생 조건 : 상호배제, 비선점, 환형대기, 점유 대기

- 예방 조건 : 발생 조건 부정, 은행원 알고리즘

- 탐지 방법 : 교착상태 발견 알고리즘 수행, 자원 할당 그래프 (소거법)

- 회복 방법 : 프로세스 중지 (희생자 선택의 원칙), 자원 선점 

 

728x90
300x250