본문 바로가기
OS(운영체제)

프로세스(Process) (메모리, PCB, 상태)

by 걸어가는 신사 2021. 12. 9.

1. Process (프로세스)

실행 중인 프로그램(program)
즉, disk에 있던 program이 메모리에 적재되면 process
  • process는 현대의 컴퓨팅 시스템에서 작업(task)의 단위이다.
    • 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데, 실제로는 스레드(thread) 단위로 스케줄링을 한다. 
  • 프로그램(program) : disk에 저장되어 있는 실행코드
  • 하드디스크에 있는 프로그램을 실행하면, OS에 의해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 프로그램의 바이너리 코드가 올라간다. 이 순간부터 프로세스이다.

 

2. 프로세스의 메모리 구조

  • Process는 OS에 의해서 메모리 할당을 받는다.
  • Process들은 각각 자신의 메모리를 가진다.
  • 할당 받은 Process의 메모리는 다음과 같이 구성되어 있다.
    • stack, heap, data, text 

  • Text (=Code) 영역 : 실행 코드
  • Data 영역 : 전역 변수 (global, static 변수)
    • uninitialized data : 초기화되지 않은 전역 변수
    • initialized data : 초기화 된 전역 변수
  • Heap 영역 : 프로그램 실행 중에 동적으로 할당되는 메모리
  • Stack 영역 : 함수를 호출할 때 데이터 저장장소(ex. 함수 매개변수 복귀 주소 및 지역 변수) 

 

3. 프로세스 상태 (Process state)

  • 프로세스는 실행되면서 그 상태가 변한다.
  • 프로세스의 상태는 부분적으로 그 프로세스의 현재의 활동에 따라서 정의된다.
  • 어느 한순간에 한 처리기 코어에서는 오직 하나의 프로세스만이 실행(running)된다.
  • 하지만, 많은 프로세스가 준비(ready) 및 대기(waiting) 상태에 있을 수 있다.

(1) new(생성)

  • process가 생성 중이다. 

(2) running(실행) 

  • 명령어들이 실행되고 있다.

(3) waiting(대기) 

  • process가 어떤 이벤트(입출력 완료 또는 신호의 수신)가 일어나기를 기다린다.

(4) ready(준비) 

  • process가 CPU에 할당되기를 기다린다.

(5) terminated(종료)

  • process의 실행이 종료되었다.

 

4. 프로세스 제어 블록 (Process Control Block, PCB)

특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 OS 커널의 자료 구조이다.
  • PCB는 운영체제가 프로세스를 표현한 것이다.
  • 프로세스를 시작시키거나 다시 시작시키는 데 필요한 모든 데이터를 위한 저장소
  • PCB 자료구조를 활용해서 OS는 Memory에 올라와 있는 Process를 관리한다.

(1) process 상태 

  • 상태는 new, ready, running, waiting, halted 상태를 가진다.

(2) program counter

  • process가 다음에 실행할 명령어의 주소를 가리킨다.

(3) CPU Registers

  • CPU Register는 컴퓨터의 구조에 따라 다양한 수와 유형을 가진다. 레지스터에는 누산기(accumulator), 인덱스 레지스터, 스택 레지스터, 범용(general-purpose) 레지스터들과 상태 코드(condition code) 정보가 포함된다. program counter와 함께 이 상태 정보는, 나중에 프로세스가 다시 schedule 될 때 계속 올바르게 실행되도록 하기 위해서 interrupt 발생 시 저장되어야 한다.

(4) CPU-Scheduling 정보

  • process 우선순위, schedule queue에 대한 포인터와 다른 스케줄 매개변수를 포함한다.

(5) Memory 관리 정보

  • 운영체제에 의해 사용되는 메모리 시스템에 따라되는 메모리 시스템에 따라 기준(base) 레지스터와 한계(limit) 레지스터의 값, 운영체제가 사용하는 메모리 시스템에 따라 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함한다.

(6) 회계(Accounting) 정보

  • CPU 사용 시간과 경과된 실시간, 시간제한, 계정 번호, 잡 또는 프로세스 번호 등을 포함한다.

(7) 입출력 상태 정보

  • 프로세스에 할당된 입출력 장치들과 열린 파일의 목록 등을 포함한다.
반응형

댓글