티스토리 뷰
프로세스와 스레드
(1) 프로세스
- 프로세서에 의해 처리되는 사용자 프로그램이나 시스템 프로그램을 의미
- 실행 중인 프로그램을 의미하며 작업 혹은 태스크라고도 함
- 개별 처리 독립성이 높음
- 하지만 생성 시 CPU 부하가 높음
- 프로세스가 메모리 공간을 공유 할 수 없는 것은 아님
PCB(Process Control Block)
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
- 프로세스가 생성될 때마다 고유의 PCB를 생성하고 프로세스 완료 시 제거됨
- PCB에 저장되는 정보
-> 프로세스 현재 상태, 포인터, 프로세스 고유 식별자, 스케줄링 및 프로세스의 우선순위, CPU 레지스터 정보, 주기억장치 관리 정보, 입출력 상태 정보, 계정 정보
프로세스 상태 전이 관련 용어
- Dispatch : 준비 상태에 대기하고 있는 프로세스 중 하나가 프로세스를 할당받아 실행 상태로 전이되는 과정
- Wake up : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
- Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보완하기 위해 입출력할 데이터를 직접 장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
- 교통량 제어기 : 프로세스의 상태에 대한 조사와 통보를 담당
(2) 스레드(Thread)
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로세스 단위
- 프로세스의 일부 특성을 가지고 있어 경량 프로세스라고도 함
- 동일 프로세스 환경에서 독립적인 다중 수행 가능
- 생성 시 부하가 낮음
- 하지만 메모리 공간을 공유하기 때문에 의도 하지 않는 데이터 읽기 쓰기가 발생할 수 있음
스케쥴링
(1) 스케줄링의 개요
- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 멀티 프로세스 운영체제에서 하나의 CPU가 복수의 프로세스를 실행하기 위해서는 스케쥴링이 필요
- 프로세스가 생성되어 완료될 때까지 여러 종류의 스케줄링 과정을 거침
- 그 종류에는 장기, 중기, 단기 스케줄링이 있음
- 문맥 교환
-> 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것
-> 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보 저장
-> 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행하도록 하는 작업
(2) 스케줄링의 목적
- CPU나 자원을 효율적으로 사용하기 위한 정책
- 공정성 : 모든 프로세스에게 공정하게 할당
- 처리율(처리량) 증가 : 단위 시간당 프로세스를 처리하는 비율 혹은 양을 증가
- CPU 이용률 증가 : CPU의 낭비 시간을 줄이고 CPU가 순수 프로세스를 실행하는 데 사용되는 시간 비율 증가
- 우선순위 제도 : 우선순위가 높은 프로세스를 먼저 실행
- 오버헤드 최소화 : 어떤 처리를 하기 위해 들어가는 간접적인 처리시간이나 메모리를 최소화
- 응답 시간 최소화 : 작업을 지시하고 반응하기 시작하는 시간을 최소화
- 반환 시간 최소화 : 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 시간 최소화
- 대기 시간 최소화 : 프로세스가 준비상태 큐에서 대기하는 시간 최소화
- 균형 있는 자원의 사용
- 무한 연기 회피
(3) 프로세스 스케줄링의 기법
- 멀티 프로세스 운영체제에서 하나의 CPU가 복수의 프로세스 실행위해서는 스케쥴링 필요
- 프로세스 스케쥴링 방식에 따라 OS 두가지 방식으로 나눌 수 잇음
- Preemptive scheduling vs Non-Preemptive Scheduling
선점 알고리즘 (Preemptive Scheduling)
-> 강제 종료 가능
-> 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있음
-> 우선순위가 높은 프로세스를 빠르게 처리할 수 있음
-> 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용
-> 많은 오버헤드를 초래함
-> 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록이 필요
-> ✓ Round Robin, ✓ 선점 우선순위, SRT, 다단계 큐, 다단계 피드백 큐 등의 알고리즘
-> 최근의 모든 OS는 선점형 OS를 사용하고 있음
✓ 선점 우선순위 알고리즘
- 각각의 우선순위 부여해서 우선순위가 높은 프로세스를 먼저 실행시키는 알고리즘
✓ Round Robin 스케쥴링 알고리즘
- 우선 순위 스케쥴링 방식의 예외를 처리하기 위해 고안된 알고리즘
- 이때 예외란? 우선순위가 같을 때
비선점 스케줄링 (NON-Preemptive OS)
-> 강제 종료 불가능 = 비선점 스케줄링은 앞에 처리중이던 프로세스의 처리가 완료 되어야지만 다음 프로세스를 실행할 수 있음
-> 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없음
-> 프로세스가 CPU를 할당받으면 완료될 때 까지 사용
-> 프로세스 응답 시간 예측이 용이
-> 일괄 처리 방식에 적합
-> 중요한(짧은) 작업이 중요하지 않은(긴) 작업을 기다리는 경우가 발생할 수 있음
-> FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘
'컴퓨터 > Computer' 카테고리의 다른 글
운영체제(OS; Operating System) (0) | 2020.08.19 |
---|---|
캐시(cache) (0) | 2020.02.29 |
서버안에는 뭐가 있을까? (0) | 2020.02.29 |
IT 아키텍쳐 (0) | 2020.02.29 |
컴퓨터 컴파일러란? (0) | 2019.10.16 |