CS Fundamentals/Operating System

[Operating System] Process

EndiYou 2024. 12. 30. 11:32

운영체제가 관리하는 작업의 단위로서, 실행중인 프로그램(프로그램이 메모리에 올라간 상태)을 의미한다.


1. Process State Lifecyle

  • New: 새로 생성되어 아직 실행 준비가 완료되지 않은 초기 상태 (스케줄링 대상이 되지 않은 상태)
  • Running: CPU를 점유하여 실제로 실행 중인 상태
  • Waiting: CPU를 점유하고 있지 않으면서, 특정 이벤트(입/출력 완료, 리소스 확보 등) 발생을 기다리며 대기 중인 상태
  • Ready: CPU 할당만 받으면 바로 작업을 실행할 수 있는 상태
  • Terminated: 모든 작업을 완료하고 종료된 상태

 

1.1 프로세스의 상태 값이 Waiting Status 로 변경되는 경우

  • 디스크, 프린터 등 I/O 작업이 완료되기를 기다리는 경우
  • 메모리나 다른 리소스가 부족해서 추가 확보를 기다리는 경우
  • 특정 이벤트(사용자의 입력, 네트워크 패킷 도착 등)가 발생할 때까지 기다리는 경우

 

1.2 Running 프로세스가 Interrupt가 발생하면서 Ready 상태로 변환되는 경우

  • 프로세스에 할당된 Time Slice가 만료되어 Timer Interrupt가 발생하는 경우
  • 우선순위가 더 높은 프로세스가 스케줄러에 의해서 선점된 경우
  • Multi-Core, Multi-Tasking 환경에서 스케줄러가 부하 분산을 위해 다른 프로세스를 실행하는 경우

2. Process Control Block (PCB)

운영체제가 프로세스를 관리하기 위해 참고하는 프로세스 관련 정보를 저장한 구조체

  • Process State: 프로세스의 현재 상태 (New, Running, Waiting, Ready, Terminated 등)
  • Program Counter: 프로세스가 다음에 실행할 명령어의 위치(주소) 저장
  • CPU Registers: 프로세스 실행 중 사용된 CPU Registers 값
  • CPU Scheduling Information: 프로세스의 우선순위, Time Slice 정보 등
  • Memroy Management Information: 메모리 할당 정보, 페이지 테이블 정보 등
  • Accounting information: 사용자 ID, 그룹 ID, CPU 사용시간 등
  • I/O Status informtion: 프로세스가 사용하는 입/출력 장치, 파일 정보
  • Process Identifier(PID): 프로세스 고유 ID
  • Parent Process Identifier(PPID): 프로세스 생성한 부모 프로세스 ID
  • Process Privileges: 프로세스의 권한
  • Thread Information: 멀티 스레드 환경일 경우 프로세스에 포함된 스레드 관련 정보
  • Signal Handling Information: 프로세스가 처리할 Signal 
  • Open File Table: 프로세스가 열어둔 파일들의 정보
  • Resource Usage Information: 프로세스가 사용중인 자원(CPU, Memory 등)

3. Multi-Processing

CPU를 최대로 활용하기 위해 사용하는 기술

  • 프로세스는 Single Thread of Execution 방식으로 작업을 수행
  • 프로그램이 복잡해지면서 하나의 프로그램(프로세스) 내에서 Multi-Thread를 사용해야 하는 경우가 발생
  • 과거에는 Multi-Process를 사용했으나 Multi-Thread가 더 효율적이라 최근에는 잘 사용되지 않음

 

3.1 Multi-Processing 동작 방식

  • 시간을 여러 개의 Time Slot으로 나누어 프로세스를 번갈아 가면서 실행하는 방식
  • 프로세스가 동시에 실행되는 것처럼 보이지만, 단일 CPU 환경에서는 시분할 방식으로 동작
  • Multi-CPU, Multi-Core 환경에서는 실제 여러 프로세스를 동시에 실행 가능

 

3.2 Context Switch

멀티 프로세싱 환경에서 실행 중인 프로세스가 CPU를 다른 프로세스에게 양보할 때 발생하는 작업
  • 실행중인 프로세스의 상태를 PCB에 저장(다음에 다시 실행될 때 작업을 이어서 진행하는데 활용)
  • CPU를 양보 받은 프로세스의 상태를 복원하여 작업을 이어서 진행
  • Context Switch가 자주 발생할 경우 CPU 작업을 멈추고 상태 저장/복원 작업이 진행되므로 성능 저하 발생
반응형