WSP12

LJM·2023년 7월 20일
0

컴퓨터지식

목록 보기
13/41

프로세스의 생성과 소멸

프로세스란 실행중에 있는 프로그램이다

프로세스를 구성하는 요소

Data영역. 전역변수 static변수
Stack영역. 지역변수. 함수호출 인자
Heap영역 동적 할당
Code영역 명령어

프로그램이 실행되면 위와 같이 메모리가 구성되고 이것이 프로세스의 실체이다

만약 MP3플레이어, MS-WORD 그리고 FTP클라이언트 세개의 프로그램을 실행한다면 위와 같은 메모리 구조는 몇개가 될까?
하나인가? 아니다 총3개 이다. 프로세스 개수만큼 생성된다

Register Set
mp3player.exe 를 실행중이라면 레지스터에는 mp3player.exe 실행을 위한 데이터들로 채워지게 된다. 레지스터의 상태도 프로세스의 일부로 포함시켜 말할 수 있다

프로세스의 스케줄링과 상태변화
CPU는 하나인데 어떻게 여러개의 프로그램이 동시에 실행 가능한 것인가?

프로세스의 스케줄링
위의 질문에 대한 해결책은 CPU를 여러개의 프로세스가 번갈아 가면서 실행해야 한다

스케줄링 기본 원리
프로세스들에게 CPU를 할당하는 순서 및 방법을 결정짓는 일을 스케줄링이라하면 이때 사용되는 알고리즘을 스케줄링 알고리즘 이라 한다

스케줄링 알고리즘을 적용해서 실제로 프로세스를 관리하는 운영체제 요소를 가리켜 스케줄러라 한다. 스케줄러는 소프트웨어적으로 구현된것으로 운영체제를 구성하는 중요한 요소중에 하나이다

멀티 프로세스는 CPU를 바쁘게 한다

A, B, C 프로세스를 순차적으로
A가 실행되고 종료
B가 실행되고 종료
C가 실행되고 종료
하는 방식보다

A, B, C 실행
스케줄러에 의해서 관리(A는 실행 B는 대기 C는 대기... 상황에 따라 B 실행 A, C 대기)
하는 방식이 효율적이다

왜? 프로그램이 I/O(입출력, 데이터, 네트워크송수신)를 할때 CPU는 아무것도 못하고 대기하게 된다 이때 프로세스를 대기로 바꾸고 다른 프로세스가 CPU를 사용하게 하는게 효율적이다

프로세스의 상태 변화

프로세스의 상태변화를 보여준다

상황 Start
프로세스 생성되었음. 생성과 동시에 Ready 상태로 들어감

상황 Ready =>> Running
스케줄러는 Ready 상태의 프로세스중 하나를 선택해서 CPU에 의해 실행되게함 Running 상태가 됨

상황 Running =>> Ready
우선순위에서 밀린 프로세스는 Running 에서 Ready 상태가된다
예) 프로세스 A Running 중 더 우선순위 높은 프로세스 B가 생성되어 Ready 상태가 되면 스케줄러에 의해 A는 Ready 가 되고 B가 Running이 된다

상황 Running =>> Blocked
일반적으로 프로세스가 IO 관련 일을 하는 경우 발생.
예) 프로세스A가 Running 중에 네트워크의 응답을 기다리는 경우 Blocked 상태가 되고 네트워크 응답을 받으면 Ready 상태가 됨

상황 Blocked =>> Ready
IO가 완료되면 Ready 로 상태가 변한다.
Blocked 는 스케줄러에 의해서 선택받을 수 없는 상태이다
Ready 상태와의 큰 차이점이다

혼란의 최소화
Running =>> Ready : 우선순위에 의한것이다. Ready상태이므로 언제든 스케줄러에 의해 다시 선택받을 수 있다
Running =>> Blocked : 우선순위와 관련없이 IO 작업이 필요하면 발생하는 상태변화. IO완료전까지는 Blocked상태 유지. Blocked 상태에서는 스케줄러의 선택을 받을 수 없다.

profile
게임개발자 백엔드개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

정말 좋은 글 감사합니다!

답글 달기