OSTEP 4 - Process

JiYun·2025년 1월 15일

OSTEP

목록 보기
2/21

이 장에서는 운영체제가 제공하는 핵심 개념 중 하나인 프로세스(process)에 대해 논의한다.

1. 프로세스의 개념

일반적으로 프로세스실행 중인 프로그램으로 정의한다. 프로그램은 디스크 상에 존재하며 실행을 위한 명령어와 정적 데이터의 묶음으로, 이 명령어와 데이터 묶음을 읽고 실행하여 프로그램에 생명을 부여하는 것이 운영체제이다.

프로세스의 구성 요소를 이해하기 위해서 하드웨어 상태를 이해해야 한다. 프로그램이 실행되는 동안 하드웨어 상태를 읽거나 갱신할 수 있다.
그중 가장 중요한 구성요소는 메모리이다. 명령어와 프로그램이 읽고 쓰는 데이터는 모두 메모리에 저장된다.
레지스터도 중요한 구성요소이다. 프로그램 카운터(PC)는 프로그램의 어떤 명령어가 실행중인지를 알려준다. 스택 포인터, 프레임 포인터는 함수의 변수와 리턴 주소를 저장하는 스택을 관리할 때 사용하는 레지스터이다.
프로그램은 영구 저장장치에 접근하기도 한다. 입출력 정보는 프로세스가 현재 열어놓은 파일 목록을 가지고 있다.

2. 프로세스 API

다음 챕터에서 자세히 다룰 예정이기 때문에 기본적인 기능에 대해서만 살펴보자

  • Create - 운영체제는 새로운 프로세스를 생성한다.
  • Destory - 프로세스를 강제로 종료한다.
  • Wait - 어떤 프로세스의 실행 중지를 기다리기 위한 대기
  • Miscellaneous Control - 프로세스의 제거, 대기 말고 일시정지, 재개 기능
  • Status - 프로세스가 얼마나 실행되었는지, 어떤 상태인지

3. 프로세스 생성

  1. 프로그램 코드와 정적 데이터를 메모리, 프로세스의 주소 공간에 로드
    • 운영체제는 디스크의 실행 파일의 바이트를 읽어서 메모리의 어딘가에 저장해야 된다.
    • 현대 운영체제는 필요한 부분만 메모리에 로드 → 페이징, 스와핑 이용 (과거에는 모두 로드)
  2. 프로세스를 실행시키기 전에 일정량의 메모리가 실행시간(런타임) 스택 용도로 할당되어야함. c프로그램은 지역 변수, 함수 인자, 리턴 주소를 위해 스택을 사용함
  3. 프로그램의 을 위한 메모리 영역을 할당한다. c프로그램은 동적으로 할당된 데이터를 저장하기 위해 사용된다. (malloc(), free())
  4. 입출력과 관계된 초기화 작업을 수행한다. UNIX에서는 각 프로세스는 STDIN, STDOUT, STDERR 장치에 해당하는 3개의 파일 디스크립터를 가진다. → IO, 파일 디스크립터는 영속성 부분에서 다룸
  5. 1-4를 모두 마치게 되면 프로그램 실행을 위한 준비가 마치게 된다. 프로그램의 시작 지점인 main() 에서부터 프로그램을 시작. 운영체제는 CPU를 새로 생성된 프로세스에게 넘기게 되고 프로글매 실행이 시작된다.S

4. 프로세스의 상태

  • 실행(Running) - 프로세스는 명령어를 실행하고 있다.
  • 준비(Ready) - 실행할 준비가 되어있지만, 운영체제가 다른 프로세스가 실행하고 있는 등의 이유로 대기
  • 대기(Blocked) - 다른 사건을 기다리는 동안 프로세스의 실행을 중단 시키는 연산
    ex) 디스크에 IO 요청시 프로세스는 IO 완료까지 대기 상태가 되고, 다른 프로세스가 실행 상태가 될 수 있음

프로세스의 상태는 운영체제의 스케줄링 정책에 따라 결정된다.

운영체제에는 다양한 자료 구조들이 존재한다. 운영체제는 프로세스 리스트를 통해 다수의 프로세스들을 관리한다. 또한 프로세스의 관리를 위한 정보를 저장하는 자료 구조는 프로세스 제어 블록(PCB)라고 부른다.

5. 자료구조

운영체제도 일종의 프로그램으로 다른 프로그램의 다양한 정보를 유지하기 위한 자료구조를 가지고 있다.

프로세스의 상태를 파악하기 위한 프로세스 리스트, 어느 프로세스가 실행중인지 확인하기 위한 자료구조 등.

실제 운영체제는 더 복잡하긴 하지만 비슷한 프로세스 구조를 가진다. 운영체제는 프로세스가 중단되었을 때 레지스터 값을 따로 저장하고 이를 복원하여 프로세스의 실행을 재개한다 (Context Switch).

profile
고수가 되고싶다

0개의 댓글