[CS공부]프로세스란 무엇??

백엔드 취준생·2025년 4월 26일

CS공부

목록 보기
1/14

프로세스란?

  • 컴퓨터에서 연속적으로 실행되고 있는 프로그램
  • 종종 스케줄링의 대상이 되는 작업(task)라는 용어와 거의 같은 의미로 씀
  • 여러 개의 프로세서 사용 => 멀티 프로세싱

프로세스의 구조

  • Text Section
    • 실행가능한 코드를 저장하는 공간
    • 기계어로 저장
  • Data Section
    • 전역 변수, 정적 변수, 상수 등을 저장하는 공간
    • 초기화된 변수와 초기화되지 않은 변수들이 나눠서 저장된다.
    • 데이터 영역은 프로그램의 시작 시. 초기화되며, 프로세스가 종료될 때까지 유지된다.
  • Heap Section
    • 프로그램 실행동안 동적으로 생성되는 데이터 구조나 객체가 저장되는 공간
    • 데이터가 추가됨에 따라 유동적으로 공간을 늘릴 수 있음
    • 힙은 프로세스의 주소 공간의 나머지 영역에 위치, 크기는 동적으로 확장될 수 있음
  • Stack Section
    • 함수가 실행되는 동안 지역변수가 저장되는 임시 공간, 대표적으로 함수 매개변수, 리턴 주소, 지역 변수 등이 포함됨
    • 프로세스마다 독립적인 stack을 가질 수 있고, stack 포인터를 통해 스택의 상태를 관리함
    • 함수 호출 -> stack 공간 생성 , 함수 종료되면 제거됨

프로세스의 상태

  • New : 프로세스가 생성된 상태
  • Running : 프로세스가 수행되는 상태
  • Waiting : 프로세스 이벤트가 발생되어 입/출력 완료를 기다리는 상태
  • Ready : 프로세스가 프로세서에 의해 실행되기를 기다리는 상태(언제라도 실행 가능)
  • Terminated : 프로세스 실행 종료 상태

프로세스 제어 블록

  • 프로세스 상태(Process State) : new, ready, running, waiting, terminated 상태 중 하나에 해당됨
  • 프로그램 카운터(Program Counter) : 메모리의 다음 명령어 주소를 저장함
  • CPU 레지스터(CPU registers) : IR(Instruction Register), DR(Data Register), PC(Program Counter)와 같은 저장공간이 포함됨
  • CPU 스케줄링 정보(CPU-scheduling information) : 프로세스 실행 순서를 정하는 정보
  • 메모리 관리 정보(Memory-management information)
  • 통계 정보(Accounting Information) : 프로세스의 실행, 시간 제한, 실행 ID 등에 사용되는 CPU양의 정보
  • 입/출력 상태 정보(I/O status information)

프로세스와 쓰레드 구분

프로세스

  • 실행중인 프로그램을 의미함
  • 운영체제로부터 자원을 할당
  • 각 프로세스간에는 자원이 독립적으로 할당됨

쓰레드

  • 실행 제어만 분리한 것을 의미함
  • 프로세스로부터 자원을 할당받음
  • 자원 공유로 인해 문제가 발생할 수 있으니 이를 염두에 둔 프로그래밍을 해야함
  • 프로세스의 코드/데이터/힙영역을 공유하기 때문에 좀 더 효율적으로 통신할 수 있음
  • 컨텍스트 스위칭도 캐시 메모리를 비우지 않아도 되어 프로세스보다 빠름

-> 한 프로세스 안에 여러개의 스레드가 생성될 수 있음

컨텍스트 스위칭란?

  • 프로세스에서 문맥(Context)이란 마지막에 수행했던 명령어 위치
  • 컨텍스트는 PCB에 표시됨
  • 인터럽트가 발생했을 때 운영체제는 현재 수행중인 Context을 저장, 그후 다시 그 프로세스를 수행할 때 저장했던 Context를 복구함

의미

  • CPU Core를 다른 프로세스에게 양도하는 것
  • 현재 프로세스의 상태를 저장함
  • Context Switch하게되면 다른 Process Context 복원함

:참고
[인프런]운영체제 공룡책 강의
[위키백과]프로세스

profile
코딩하는 대학생

0개의 댓글