관리 메뉴

기억을 위한 기록들

[윈도우즈 시스템 프로그래밍] - 파트2 프로세스와 IPC 본문

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

[윈도우즈 시스템 프로그래밍] - 파트2 프로세스와 IPC

에드윈H 2023. 11. 16. 15:02

해당 글은 '뇌를 자극하는 윈도우즈 시스템 프로그래밍-윤성우 저'를 기반하여 해당 인터넷 무료강의를 참고하여 작성되었습니다.

 

 

 

 

파트 1은 하드웨어적인 측면에서 바라보며 이해를 위한 반면 파트 2는 운영체제 관섬에서 프로세스가 무엇인지, 프로세스를 관리하는 스케쥴러의 동작하는 원리를 설명해 준다.

 

책에서는 컴퓨터 구조에 대한 이야기, 프로세스의 생성과 소멸, 커널 오브젝트와 오브젝트 핸들, 프로세스 간 통신(IPC), 스케줄링 알고리즘과 우선순위 등으로 하위 파트로 나누어져 있고, 그중 요약하여 해당 글을 작성할 것이다.

 

 

컴퓨터를 디자인한다?

  • 프로그래머의 관점으로는 컴퓨터 구조를 잘 아는 프로그래머도 컴퓨터 디자인에 참여-> 컴퓨터 디자인은 레지스터명령어 디자인

 

레지스터는 특별한 목적이 있는 저장 장치라고도 할 수 있음.

 

 

프로세스란?

  • 메인 메모리로 이동하여 실행 중인 프로그램 -> 일반적인 정의

 

프로세스의 범위

  • 메모리 구조 + 레지스터 Set
  • 프로세스 별 독립적인 대상은 프로세스의 범주에 포함시킬 수 있다.

 

프로세스 스케쥴러

  • 기능 : 둘 이상의 프로세스가 적절히 실행되도록 컨트롤
  • 방법 : 스케줄링 알고리즘에 따라 다양함.

  • 스케쥴러도 어떻게 보면 프로세스 일지도... 프로세스를 관리하는 프로세스

 

컨텍스트 스위칭(Context Switching)

  • 실행 중인 프로세스가 바뀔때마다 실행 해야 할 프로세스의 데이터로 레지스터셋에 교체 해주는 것.

커널 오브젝트에 대한 이해

  • 커널에 의해 관리되는 리소스(운영체제에 의해 생성되고 소멸되는) 정보를 담고 있는 데이터블록 -> 배열과 같은 형태
  • 어떤 리소스냐에 따라 커널 오브젝트에 담고 있는 정보가 다르다.
  • ex) 리소스가 프로세스면 프로세스 커널 오브젝트, 쓰레드면 쓰레드 커널 오브젝트 등

 

핸들

- 커널 오브젝트에 할당되는 숫자들. 실행 우선순위 정보를 부여함

 

 

 

IPC (Inter - Process Communication)

- 프로세스 사이의 통신을 뜻하고, 둘 이상의 프로세스가 데이터를 주고 받는 행위라고 정의

- 프로세스의 메모리 영역을 완전히 분리되어 있어서 애초에 데이터 공유는 불가능하다.

 

왜 프로세스 간은 데이터 공유가 안될까?
-> 가능 했다고 하면, 만약에  롤을 하고 있는데 유튜브를 보려고 띄어놓은 크롬에 의해 롤이 영향을 받아서 버그가 생긴다면 그건 너무 고통스러울 것 같다..
-> 결론은 안정성을 높이기 위함이다.

 

 

기본적으로 불가능하기에 IPC 의 다양한 기법들로 프로세스간 통신이 된다고 한다.

 

메일 슬롯(Mail Slot) 기법

  • 메일 슬롯(Mail Slot)의 원리 -> 데이터를 주고 받기 위해 프로세스가 우체통(Mail)을 마련하는 것.

 

메일 슬롯의 특성 : 단향향 통식과 브로드캐스팅방식을 지원하는 통신 기법이다.

 

 

 

커널 오브젝트의 상태

- Signaled / Non-Signaled

- 상태가 변경되는 시점은 커널 오브젝트의 따라서 다르다.

 

 

 

종료코드

main 함수의 return 문에 의한 반환값은 프로세스의 종료코드로 커널 오브젝트에 저장된다.

 

 

핸들 테이블

- 커널 오브젝트와 핸들 사이에 핸들 테이블이 존재. 핸들을 참조하여 특정 커널 오브젝트를 가리킬 수 있다.

- 핸들 테이블은 프로세스별로 독립적. 그리고 숫자가 핸들로서 의미를 지니기 위해서는 해당 숫자가 핸들 테이블에 등록되어 있어야한다. 등록되는 순간부터 핸들이라 할 수 있으며 이 핸들을 통해서 커널 오브젝트에 접근하는 것이 가능

 

핸들의 상속

- 자식 프로세스를 생성하는 과정에서 상속 할 수 있다. 핸들이 자식 프로세스에게 상속된다는 말은 부모 프로세스의 핸들 테이블 정보가 자식 프로세스의 핸들 테이블에 복사된다는 뜻이다.

 

 

 

스케줄링 알고리즘과 우선 순위

 

선점형 OS와 비선점형OS의 특징

-  프로세스의 실행을 다른 프로세스로 넘기는 방식에 따라서 나뉨

- 선점형 : 현재 실행 중인 프로세스보다 높은 우선순위의 프로세스가 등장하면 그 순간 바로 실행중인 프로세스 변경

- 비선점형 : 우선 순위가 높은 프로세스가 등장하더라도 현재 실행 중인 프로세스가 일을 넘기지 않으면 프로세스의 이동이 일어나지 않는다.

 

 

스케줄러가 동작하는 시기

Case 1 : 매 타임 슬라이스(Slice)마다

Case 2 : 프로세스가 생성 및 소멸될때마다Case 3 : 현재 실행 중인 프로세스가 블로킹 상태에 놓일 때마다