[Chapter 05] 프로세스의 생성과 소멸

·2022년 10월 21일

※ 아래는 윤성우 뇌를 자극하는 윈도우즈 프로그래밍 한빛미디어(주) 2022년
Chapter05(p.129 ~ 160)를 읽고 정리한 내용입니다.

01 프로세스


실행 중에 있는 프로그램

프로세스를 구성하는 요소
(1) Execution of 'C' Program

영역설명
Data전역변수나 static 변수의 할당을 위해 존재
Stack지역변수 할당과 함수 호출 시 전달되는 인자값들의 저장을 위해 존재
Heap동적 할당을 위해 존재하는 영역
Code실행파일을 구성하는 명령어들이 올라가는 메모리 영역

(2) Register Set
파일 실행 시 CPU를 구성하는 레지스터들은 실행을 위해 필요한 데이터들로 채워진다.
-> 레지스터들의 상태도 프로세스의 일부로 포함 시킬 수 있다.

02 프로세스의 스케줄링(Scheduling)


CPU 할당 순서 및 방법을 결정짓는 일
이 때 사용되는 알고리즘을 '스케줄링 알고리즘'이라 한다.

스케줄링 알고리즘을 적용해서 실제로 프로세스를 관리하는 운영체제 요소(모듈)를 스케줄러라 한다.

03 프로세스의 상태 변화


(1) 프로세스는 생성(S)과 동시에 Ready 상태가 된다.
(2) 스케줄러에 의해 Ready에서 Running 상태가 된다.
(3) 우선순위에서 밀려난 경우 Running 상태에서 Ready 상태가 된다.
(4) 실행 중에 있는 프로세스가 실행을 멈추는 Blocked 상태가 된다. (보통 데이터 입/출력 시 이 상태가 됨)
(5) Blocked 상태에서 Ready 상태가 된다.
-> Blocked 상태는 스케줄러에 의해서 선택될 수 없는 상태를 의미한다. 입/출력 등의 Blocked 상태에서 실행되는 작업이 끝나면 Ready가 된다.
(6) 프로세스를 종료시키는 경우 Blocked 상태를 거쳐서 E(Exit) 상태가 된다.

04 컨텍스트 스위칭(Context Switching)


프로세스가 Ready -> Running 상태가 될 때 새롭게 실행되는 프로세스가 아니라면
이전에 실행될 때 레지스터들이 지니고 있던 데이터들을 메모리에 저장해 놔야 한다.

Running -> Ready 상태도 마찬가지로 관련 레지스터 정보를 CPU의 레지스터에 복원시켜야 한다.

이러한 작업을 컨텍스트 스위칭이라고 한다.
-> 컨텍스트 스위칭은 시스템에 많은 부담을 준다. (멀티 프로세스 운영체제의 단점)

0개의 댓글