응용SW기초기술활용
프로세스의 개념
- 처리기, CPU에 의해 처리되는 사용자 프로그램
- 정의
- PCB(Process Controll Block)을 가지는 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
- 프로시저가 활동 중인 것
- 서로 규칙적이거나 연속적이지 않고 독립적으로 실행되므로 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
PCB; Process Control Block, 프로세스 제어 블록
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
- 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거됨
- PCB에 저장되는 정보의 종류
- 프로세스의 현재 상태
- 포인터
- 부모 프로세스의 주소 기억
- 자식 프로세스의 주소 기억
- 현재 프로세스가 위치한 주소 기억
- 프로세스에 할당된 각 자원에 대한 주소 기억
- 프로세스 고유 식별자
- 스케줄링 및 프로세스의 우선순위
- CPU 레지스터 정보
- 주기억장치 관리 정보
- 입출력 상대 정보
- 계정 정보
Thread 스레드
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당 받아 실행하는 프로그램 단위
- 하나의 프로세스에 하나의 스레드가 존재하는 경우는 단일 스레드, 하나 이상의 스레드가 존재하는 경우는 다중스레드
- 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고 함
- 스레드 기반 시스템에서는 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할 담당
- 장점
- 하드웨어, 운영체제의 성능과 응용 프로그램 처리율 향상
- 응용 프로그램의 응답 시간 단축
- 실행 환경을 공유 시켜 기억장소의 낭비를 줄임
- 프로세스들 간의 통신 향상
- 프로세스 내부의 작업 단위
Scheduling 스케줄링의 개념
- CPU나 자원을 효율적으로 사용하기 위한 정책
- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 프로세스가 생성되어 완료될 때 까지 프로세스는 여러 종류의 스케줄링 과정을 거침
스케줄링의 목적
- 모든 프로세스에게 공정하게 할당
- 단위 시간당 프로세스를 처리하는 비율 증가
- CPU가 순수하게 프로세를 실행하는데 사용되는 시간 비율 증가
- 우선 순위가 높은 프로세를 먼저 실행
- 오버헤드를 최소화
- 오버헤드
- 시스템에서 목적으로 하는 효과를 얻기 위해 본질적인 것은 아니지만 요구되는 작동, 또는 그 때문에 필요한 자원
- 오버헤드
- 작업을 지시하고 반응하는 응답시간 최소화
- 프로세스를 제출한 시간부터 실행이 완료될 때까지 걸리는 반환시간을 최소화
- 프로세스가 준비상태 큐에서 대기하는 시간을 최소화
- 메모리, 입력장치 등의 자원을 균형 있게 사용
- 자원을 사용하기 위해 무한정 연기되는 상태를 회피
- 프로세스에게 CPU를 할당하고 문맥 교환을 하는 프로세스 관리기능
Non-Preemptive 비선점 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 프로세스가 CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU를 사용
- 모든 프로세스에 대한 요구를 공정하게 처리
- 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합
- 짧은 작업이 긴 작업을 기다리는 경우 발생할 수 있음
- 종류
- FIFO(FCFS)
- SJF
- HRN
- Priority
Preemptive 선점 스케줄링
- 하나의 프로세스가 CPU를 할당 받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- 우선순위가 높은 프로세를 빠르게 처리
- 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용됨
- 많은 오버헤드를 초래
- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록 필요
- 종류
- RR
- SRT
- Preemptive
- Priority
- MLQ
- MFQ