About Process (1) : Memory, and State

2026. 11. 12. 12:59ㆍComputer Science/Operating System

\Ref : GeekForGeeks

 

Process, and Memory

정말 단적으로 말하자면, Process는 프로그램이 실행되서 메모리의 영역을 차지한 것을 의미한다. (그리고 이러한 Process의 활동 상태는 Program Counter(not a political correctness)에 저장되게 된다.) 쨋든 프로세스가 정복하는 메모리에는 크게 4가지 영역이 있는데, 이는 다음과 같다.

  • Text Section : 실행 가능한 코드가 저장되는 영역이다. 그냥 말그대로 print("Hello world") 같은 거다.
  • Data Section : Global Variable(전역 변수)가 저장되는 영역이다.
  • Heap Section : DS/ADT의 Heap과는 다른 영역이긴 하나.... 어쨋든 Dynamic allocation을 통해 저장되는 데이터가 들어가는 영역이다. 그리고 당연하게도 Dynamic allocation의 특성상 프로그램이 돌아가는 와중에 이게 진행된다.
  • Stack Section : DS/ADT의 Stack과는 다른 영역이긴 하나.... 로컬 변수나 함수 파라미터 같은 Activation record를, 함수가 실행될때 임시로 저장하는 영역이다. (Function call stack에 대해서는 후술하도록 하자.)

그리고 대충 예상이 가겠지만, Text/Data Section은 크기가 불변이며 Heap/Stack Section은 크기가 가변적이다. 그리고 Stack과 Heap은 그림에서 보듯이 서로를 향해 뻗어 나가지만.. OS는 둘이 겹치게 하면 안될 것이다. 

 

 

 

Process,  State, and PCB

여튼 메모리에 올라가면 OS가 프로세스를 잘 관리해 줄 것인데, 관리 함에 있어서 상태(State)를 사용하게 된다. 예를 들어서, 프로세스가 새로 진입 할때도 있고 작동 할때도 있고 잠수탈때도 있고 뭐 여튼 그럴거 아닌가. 그걸 각각을 new, ready.. 같은 상태로 표현하고 전이 조건을 세팅하고 여튼 뭐 그런 것이다.

 

그리고 각각의 프로세스들은 Process control block(PCB, 기판 아님)에 의해서 표현되며, OS 커널이 이를 이용한다. PCB에는 프로세스에 관한 다양한 정보가 들어있는데, 대충 아래와 같은 것들을 표현하게 된다.

  • Process State : 우리가 위에서 말한 상태들을 표현한다.
  • Program Counter : 이 프로세스를 위해서 실행할 다음 명령이 들어있는 주소를 나타낸다.
  • Registers (SAVED REGISTER CONTEXT) : CPU에 기어 들어간 레지스터를 생각하면 곤란한게, PCB 안에 들어간 레지스터는 I/O과정에서 Interrupt이 뜨면 이후에 작업을 재개하기 위헤 RAM에 레지스터 데이터를 옮겨두는 것에 가깝다.
  • CPU-Scheduling Information : 프로세스 우선순위, 스케쥴 큐에 대한 포인터 등등....
  • Memory-management Information : 페이지 테이블이라던가, 세그먼트 테이블이라던가, 베이스 주소라던가..
  • Accounting Information : 자원 사용량 통계 정보다.
  • I/O Status Information : 말그대로 I/O 디바이스의 정보라던가....

'Computer Science > Operating System' 카테고리의 다른 글

About Process (2) : Process Scheduling  (0) 2026.11.12
System Calls  (0) 2026.11.04