제 2장 프로세스 관리와 CPU 스케줄링 2.1 프로세스의 개념 2.2 CPU 스케줄링의 목적과 유형 2.1 프로세스의 개념 2.2 CPU 스케줄링의 목적과 유형 2.3 비선점 스케줄링 알고리즘 2.4 선점 스케줄링 알고리즘 2.5 응용 알고리즘 2.6 스케줄링 기법의 비교 2.7 스레드의 개념
2.1 프로세스의 개념 (1) 프로세스의 정의 ■ 다중 프로그래밍 운영체제 몇 개의 프로그램이 주기억장치에 함께 2.1.1 프로세스의 정의와 상태 (1) 프로세스의 정의 ■ 다중 프로그래밍 운영체제 몇 개의 프로그램이 주기억장치에 함께 적재되어 시행. CPU의 유휴시간이 없도록 함 : I/O 작업 시 CPU의 활용률을 증가 시켜서 CPU 의 “처리 능력 (throughput)”을 극대화 시킴. ★ Throughput : 일정시간 내에 처리한 일의 양
각 작업들은 프로세서(CPU)가 처리하는 일의 단위인 ■ 컴퓨터 사용자의 작업(JOB) 제출시 : 각 작업들은 프로세서(CPU)가 처리하는 일의 단위인 프로세스( process)로 나뉘어져 작업이 시행됨. ... JOB1 프로세스 2 프로세스 1 ... JOB2 프로세스 2 프로세스 1
사용자가 제출한 작업(프로그램)에 대한 시행. 프로그램이 요구하는 각종 사항과 오류 조치, ■ CPU의 업무 사용자가 제출한 작업(프로그램)에 대한 시행. 프로그램이 요구하는 각종 사항과 오류 조치, 인터럽트 처리 등의 각종 시스템 활동 처리. ■ CPU의 활동 대상 “프로세스” ■ 다중 프로그래밍 환경 수많은 “프로세스”가 발생, 어떤 프로세스를 언제 - 어떻게 CPU에게 할당하고 회수해 가면서 CPU의 효율을 극대화할 것인가 하는 것이 중요 관심사임.
프로세스 제어 블록(PCB)을 가진 프로그램 ■ 프로세스란 ? 실행중인 프로그램, 살아 있는 프로그램 언제든지 실행 가능한 프로그램 프로세스 제어 블록(PCB)을 가진 프로그램 - Process Control Block CPU가 할당되는 단위 PCB를 갖고 있으면서, 현재 실행 중이거나 곧 실행 가능하며, CPU를 할당 받을 수 있는 작업 단위.
■ CPU 버스트와 I/O 버스트 프로세스 제어 블록. 특정 프로세스에 대한 각종 모든 정보를 ■ PCB (Process Control Block) 프로세스 제어 블록. 특정 프로세스에 대한 각종 모든 정보를 갖고 있음. (2) 프로세스의 상태 ■ CPU 버스트와 I/O 버스트 모든 프로세스는 “CPU 버스트(burst)” 와 “I/O 버스트” 가 교대로 나타남.
“CPU 버스트” 를 가지며, “I/O 버스트”는 입출력 요구시 발생함. - 모든 프로세스의 시작과 끝은 “CPU 버스트” 를 가지며, “I/O 버스트”는 입출력 요구시 발생함. 2.1
■ “CPU 중심 작업” 과 “I/O 중심 작업” 이란? “지수형” 또는 “초지수형” 곡선 형태를 가짐.
그림 2.2의 A지점 : I/O 중심 작업 그림 2.2의 B지점 : CPU 중심 작업 2.2
2) 프로세스의 간단한 상태 모형 : 2개 상태 ■ “CPU 바운드”와 “I/O 바운드”의 연속 : “실행이 되는 상태(running state)” “비실행 상태(not running state)” 의 2가지 상태로 구분됨. 2.3
3) 프로세스 상태의 세분화 : 5개 상태 준비 상태(Ready)와 대기 상태(Block)로 구분. ■ 비실행 상태의 세분화 준비 상태(Ready)와 대기 상태(Block)로 구분. 준비(Ready) 상태 - CPU의 할당만을 기다리고 있는 상태 - 다음에 할 일은 오직 CPU 작업임. 대기(Block) 상태 - CPU를 반납하여, I/O 작업을 하는 중이거나 어떤 사건(event)의 종료를 기다리고 있는 상태.
+ “생성(New)”와 “종료(Exit)”상태를 추가함. 생성(New) 상태 ■ 프로세스의 상태 : “준비” + “실행” + “대기” + “생성(New)”와 “종료(Exit)”상태를 추가함. 생성(New) 상태 - 수행을 원하는 새로운 프로세스의 입력이나 OS 자체 또는 현존하는 프로세스에 의해서 생성. - 일정 개수 이하만 생성됨. (시스템 제약 사항 고려 : PCB 개수) 종료(Exit) 상태 - 더 이상 CPU를 할당 받을 필요가 없을 때. - 프로세스 종료 시에는 그 때까지의 각종 상황 정보가 파악될 때까지 일시 보관하여야 함.
■ 5가지의 프로세스 상태 2) 준비(READY) : CPU 사용을 위한 실행 준비 상태 ■ 5가지의 프로세스 상태 1) 생성( NEW) : 프로세스가 새롭게 생성된 상태 2) 준비(READY) : CPU 사용을 위한 실행 준비 상태 3) 실행(RUN) : CPU를 차지하여 현재 수행되고 있는 상태로, 오직 1개의 프로세스만 실행 상태에 있음. 4) 대기(BLOCK) : 실행 상태의 프로세스가 I/O 요구 등의 사건 발생으로 CPU 를 양도한 후, 요구한 입출력이 종료될 때까지 대기하고 있는 상태. 5) 종료(EXIT) : 모든 수행 가능 프로세스 상태에서 종료된 상태 (더 이상의 CPU 사용 요구가 없음)
(3) 프로세스의 상태 전이 2.4
[ 상태 전이가 되는 상황 ] 1) 생성 준비 : Admit - 준비 큐 (Ready Queue) 의 크기가 제한되어 있다. [ 상태 전이가 되는 상황 ] 1) 생성 준비 : Admit - 준비 큐 (Ready Queue) 의 크기가 제한되어 있다. - 준비 큐가 비어 있을 때 생성 상태에서 준비 상태로 전이됨. - 작업 스케줄러(job scheduler)가 담당. 2) 준비 실행 : Dispatch - 준비 큐에 있는 프로세스 중에서 하나의 프로세스를 선택하여 CPU를 할당 받게 함. - 프로세스 스케줄러(process scheduler)가 담당
3) 실행 준비 : Timer Run Out ① CPU를 할당 받은 프로세스가 “ CPU의 제한된 사용시간 ” 을 모두 쓴 경우에 전이됨. [ CPU의 제한 사용시간 = 시간 조각(time slice) ] ② CPU 스케줄링 정책에 의하여 “ 우선순위 ” 가 높은 프로세스에게 CPU를 양보할 때 전이됨. ③ 운영 체제 자체의 CPU 서비스 요청 시 전이됨.
4) 실행 대기 : Block - CPU를 할당 받은 프로세스가 I/O 요구, 5) 대기 준비 : Wake-up 원할 때 상태가 전이됨. 5) 대기 준비 : Wake-up - 대기 중이던 어떤 사건(조건)의 처리가 끝났을 때 준비 상태로 전이됨 : 다음에는 오직 CPU 작업 6) 실행 종료 : Release - 프로세스의 정상 / 비정상 종료시 전이됨.
3-1
2.1.2 연기/재동작이 있는 프로세스의 상태 전이 ■ 프로세스에 대한 작업 : 선택될 때, PCB가 만들어져서 프로세스를 2.1.2 연기/재동작이 있는 프로세스의 상태 전이 ■ 프로세스에 대한 작업 : 생성, 파괴 작업 + 연기 작업, 재동작 작업 ▶ 생성 작업(creation ) 운영 체제에 의해 어떤 프로그램 (JOB) 이 선택될 때, PCB가 만들어져서 프로세스를 생성시키는 작업. ▶ 파괴 작업(destroy) 프로세스가 더 이상 필요 없게 되었을 때, PCB를 회수하여 프로세스를 소멸시키는 작업.
2.1.2 -- 계속 - 프로세스의 현재 상태를 더 이상 변화 시키지 못하도록 잠시 중단 시키는 작업. 2.1.2 -- 계속 - ▶ 연기 (suspend) 작업 프로세스의 현재 상태를 더 이상 변화 시키지 못하도록 잠시 중단 시키는 작업. ▶ 재동작 (resume) 작업 연기된 프로세스가 연기된 원인의 제거로 인하여 다시 동작 될 수 있도록 하는 작업.
(1) 프로세스의 연기 원인 ▶ 운영 체제 자신이 전체적인 효율을 높이기 위하여, 충분한 주기억 공간을 확보할 필요가 있을 때, 주기억 공간에 들어 있는 일부의 프로세스들을 외부의 보조기억 장치로 교체(swap out) 시킴. ▶ 처리되는 프로세스가 어떤 문제에 직면한 것을 컴퓨터 조작자나 운영 체제가 발견하여, 이를 해결할 수 있을 때까지 프로세스를 연기. ▶ 통신 선로의 고장 등으로 더 이상, 작업이 진행될 필요가 없을 때 연기.
▶ 대화식의 처리(interactive processing)를 하는 프로세스의 경우, 정상 수행을 위한 프로그램의 수정이나 데이터의 수정 작업 이 끝날 때까지 프로세스를 연기시킴. ▶ 주기적으로 수행되어야 하는 경우, 해당 주기 가 될 때까지 연기. ▶ 부 프로세스가 자식 프로세스를 연기.
(2) 1개의 연기 상태가 추가된 상태 전이 ▶ '연기된 대기 상태'에 있는 프로세스는 (2) 1개의 연기 상태가 추가된 상태 전이 ▶ 연기 상황에 의해, 대기(BLOCK) 상태에 있는 프로세스를, 더 이상 상태 전이가 일어나지 않도록 연기된 대기 상태(suspended block)로 넣어 둠. ▶ '연기된 대기 상태'에 있는 프로세스는 '임의의 재동작(resume) 명령'을 받을 때에만, 원래의 상태인 “대기 상태(BLOCK)”로 복귀.
1개의 연기상태가 추가된 프로세스 상태 전이 (총 6개의 상태) 1개의 연기상태가 추가된 프로세스 상태 전이 (총 6개의 상태) 제출 CPU 할당 해제 NEW (생성) READY (준비) RUN (실행) EXIT (종료) CPU 시간 초과 대기상황 종료시 대기상황 발생시 BLOCK (대기) 재동작 명령시 (RESUME) 연기 명령시 (SUSPEND) 추가된 부분 SUSPENDED BLOCK 연기된 대기상태
(3) 2개의 연기 상태가 추가된 상태 전이 ▶ 대기(BLOCK), 준비(READY), 실행(RUN) 상태에 있는 프로세스는 주기억 장소(main memory)에 적재되어 있으나, “연기된 대기 상태”와 “연기된 준비 상태”에 있는 프로세스는 보조기억 장치에 적재됨 : SWAP OUT ▶ “연기된 대기 상태”와 연기된 준비 상태”에 있는 프로세스가 재동작(RESUME) 명령을 받았을 때에는 다시 주기억 장소로 적재 되는 시간이 필요함 : SWAP IN
(3) 2개의 연기 상태가 추가된 상태 전이(계속) (3) 2개의 연기 상태가 추가된 상태 전이(계속) ▶ 대기(block) 상태 이외에 준비 (ready) 와 실행 (run) 상태에서도 연기 작업이 일어 날 수 있도록 함. ▶ 준비 상태와 실행 상태에서의 연기 명령 시에는 “연기된 준비 상태 (suspended READY)” 로 전이됨.
‘2개의 연기 상태’ 가 추가된 프로세스 상태 전이 (총 7개의 상태) ‘2개의 연기 상태’ 가 추가된 프로세스 상태 전이 (총 7개의 상태) NEW (생성) READY (준비) BLOCK (대기) EXIT (종료) RUN (할당) SUSPENDED 제출 CPU 할당 해제 대기상황 발생시 CPU 시간 초과 연기명령 (SUSPEND) 연기된 대기상태 재동작 명령 (RESUME) 종료시 연기명령(SUSPEND) 추가된 부분 연기된 준비 상태
2-1
2.1.3 프로세스의 표현과 제어 ■ 시스템 내의 모든 프로세스는 OS가 관리함 [ 관리 내용 ] 프로세스의 위치, 프로세스의 [ 관리 내용 ] 프로세스의 위치, 프로세스의 각종 상태 정보 등. - 프로세스는 OS의 전체적인 제어 구조 내에서 관리하여야 할, 하나의 “자원(resource)” 으로 간주함. - 프로세스에 관한 각종 정보는 “PCB” 에 있음.
2-7
PCB를 위한 공간은 해당 시스템이 최대 ■ 모든 프로세스는 PCB를 갖고 있다. 수용할 수 있는 프로세스의 수에 따라서 동적으로 주기억 공간 내에 할당하게 됨.
2-8
PCB ( Process Control Block)의 정보. 1) 프로세스 식별 정보 1) 프로세스 식별 정보 이 프로세스의 식별자 (식별 번호: identifier) 이 프로세스를 생성시킨 사용자 식별번호. 이 프로세스의 부/자 프로세스의 식별번호. 2) 프로세스 제어 정보 프로세스 상태 정보 및 스케줄링 관련 정보 - 프로세스 상태? : 7가지 중 하나의 상태 - 우선순위의 등급. - 스케줄링 관련 정보 및 특정 사건 정보.
자료 구조 정보 통신 정보 - 다른 프로세스와의 통신을 위한 정보 권한 정보 - 접근 권한과 명령어 수행 권한 정보 - 프로세스의 연결 구조 - 부 / 자 프로세스의 구조 - 다른 프로세스와의 연결 포인터 통신 정보 - 다른 프로세스와의 통신을 위한 정보 권한 정보 - 접근 권한과 명령어 수행 권한 정보 - DB, 유틸리티의 사용 권한 정보
주기억 장치 관리 정보 - 보호 관련 정보 - 페이지, 세그먼트 테이블에 관한 정보 자원 소유 및 사용 정보 - 보호 관련 정보 - 페이지, 세그먼트 테이블에 관한 정보 자원 소유 및 사용 정보 - 소유하고 있는 자원에 관한 정보 - 제어중인 자원에 관한 정보 - 각종 자원의 사용 내역에 관한 정보 그림 2.9 참조
2) 프로세스 제어 정보 3) 프로세서(CPU)의 상태 정보 사용 가능한 레지스터에 관한 정보 1) 프로세스 식별정보 2) 프로세스 제어 정보 3) 프로세서(CPU)의 상태 정보 사용 가능한 레지스터에 관한 정보 제어 및 상태 레지스터에 관한 정보 - 프로그램 카운터 - 조건 코드, PSW 등 스택 포인터 등