[운영체제 구조 개념] 프로세스, 쓰레드 차이 및 CPU 스케쥴링
# 프로세스 (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 (교착상태)
- 프로세스가 더이상 진행 안되고, 어떤 특정 사건이 발생되기를 대기하고 있는 정체된 상태
- 발생 조건 : 상호배제, 비선점, 환형대기, 점유 대기
- 예방 조건 : 발생 조건 부정, 은행원 알고리즘
- 탐지 방법 : 교착상태 발견 알고리즘 수행, 자원 할당 그래프 (소거법)
- 회복 방법 : 프로세스 중지 (희생자 선택의 원칙), 자원 선점