프로세스란?
프로세스는 컴퓨터에서 실행 중인 프로그램의 인스턴스를 의미합니다. 간단히 말하면, 어떤 작업을 수행하기 위해 메모리에 로드된 프로그램이 실행되는 단위입니다. 프로세스는 운영체제에 의해 관리되며, 각각 자체적인 메모리 공간, 실행 상태, 우선순위, 식별 번호 등을 갖습니다.
프로세스가 실행되는 동안 컴퓨터의 CPU를 할당하고, 필요한 데이터와 명령어를 처리합니다. 여러 개의 프로세스가 동시에 실행될 수 있으며, 운영체제는 CPU 시간을 분할하여 각 프로세스에게 할당하여 효율적으로 작업을 처리하도록 합니다.
프로세스는 프로그램을 실행하는 데 필요한 모든 정보를 갖고 있으며, 운영체제의 스케줄링에 따라 상태가 변할 수 있습니다. 프로세스는 서로 독립적으로 실행되기 때문에 하나의 프로세스가 문제가 발생하여 비정상적으로 종료되더라도 다른 프로세스에는 영향을 주지 않습니다. 또한 프로세스 간 통신을 통해 데이터를 주고받으며 상호작용할 수도 있습니다.
프로세스의 상태
- 실행 : CPU를 할당받아 현재 명령어를 실행 중인 상태입니다.
- 준비 : 실행을 기다리는 상태로, CPU를 할당받기 위해 대기하고 있는 상태입니다. 운영체제의 스케줄러에 의해 C{U를 할당받을 차례를 기다리는 상태입니다.
- 대기 : 특정 이벤트를 기다리는 상태로, 입출력 작업 완료, 신호 등의 외부 이벤트를 기다리고 있는 상태입니다. 이벤트가 발생하지 않으면 준비 상태로 전환됩니다.
- 종료 : 프로세스의 실행이 완전히 끝난 상태입니다. 메모리에서 해제되고 리소스가 반환됩니다.
운영체제의 스케줄러는 이러한 상태 전환을 적절하게 관리하여 CPU 시간을 효율적으로 분배하여 시스템 전체의 성능을 향상시키는 역할을 수행합니다.
프로세스 제어블록(PCB)
운영체제가 각 프로세스를 관리하기 위해 유지하는 데이터 구조입니다. 각 프로세스마다 하나의 PCB가 생성되며, 해당 프로세스에 대한 중요한 정보를 저장하고 있습니다. PCB는 프로세스의 상태, 실행 정보, 메모리 할당 정보, 레지스터 상태 등을 포함하고 있습니다.
- 프로세스 식별자 : 프로세스를 식별하는 고유한 번호입니다.
- 프로세스 상태 : 프로세스의 상태를 나타내는 정보입니다.
- 프로그램 카운터 : 다음에 실행될 명령어의 주소를 가리키는 레지스터 값입니다.
- 레지스터 상태 : 프로세스가 사용하는 레지스터의 내용을 저장합니다.
- 프로세스 우선순위 : 프로세스가 얼마나 중요한지를 나타내는 우선순위 값입니다.
- 프로세스의 메모리 관리 정보 : 프로세스가 사용하는 메모리 공간의 위치와 크기를 포함합니다.
- 입출력 상태 정보 : 프로세스가 현재 어떤 입출력 작업을 수행 중인지를 나타내는 정보입니다.
- 프로세스 계정 정보 : CPU 시간, 실행 시간 등의 통계 정보를 유지합니다.
PCB는 운영체제가 다양한 프로세스를 효율적으로 관리하기 위해 중요한 데이터 구조로서 사용됩니다. 각 프로세스의 PCB는 스케줄링, 상태 전환, 입출력 작업 관리 등에 필요한 정보를 제공하여 운영체제가 시스템 자원을 최적으로 활용할 수 있도록 합니다.
프로세스 스케줄링
여러 개의 프로세스들이 CPU 시간을 공유하여 실행되는 컴퓨터 시스템에서 어떤 순서로 프로세스들에게 CPU를 할당할지를 결정하는 작업을 말합니다.
프로세스 스케줄링 알고리즘은 여러 가지가 존재합니다. 각각의 알고리즘은 특정 상황에서 더 우수한 성능을 보여줍니다.
- FCFS : 먼저 도착한 프로세스를 먼저 실행하는 방식입니다. 간단하지만 평균 대기 신간이 길어지는 단점이 있습니다.
- SJF : 실행 시간이 가장 짧은 프로세스를 먼저 실행하는 방식입니다. 최적의 평균 대기 시간을 보장하지만, 실행 시간을 정확히 알아야 하는 제약이 있습니다.
- Round Robin : 시간 할당량을 정하여 순환하면서 프로세스를 실행하는 방식입니다. 시분할 시스템에서 많이 사용됩니다.
- Priority Scheduling : 우선순위에 따라 프로세스를 실행하는 방식으로, 정적 우선순위와 동적 우선순위 스케줄링이 있습니다.
- Multilevel Queue : 여러 개의 큐를 사용하여 다양한 우선순위로 프로세스를 관리하는 방식입니다.
프로세스 간 협력
다수의 프로세스가 상호작용하고 정보를 공유하는 것을 의미합니다. 프로세스 간 협력은 컴퓨터 시스템의 효율성, 유연성, 그리고 기능성을 향상시키는데 중요한 역할을 합니다.
- IPC : 프로세스들이 데이터를 주고받는 메커니즘으로, IPC를 사용하면 프로세스들 간에 메시지를 전송하고 공유할 수 있습니다. 주요 IPC 기법으로는 파이프, 소켓, 공유 메모리 등이 있습니다.
- 공유 메모리 : 두 개 이상의 프로세스가 메모리 공간을 공유하여 데이터를 읽고 쓸 수 있게 됩니다. 이는 프로세스 ㄱ나의 빠른 데이터 교환을 가능하게 합니다.
- 시그널 : 프로세스가 다른 프로세스에게 어떤 이벤트가 발생했음을 알리는 기법입니다. 주로 프로세스 간의 비동기적인 상호작용에 사용됩니다.
- 파일 기반 IPC : 파일을 사용하여 프로세스 간에 데이터를 주고받을 수 있습니다.
'BackEnd > OS에 대한 전반적인 지식' 카테고리의 다른 글
OS의 일반적인 작동 원리 (0) | 2023.08.16 |
---|---|
터미널 (0) | 2023.08.16 |
POSIX 기초 (0) | 2023.08.16 |