포스트

Operating System: Chapter 03 - 프로세스

Operating System: Chapter 03 - 프로세스

초기의 컴퓨터 시스템은 한 번에 하나의 프로그램만을 실행하도록 허용하였으며, 그 프로그램이 시스템을 완전히 제어하고, 시스템의 모든 자원에 접근할 수 있었다.
오늘날의 컴퓨터 시스템은 메모리에 다수의 프로그램이 적재되어 병행 실행되는 것을 허용한다.
프로세스란 실행 중인 프로그램을 말하며, 현대의 컴퓨팅 시스템에서 작업의 단위이다.

3.1. 프로세스 개념

초창기 컴퓨터는 작업(job)을 실행하는 일괄처리 시스템이었고, 사용자 프로그램 또는 태스크(task)를 실행하는 시분할 시스템이 뒤를 이었다.
단일 사용자 시스템에서도 사용자는 워드프로세서, 웹 브라우저 및 전자메일 패키지와 같은 여러 프로그램을 한 번에 실행할 수 있다.
다중 태스킹을 지원하지 않는 임베디드 장치에서와 같이 컴퓨터가 한 번에 하나의 프로그램만 실행할 수 있더라도, 운영체제는 메모리 관리와 같은 자체 프로그램된 내부 활동을 지원해야 할 수도 있다.
여러 측면에서 이 모든 활동은 유사하며, 프로세스라고 부를 수 있다.

3.1.1. 프로세스

프로세스란 실행 중인 프로그램이다.
프로세스의 현재 활동 상태는 프로그램 카운터 값과 프로세서 레지스터의 내용으로 나타낸다.
프로세스의 메모리 배치는 일반적으로 여러 섹션으로 구분되며 다음과 같다.
img1

  • 텍스트 섹션: 실행 코드
  • 데이터 섹션: 전역 변수
  • 힙 섹션: 프로그램 실행 중에 동적으로 할당되는 메모리
  • 스택 섹션: 함수를 호출할 때 임시 데이터 저장장소(함수 매개변수, 복귀 주소 및 지역 변수)

텍스트 및 데이터 섹션의 크기는 고정되기 때문에 프로그램 실행 시간 동안 크기가 변하지 않는다.
힙과 스택 섹션은 프로그램 실행 중에 동적으로 줄어들거나 커질 수 있다.
함수가 호출될 때마다 함수 매개변수, 지역 변수 및 복귀 주소를 포함하는 활성화 레코드가 스택에 push되며, 함수에서 제어가 되돌아오면 스택에서 활성화 레코드가 pop된다.
마찬가지로 메모리가 동적으로 할당됨에 따라 힙이 커지고 메모리가 시스템에 반환되면 축소된다.
스택 및 힙 섹션이 서로의 방향으로 커지더라도 운영체제는 서로 겹치지 않도록 해야 한다.

프로그램 자체는 프로세스가 아니다. 프로그램은 명령어 리스트를 내용으로 가진, 디스크에 저장된 파일과 같은 수동적인 존재이다.
그러나 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터와 관련 자원의 집합을 가진 능동적인 존재이다.
실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 된다. 실행 파일을 메모리에 적재하는 일반적인 두 가지 방식은, 실행 파일을 나타내는 아이콘을 더블 클릭하는 방식과 명령어 라인 상에서 파일 이름을 입력하는 방식이다.

두 프로세스들이 동일한 프로그램에 연관될 수 있지만, 이들은 두 개의 별도의 실행 순서로 간주된다.
텍스트 섹션이 동등하다 할지라도 데이터, 힙 및 스택 섹션은 다를 수 있다.

프로세스 자체가 다른 개체를 위한 실행 환경으로 동작할 수도 있다. 예를 들면 Java 프로그래밍 환경이 있다.
대부분의 상황에서 실행 가능한 Java 프로그램은 JVM 안에서 실행된다. JVM은 적재된 Java 코드를 해석하고 그 코드를 대신하여 원 기계어를 이용하여 행동을 취하는 프로세스로서 프로그램을 실행한다.

3.1.2. 프로세스 상태

프로세스는 실행되면서 그 상태가 변한다. 프로세스의 상태는 부분적으로 그 프로세스의 현재의 활동에 따라 정의된다.
프로세스는 다음 상태 중 하나에 있게 된다.
img2

  • new: 프로세스가 생성되었다.
  • running: 명령어들이 실행되고 있다.
  • waiting: 프로세스가 어떤 이벤트가 일어나기를 기다린다.
  • ready: 프로세스가 처리기에 할당되기를 기다린다.
  • terminated: 프로세스의 실행이 종료되었다.

3.1.3. 프로세스 제어 블록

각 프로세스는 운영체제에서 PCB(Process Control Block)에 의해 표현된다.
프로세스 제어 블록은 특정 프로세스와 연관된 여러 정보를 수록하며, 다음과 같은 것들을 포함한다.
img3

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

"Operating System" 카테고리의 게시물