///////
Search
4️⃣

심화문제 1 ~ 3

1. 다섯 가지 프로세스 상태도를 그리시오.

상태
설명
작업
생성
프로그램을 메모리에 가져와 실행 준비가 완료된 상태
메모리 할당, 프로세스 제어 블록 생성
준비
실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태 실행될 프로세스를 CPU 스케줄러가 선택한다.
dispatch ( 준비 실행 )
실행
선택된 프로세스가 타임 슬라이스를 얻어 CPU를 사용하는 상태 프로세스 사이의 문맥 교환이 일어난다.
timeout ( 실행 준비 ) exit ( 실행 완료 ) block ( 실행 대기 )
대기
입출력이 완료될 때 까지 기다리는 상태. 완료되면 준비 상태로
wakeup ( 대기 준비 )
완료
프로세스가 종료된 상태.
메모리 삭제, 프로세스 제어 블록 삭제

2. 프로세스의 상태 중 휴식 상태보류 상태에 대해 설명하시오.

앞에서 살펴 본 프로세스 상태들은 활성상태 이며 휴식/보류 상태는 활성상태 이외의 상태를 말한다.
휴식상태
유닉스에서 ctrl +z
프로세스가 작업을 일시적으로 쉬고 있는 상태
종료와는 다르다. 정지의 상태이다.
사용하던 데이터가 메모리에 그대로 있고 프로세스 제어 블록도 유지되기 때문에 멈춘 지점에서부터 재시작이 가능하다.
ctrl+c 는 프로세스 종료이며 메모리에서 내려가게 되어 메모리/제어블록이 다 사라져서 처음부터 다시 시작해야한다.
보류상태
프로세스가 메모리에서 잠깐 쫓겨난 상태이다.
보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑 영역에 보관된다.
보류와 휴식의 구분 : 보류상태는 스왑 영역에 있는 상태 / 휴식상태는 메모리에 있으나 멈춘 상태
다음과 같은 경우에 보류 상태가 된다

3. 프로세스 제어 블록의 구성에 대해 설명하시오.

프로세스 제어 블록(Process Control Block)
프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료구조
프로세스 생성 시 만들어지고 완료되면 폐기된다.
구성요소
구성요소
설명
포인터
준비/대기 상태는 큐로 운영된다. 각 프로세스의 제어 블록을 연결하여 큐를 구현할 때 포인터 사용
프로세스 상태
프로세스가 현재 어떤 상태에 있는지 나타냄
프로세스 구분자
운영체제 내의 있는 여러 프로세스를 구별하기 위한 구분자 저장
프로그램 카운터
다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값 저장
프로세스 우선순위
대기 큐는 하나가 아닌 여러개로 우선순위 별로 따로 운영된다. 높은 우선순위의 프로세스가 먼저, 자주 실행되어야 하므로 우선 순위를 저장해놓는다.
각종 레지스터 정보
다음에 이어서 실행을 하기 위해 자신이 사용하던 레지스터의 중간값을 보관한다.
메모리 관리 정보
프로세스가 메모리의 어디에 있는지 나타내는 메모리 위치 정보
할당된 자원정보
입출력 자원이나 오픈 파일 등에 대한 정보
계정정보
계정 번호, CPU 할당 시간, CPU 사용 시간 등의 정보
PPID 와 CPID
부모 프로세스 구분자 PPID , 자식 프로세스 구분자 CPID
포인터의 역할
입출력 장치의 종류는 다양하므로 관리 하기 쉽게 장치의 종류별로 프로세스를 구분하여 모아 놓는다.
포인터에는 어떤 장치의 대기큐에 넣을 건지에 대한 값이 저장되어 있다.
추가) 포인터와 프로세스 우선순위 정보의 차이점