본문 바로가기
컴퓨터 기초/운영체제

프로세스 관리

by TechExplorer 2023. 2. 22.

프로세스의 개념

프로세스는 컴퓨터에서 실행 중인 프로그램을 의미합니다. 즉, 프로그램이 실행되면 운영체제에 의해 프로세스가 생성되어 실행됩니다. 각각의 프로세스는 운영체제에 의해 할당된 자원(메모리, CPU 시간, 입출력 장치 등)을 사용하여 작업을 수행합니다.

프로세스는 다음과 같은 특징을 가집니다.

 

  • 독립성: 각 프로세스는 독립적인 메모리 영역을 가지고 실행되며, 다른 프로세스에 영향을 미치지 않습니다.
  • 자원 할당: 각 프로세스는 운영체제에 의해 필요한 자원(메모리, CPU 시간, 입출력 장치 등)이 할당되어야만 실행될 수 있습니다.
  • 계층 구조: 프로세스는 계층 구조를 가질 수 있습니다. 예를 들어, 하나의 프로세스가 다른 프로세스를 생성하여 부모-자식 관계를 형성할 수 있습니다.
  • 상태: 각 프로세스는 실행 중, 준비 중, 대기 중 상태 등으로 분류됩니다.
  • 동기화: 여러 개의 프로세스가 동시에 실행될 경우, 각 프로세스가 자원을 사용하는 순서를 정하는 등의 동기화 작업이 필요합니다.
  • 통신: 서로 다른 프로세스 간에 데이터를 주고받을 수 있도록 통신이 가능합니다.

 

프로세스는 운영체제의 핵심 개념 중 하나이며, 컴퓨터 시스템의 자원 관리와 프로그램 실행 등에 중요한 역할을 합니다.


프로세스 상태

프로세스 상태는 프로세스가 실행되는 동안 해당 프로세스가 가질 수 있는 여러 가지 상태를 의미합니다. 프로세스의 상태는 운영체제가 해당 프로세스의 상태를 확인하고, 다음에 어떤 작업을 수행할지 결정하는 데 중요한 정보를 제공합니다. 보통 프로세스 상태는 실행 중, 준비 중, 대기 중 상태 등으로 구분됩니다.

 

  • 실행 중 (Running): CPU를 할당받아 명령어를 실행 중인 상태를 말합니다.
  • 준비 중 (Ready): CPU를 할당받기를 기다리는 상태를 말합니다. 다른 프로세스가 CPU를 사용하고 있지 않을 때, 바로 실행 상태로 전환됩니다.
  • 대기 중 (Waiting): I/O 등 외부 이벤트를 기다리고 있는 상태를 말합니다. 이벤트가 발생하면 준비 상태로 전환됩니다.
  • 정지 중 (Stopped): 프로세스가 실행 중이었으나, SIGSTOP 등의 신호에 의해 중단된 상태를 말합니다.
  • 완료 (Terminated): 프로세스의 실행이 종료된 상태를 말합니다.

 

이외에도 프로세스 상태는 운영체제별로 다양하게 분류될 수 있습니다. 예를 들어, 유닉스 계열 운영체제에서는 준비 중과 대기 중 상태를 하나로 묶어서 대기 중 상태로 구분하거나, 중지된 상태를 또 다른 상태로 분류하기도 합니다.

 

프로세스 상태는 운영체제가 프로세스를 관리하고 실행 우선순위를 결정하는 데 중요한 정보를 제공합니다. 또한, 운영체제는 프로세스의 상태를 모니터링하여 대기 중인 작업이 있는 경우, 해당 작업을 우선적으로 처리할 수 있도록 CPU 자원을 조절합니다.


프로세스 제어 블록

프로세스 제어 블록(Process Control Block, PCB)은 운영체제가 각 프로세스를 관리하기 위해 사용하는 자료 구조입니다. PCB는 프로세스의 현재 상태, CPU 레지스터 값, 메모리 위치, 프로세스 우선순위, 입출력 요청 상태 등과 같은 정보를 담고 있으며, 운영체제가 프로세스를 스케줄링하고 관리하는 데 사용됩니다.

 

PCB는 보통 다음과 같은 정보를 담고 있습니다.

 

  • 프로세스 식별자(Process ID, PID): 각 프로세스를 식별하는 고유한 번호입니다.
  • 프로세스 상태: 실행 중, 준비 중, 대기 중 등의 상태 정보입니다.
  • 프로그램 카운터(Program Counter, PC): 프로세스가 다음에 실행할 명령어의 주소를 가리킵니다.
  • 레지스터 값: 프로세스가 현재 가지고 있는 레지스터 값입니다.
  • CPU 시간: 프로세스가 CPU를 사용한 시간 정보입니다.
  • 메모리 할당 정보: 프로세스가 사용하는 메모리 위치와 크기 정보입니다.
  • 입출력 상태: 프로세스가 현재 입출력 장치를 사용하고 있는 상태인지 여부를 나타냅니다.

 

PCB는 각 프로세스마다 하나씩 존재하며, 운영체제가 프로세스를 관리할 때 PCB를 참조하여 해당 프로세스의 상태를 변경하거나, 프로세스 간 통신 등의 작업을 수행합니다. 또한, PCB를 이용하여 운영체제가 다양한 스케줄링 알고리즘을 적용하여 CPU 자원을 효율적으로 분배할 수 있습니다.

 

PCB는 운영체제의 핵심 요소 중 하나이며, 운영체제의 성능과 안정성에 큰 영향을 미칩니다. 따라서, PCB는 각 프로세스의 상태와 정보를 정확하게 저장하고, 운영체제가 프로세스를 관리하는 데 필요한 모든 정보를 포함하도록 설계되어야 합니다.


