2. 프로세스란? 현재 실행 중인 프로그램
프로세스 메모리 구조
프로세스 스케줄링
프로세스 제어 블록
프로세스의 상태 (상태 전이)
3. 특징
•시분할 작업의 단위 : 시분할 시스템에서 볼 때, 분할 시간마다 그 대상이 되는 작업 단위
•병행 실행이 가능 :프로세스 간 통신이 필요
•하나의 프로그램이 여러 프로세스 생성 가능
* 프로세스 통신 (ICP) : 프로세스끼리 자원이나 데이터를 서로 주고받는 행위
프로세스는 본래 독립적이나, 상황에 따라 프로세스끼리 협력해야하는 경우가 있는데, 이 경우 프로
세스 간 자원/데이터 공유가 필요
ICP의 종류 : PIPE, Named PIPE, Message Queue, Shared Memory, Memory Map, socket
4. 프로세스의 메모리 구조
Code : 프로그램을 실행 시키면 실행파일 내에 존재하는 명령
어가 메모리 상에 올라가야 프로그램을 동작 시킬 수 있다.
Data : 전역 변수나 static 변수의 할당을 위해 존재하는 공간
Stack : 지역 변수 할당과 함수 호출 시 전달 되는 인자 값들을
저장하기 위한 공간
Heap : C의 malloc, calloc와 C++, Java의 new를 통한 동적
할당을 위해 존재하는 공간
Code
Process
Data
Stack
Heap
5. 프로세스 스케줄링 CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 일
스케줄링은 처리율과 CPU 이용률을 증가 시키고
오버헤드 / 응답시간 / 반환시간 / 대기시간을 최소화 시키기 위한
•장기 스케줄링 : 어떤 프로세스가 시스템 자원을 차지할 수 있도록 할 것인가를
결정하여 큐로 보내는 작업
•중기 스케줄링 : 어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업
•단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당 받는 시기와 특정
프로세스를 지정하는 작업
종류 : 비선점형 스케줄링, 선점형 스케줄링, 정적 스케줄링, 동적 스케줄링
6. 프로세스 제어 블록? 프로세스를 관리하기 위해 필요한 프로세스 요소들의 자료구조
Pointer
Process State
Process Number
Program Counter
Registers
Memory Limits
Open File Lists
Misc. Accounting and
Status Data
Pointer : 프로세스의 상태가 전환될 때,
프로세스의 현재 위치를 유지하기 위해
이용하는 스택 포인터
Process State : 프로세스의 현 상태
Process Number (PID) : 운영체제로
부터 할당 받은 고유 식별자
Registers : 누산기, 베이스, 레지스터와
범용 레지스터 등의 CPU 레지스터
Memory Limits : 메모리 관리 시스템
에 관한 정보가 저장되어 있다
Open Files List : 프로세스를 위해 열린
파일 목록
7. 프로세스 상태 (상태 전이)
•제출 : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
•접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
•준비 : 프로세스가 프로세스를 할당 받기 위해 기다리고 있는 상태
•실행 : 준비 상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
•대기 : 프로세스에 입출력 처리가 필요하면 현재
실행 중인 프로세스가 중단 되고, 입출력 처리가
완료될 때까지 대기하고 있는 상태
•종료 : 프로세스의 실행이 끝나고 프로세스 할당이
해제된 상태
•Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가
8. 프로세스 상태 (상태 전이)
•Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가
프로세스를 할당 받아 실행 상태로 전이되는 과정
•Wake Up : 입출력 작업이 완료 되어 프로세스가 대기 상태에서
준비 상태로 전이 되는 과정
•Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력 장치의 처리 속도를 보완