윈도우즈 시스템 프로그래밍

윈도우즈 시스템 프로그래밍 5장 - 프로세스와 스케줄러의 이해

111-000-111 2021. 7. 22. 15:11

 

 

윈도우즈 시스템 프로그래밍이라는 책과 해당 책의 저자이신 윤성우님의 강의를 통해 공부한 내용을 정리하는 글입니다.

 

 


 

 

 

프로세스의 이해

 

⦁ 프로세스란?

    ⦁ 메인 메모리로 이동하여 실행중인 프로그램

    ⦁ 예를들어, 인터넷 익스플로러의 실행파일인 iexplorer.exe는 프로그램이고, 이 프로그램을 실행시켰을때 보게 되는 익스플로러 창은 프로세스이다. 만약 익스플로러를 두 번 실행시킨다면 두 개의 프로세스를 생성시킨 것이다.

 

 

 

 

프로세스의 구체적인 이해

 

⦁ 프로세스의 범위

    ⦁ 메모리 구조 + 레지스터 Set

    ⦁ 프로세스 별로 독립적인 대상은 프로세스의 범주에 포함시킬 수 있다. → 프로세스 별로 독립적으로 할당 받는 리소스이다.

 

    ⦁ 메모리 구조

   

프로그램 실행 시 메모리 구조

 

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

⦁ 위 그림과 같은 메모리 구조가 구성되는 곳은 메인 메모리(RAM)이다. RAM은 크기가 제한되어있지만 우리는 RAM의 크기를 넘어선 프로세스를 생성해야 할 때가 있다. 이는 메모리 관리 부분에서 답을 찾을 수 있다.

 

 

 

    ⦁ Register Set

        CPU 내에 존재하는 레지스터들은 현재 실행 중인 프로그램을 위한 데이터들로 채워진다.

        따라서 레지스터들의 상태까지도 프로세스의 일부로 포함시켜 말할 수 있다.

 

 

 

 

프로세스와 스케줄링

 

 

⦁ 프로세스 스케줄러 기능

    ⦁ 둘 이상의 프로세스가 적절히 실행되도록 컨트롤

 

⦁ 스케줄링 방법

    ⦁ 스케줄링 알고리즘에 따라 다양함.

 

 

 

 

프로세스의 상태 변화

 

 

프로세스의 상태 변화

 

 

⦁ 상황 1 : S(Start)에서 Ready 상태로의 전이를 보여준다

 

⦁ S는 프로세스가 생성되었음을 의미한다.
⦁ 프로세스는 생성과 동시에 Ready 상태로 들어간다.
⦁ Ready 상태의 프로세스는 CPU에 의해 실행되기를 희망하는 상태이다.
⦁ 멀티 프로세스 운영체제이므로 먼저 실행중인 프로세스가 있을 것이므로 Ready 상태가 존재한다.

 

 

⦁ 상황 2 : Ready 상태에서 Running 상태로의 전이를 보여준다.

 

⦁ 스케줄러는 Ready 상태에 있는 프로세스중 하나를 선택해서 CPU에 의해 실행될 수 있도록 한다.
⦁ 스케줄러에 의해 선택된 프로세스는 Running 상태가 되어 실행된다.

 

 

⦁ 상황 3 : Running 상태에서 Ready 상태로의 전이를 보여준다.

 

⦁ 프로세스들은 생성 시 중요도에 따라서 우선순위(Priority)가 부여된다.
⦁ 예를들어, 프로세스 A는 B보다 우선순위가 높을 경우라고 가정하자. 그리고 프로세스 B가 현재 실행중이다.
또한, A프로세스가 생성되었으므로 Ready 상태이다. 일반적으로는 이런 경우에 스케줄러는 B의 실행을 멈추고 A를 실행시킨다. 이떄 프로세스 B는 Ready 상태가 된다.

 

 

⦁ 상황 4 : Running 상태에서 Blocked 상태로의 전이를 보여준다.

 

⦁ 실행 중에 있는 프로세스가 실행을 멈추는 상태로 들어가는 것이다.
⦁ 일반적으로 데이터 입⦁출력에 관한 일을 하는 경우에 발생한다.
⦁ 이 시간에는 CPU에 의해서 프로세스가 더 이상 실행될 수 없다.
⦁ 따라서 Ready 상태에 있는 프로세스 중 하나를 대신 실행(Running)시키는 것이 효율적이다.

 

 

⦁ 상황 5 : Blocked 상태에서 Ready 상태로의 전이를 보여준다.

 

⦁ Ready 상태는 스케줄러에 의해 선택되어 실행이 가능한 상태고, Blocked 상태는 스케줄러에 의해서 선택될 수 없는 상태이다.
⦁ 프로세스를 종료시킬 경우 Blocked 상태를 거쳐서 Exit 상태로 갈 수도 있다.
⦁ 입⦁출력이 완료된 Blocked 상태의 프로세스는 Ready 상태가 되어 스케줄러에 의해 선택되길 기다려야 한다.

 

 

 

 

컨텍스트 스위칭(Context Switching)

 

⦁ 멀티 프로세스 환경에서 어떤 프로그램의 실현을 중단하고 다른 프로그램의 실행을 재개할 때, 그 프로그램의 재개에 필요한 환경을 다시 설정하는 것

⦁ 컨텍스트 스위칭은 시스템에 부하를 주기도 한다.

⦁ 멀티 프로세스 기반의 프로그램 실행은 I/O를 고려하므로 성능 향상에 도움이 되지만, 컨텍스트 스위칭의 영향을 고려할 경우 오히려 성능 저하가 일어날 수 있다. 구현하는 프로그램의 성격에 따라서 달라지므로 정답은 없다.