School/컴퓨터시스템

프로세스

응엉잉 2022. 4. 18. 13:30

프로그램과 프로세스

프로그램 : 저장장치에 저장되어있는 정적인 상태

프로세스 : 실행을 위해 메모리에 올라온 동적인 상태

 

프로그램에서 프로세스로의 전환

프로세스 제어 블록(Process Control Block, PCB)

운영체제가 해당 프로세스를 위해 관리하는 자료 구조

자료구조에 프로세스 실행하는데 필요한 중요한 정보를 보관

 - 프로세스 구분자 : 각 프로세스를 구분하는 구분자

 - 메모리 관련 정보 : 프로세스의 메모리 위치 정보

 - 각종 중간값 : 프로세스가 사용했던 중간값 ... 아무튼 프로세스 관련 정보만 들어가야함

모든 프로세스는 고유의 프로세스 제어 블록을 가진다

프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기한다

* 포인터가 필요한 이유 : 대기상태에서 같은 입출력을 요구한 프로세스끼리 연결할 때 사용

프로그램과 프로세스의 관계

프로세스 = 프로그램 + 프로세스 제어 블록

프로그램 = 프로세스 - 프로세스 제어 블록

 

프로그램 -> 프로세스 : 운영체제로부터 프로세스 제어 블록을 얻는다는 뜻

프로세스 -> 프로그램 : 해당 프로세스 제어 블록의 폐기

 

프로세스의 5가지 상태

1) 생성 상태 : 

프로그램이 메모리에 올라오고, 운영체제로부터 PCB를 할당받은 상태

생성된 프로세스는 바로 실행되는 것이 아니라 준비 상태에서 자기 순서를 기다림 + PCB도 준비 상태로 옮겨짐

 

2) 준비 상태 : 

실행 대기중인 모든 프로세스가 자기 순서를 기다리는 상태

PCB는 준비 큐에서 기다리며, CPU 스케줄러에 의해 관리

실행될 프로세스를 CPU 스케줄러가 선택

 - 준비 상태에서 큐를 몇개 운영할지, 큐에 있는 어떤 프로세스의 PCB를 실행 상태로 보낼지 결정

 - CPU 스케줄러가 PCB를 선택하는 작업은 dispatch 명령으로 처리

 - dispatch 실행시 해당 프로세스가 준비상태에서 실행상태로 바뀌어 작업이 이루어짐

 

3) 실행 상태 :

선택된 프로세스가 타임 슬라이스를 얻어 CPU를 할당받아 실행되는 상태

주어진 시간(타임 슬라이스)을 다 사용하면 timeout 실행, 실행상태에서 준비상태로 옮김

프로세스 사이 문맥 교환이 일어남

실행 상태동안 작업이 완료되면 exit 실행되어 프로세스 정상 종료

실행 상태에 있는 프로세스가 입출력을 요청시 CPU 는 입출력 관리자에게 입출력을 요청하고 block 을 실행

block은 입출력이 완료될때까지 작업을 진행할 수 없음

-> 해당 프로세스를 대기 상태로 옮기고 CPU 스케줄러가 새로운 프로세스를 실행 상태로 가져옴

 

4) 대기 상태 : 

실행 상태에 있는 프로세스가 입출력을 요청하면, 입출력이 완료될 때까지 기다리는 상태

입출력이 완료되면 준비상태로 감

 - 대기 상태의 프로세스는 입출력장치별로 마련된 큐에서 기다리다가 완료되면 인터럽트 발생

 - 대기 상태에 있는 여러 프로 세스 중 해당 인터럽트로 깨어날 프로세스를 찾는다 (wakeup)

 - wakeup 으로 해당 프로세스의 프로세스 제어 블록이 준비 상태로 이동

 

5) 완료 상태 :

프로세스 종료 상태

코드와 사용했던 데이터를 메모리에서 삭제, 프로세스 제어 블록을 폐기

정상적 종료는 간단히 exit() 으로 처리

* 코어 덤프 : 오류나 다른 프로세스에 의해 비정상적으로 종료되는 강제 종료(abort) 만나면 디버깅 위해 종료 직전의 메모리 상태를 저장장치로 옮기는 작업

 

문맥 교환

CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업

실행 상태에서 나가는 PCB에는 지금까지의 작업 내용을 저장

실행 상태로 들어오는 PCB 내용으로 CPU 다시 세팅

 

프로세스의 생성과 복사

fork() :

실행중인 프로세스에서 새로운 프로세스를 복사하는 함수

실행중인 프로세스와 똑같은 프로세스가 하나 더 만들어짐

 

exec() :

기존의 프로세스를 새로운 프로세슬로 전환(재사용) 하는 함수

프로세스 구조는 그대로 둔 채 내용만 바꾸는 시스템 호출

'School > 컴퓨터시스템' 카테고리의 다른 글

프로세스 동기화  (0) 2022.04.20
CPU 스케줄링  (0) 2022.04.20
스택, 큐, 덱  (0) 2022.04.19
스레드  (0) 2022.04.19
운영체제  (0) 2022.04.18