병행 프로세스

병행 프로세스(Concurrent Process)란, 둘 이상의 프로세스가 동시에 실행되는 것을 말합니다. 이는 운영체제가 지원하는 멀티태스킹(Multitasking)의 기본 개념 중 하나입니다.

 

병행 프로세스는 여러 개의 프로세스가 동시에 실행되기 때문에, 서로 간섭이 발생할 수 있습니다. 따라서, 프로세스 간 상호작용을 위한 동기화(Synchronization)와 프로세스 간 통신(Interprocess Communication)이 필요합니다. 일반적으로, 프로세스 간 동기화와 통신은 공유 메모리(Shared Memory)나 메시지 패싱(Message Passing) 등의 방식으로 이루어집니다.

 

병행 프로세스를 사용하면, 다음과 같은 이점이 있습니다.

 

  • 처리 속도 향상: 여러 개의 프로세스가 동시에 실행되므로, 전체적인 처리 속도가 향상됩니다.
  • 자원 공유: 공유 메모리나 메시지 패싱 등을 이용하여, 여러 개의 프로세스가 하나의 자원을 공유할 수 있습니다.
  • 모듈화: 병행 프로세스를 사용하면, 각각의 프로세스를 독립적인 모듈로 구성할 수 있습니다. 이로 인해 프로그램의 유지보수와 확장성이 향상됩니다.
  • 분산 처리: 여러 대의 컴퓨터를 이용하여 프로세스를 분산 처리할 수 있습니다. 이를 통해 처리 능력을 더욱 향상시킬 수 있습니다.

 

병행 프로세스는 다양한 분야에서 사용됩니다. 예를 들어, 웹 서버에서는 여러 개의 요청을 동시에 처리하기 위해 병행 프로세스를 사용합니다. 또한, 데이터베이스 시스템에서도 여러 개의 트랜잭션을 동시에 처리하기 위해 병행 프로세스를 사용합니다.


교착 상태

프로세스 교착 상태(Deadlock)란, 둘 이상의 프로세스가 서로가 점유한 자원을 기다리며 무한히 대기하는 상태를 말합니다. 즉, 각각의 프로세스가 다른 프로세스가 점유한 자원을 요구하면서, 서로가 상대방이 점유한 자원을 해제할 때까지 기다리는 상황이 발생하는 것입니다.

 

프로세스 교착 상태가 발생하면, 해당 프로세스들은 더 이상 진행할 수 없게 되어 시스템 전체가 정지되는 상황이 발생할 수 있습니다. 이를 방지하기 위해 운영체제는 다음과 같은 방법을 사용합니다.

 

  • 예방(Prevention): 교착 상태가 발생하지 않도록 미리 조치하는 방법입니다. 예를 들어, 운영체제는 프로세스가 필요로 하는 자원을 미리 할당하거나, 자원의 사용 순서를 정해두는 등의 방법으로 교착 상태를 예방할 수 있습니다.
  • 회피(Avoidance): 교착 상태가 발생할 가능성을 감지하여, 교착 상태가 발생하지 않도록 조치하는 방법입니다. 예를 들어, 운영체제는 프로세스가 자원을 요구할 때, 해당 자원을 할당해도 교착 상태가 발생하지 않는지 사전에 검사하여, 교착 상태가 발생할 가능성이 있으면 자원을 할당하지 않는 방법으로 교착 상태를 회피할 수 있습니다.
  • 탐지(Detection): 교착 상태가 발생한 후, 해당 상태를 탐지하여 조치하는 방법입니다. 운영체제는 주기적으로 시스템 상태를 모니터링하면서, 교착 상태가 발생한 것을 탐지하고, 이를 해결하기 위한 방법을 적용합니다.
  • 회복(Recovery): 교착 상태가 발생한 후, 해당 상태를 해결하는 방법입니다. 예를 들어, 운영체제는 교착 상태가 발생한 프로세스 중 하나를 선택하여 해당 프로세스의 자원을 해제하거나, 해당 프로세스를 중지시키는 등의 방법으로 교착 상태를 해결할 수 있습니다.

프로세스 교착 상태는 시스템 안정성을 위해 꼭 해결해야 하는 문제입니다. 따라서, 운영체제에서는 교착 상태 방지와 교착 상태 탐지 등의 방법을 적극적으로 사용하여 교착 상태를 방지하고, 해결할 수 있는 노력을 기울입니다. 하지만, 모든 교착 상태를 완전히 방지하거나 해결하기는 어렵기 때문에, 이에 대한 대처 방안을 효율적으로 구성하고, 그에 따른 대응 방법을 미리 정하는 것이 중요합니다.

 

또한, 프로세스 교착 상태는 다수의 프로세스가 서로의 자원에 대해 경쟁하며 발생하기 때문에, 프로세스 간 자원 할당에 대한 적절한 설계와 관리가 중요합니다. 이를 위해, 운영체제는 자원 할당 시스템을 효율적으로 설계하고, 자원 요청 및 반환 시에도 이를 적절하게 관리하여, 프로세스 간의 자원 경합을 효율적으로 조절합니다. 이를 통해, 교착 상태를 최소화하고, 시스템의 안정성과 성능을 유지할 수 있도록 노력합니다.

'컴퓨터 기초 > 운영체제' 카테고리의 다른 글

정보 관리  (0) 2023.02.22
기억장치 관리  (0) 2023.02.22
CPU 스케줄링  (0) 2023.02.22
범용 운영체제  (0) 2023.02.22
운영체제의 개요  (0) 2023.02.22

댓글