본문 바로가기
CS(Computer Science)

[CS] 프로세스 구조 이해

by 개발지망생 2023. 2. 19.

✅ 프로세스(process) 구성요소

  • text(CODE) : 코드
  • data : 변수/초기화된 데이터
  • stack : 임시 데이터(함수 호출, 로컬 변수등)
  • heap: 코드에서 동적으로 만들어지는 데이터

✅ 프로세스와 컴퓨터 구조 연관 관계

컴퓨터 구조에서 우리는 두 용어를 만나게 된다.

PC(Program Counter) + SP(Stack Pointer)
둘 다 레지스터이며, 용어들의 의미를 보자면

  • PC : 다음 실행할 코드 주소를 가리킨다.
  • SP : 스택 최상단 주소를 가리킨다.

를 뜻한다.

두 개를 활용하여 임베디드 시스템 등에서 동작하는 C프로그램등은 디버깅에 사용된다.

💡  파이썬에서 재귀함수 호출이 일정 횟수 이상이면 에러 나는 이유
고정된 스택 공간 때문이다.

 

📖 힙과 콘텍스트 스위칭 이해

✅ 힙이란?

동적메모리를 위한 공간을 뜻한다.

👀 JAVA 가비지컬렉션(GC)과 프로세스 힙

● JAVA 가비지컬렉션이 필요한 이유
  ○  불필요한 객체가 차지하는 힙 공간을 삭제하여, 힙 공간 확보가 필요하기 때문이다.
  ○  만약 힙 공간이 부족해지면 객체 생성이 불가하고, JAVA와 같은 객체지향 프로그램은 동작하지 않게 된다.

 

콘텍스트 스위칭

CPU에 실행할 프로세스를 교체하는 기술
PC, SP만 따로 저장했다가 바꿔주면, 프로세스 저장상태를 기반으로 실행 가능하다.
콘텍스트 스위칭은 운영체제의 핵심적인 부분이고 자주 실행되기 때문에 기계어로 작성된 있다.

✅ Process Control Block(PCB)

위 콘텍스트 스위칭에서 PC, SP만 따로 저장한다 했는데 어디에 저장을 할까?
프로세스를 생성하면 프로세스를 저장하는 별도의 공간이 생기는데 이를, Process Control Block(PCB)라고 한다.
PCB에는 프로세스 정보를 저장하는데 Process ID, Register(PC, SP 등)이 해당된다.


✅ 콘텍스트 스위칭 세부 동작

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서, 메인 메모리에 저장
  2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보(PC, SP)를 CPU의 레지스터에 넣고 실행


📖 멀티 프로세스와 IPC 이해

✅ 프로세스 간 통신이 필요한가?

프로세스는 다른 프로세스의 공간을 접근할 수 없다.
성능을 높이기 위해 여러 프로세스를 만들어서 동시 실행 할 때 프로세스 간 상태 확인 및 데이터 송수신이 필요하다.


✅ 프로세스 간 커뮤니케이션(InterProcess Communication)

줄여서 IPC라고 하며, 프로세스 간 통신 방법을 제공한다. 다양한 IPC 기법들이 있는데

  1. Message Queue
  2. Shared Memory
  3. Pipe

위 세 가지의 대표적인 기법들이 있으며 모두 커널 공간을 사용하는 것들이다.

대부분 IPC 기법은 결국 커널 공간을 활용하는 것이다. 이유는 프로세스 간에도 커널 공간은 공유하기 때문이다.

댓글