1. 프로세스(Process)란?
프로세스는 실행 중인 프로그램의 인스턴스로 정의된다. 운영 체제에서 프로세스는 메모리에 로드되어 실행되는 프로그램을 나타내며, 자체 데이터, 코드 영역, 힙, 스택과 같은 자원과 실행 상태를 가진다. 프로세스는 운영 체제에서 리소스 할당과 실행을 관리하는 기본 단위로 사용된다.
2. 프로그램, 프로세스, 스레드의 차이
프로그램(Program)
- 정의: 프로그램은 디스크에 저장된 실행 가능한 코드의 집합이다. 사용자가 실행시키기 전까지는 정적인 상태로 활동하지 않는다.
- 특징: 프로그램은 코드, 데이터, 리소스 파일 등을 포함하지만, 실행되지 않는 상태이므로 시스템 리소스를 소모하지 않는다.
프로세스(Process)
- 정의: 프로세스는 실행 중인 프로그램의 인스턴스이다. 메모리에 로드되어 실행 상태가 되면 프로세스라고 부른다.
- 특징: 프로세스는 독립적인 메모리 영역(코드, 데이터, 스택, 힙 등)을 가지며, 운영 체제로부터 리소스(시간, 메모리)를 할당받는다.
스레드(Thread)
- 정의: 스레드는 프로세스 내에서 실행되는 실행의 흐름이다. 프로세스 내의 스레드들은 해당 프로세스의 리소스(메모리, 파일 핸들 등)를 공유한다.
- 특징: 스레드는 프로세스보다 가볍고, 컨텍스트 스위칭 비용이 적다. 멀티스레딩을 통해 여러 작업을 동시에 처리할 수 있다.
3. PCB(Process Control Block)란?
PCB(Process Control Block)는 운영 체제에서 프로세스를 관리하기 위해 사용되는 데이터 구조이다. 프로세스의 상태 정보를 포함하며, 프로세스 스케줄링 및 관리에 필수적이다.
PCB에 포함되는 정보
- 프로세스 식별자(Process ID): 프로세스를 구별하는 고유한 번호다.
- 프로세스 상태: 실행 중, 대기 중, 중단 등 프로세스의 현재 상태다.
- 프로그램 카운터: 프로세스가 다음에 실행할 명령어의 주소다.
- CPU 레지스터 정보: 프로세스 실행 중의 레지스터 값이다.
- CPU 스케줄링 정보: 우선 순위, 스케줄 큐 포인터 등이다.
- 메모리 관리 정보: 페이지 테이블, 세그먼트 테이블 등 프로세스의 메모리 주소 공간 정보다.
- 입출력 상태 정보: 프로세스에 할당된 입출력 장치 및 열린 파일 목록이다.
- 어카운팅 정보: 사용된 CPU 시간, 실행 시간 제한 등이다.
PCB는 프로세스의 컨텍스트 스위칭(한 프로세스에서 다른 프로세스로 전환) 시 중요한 역할을 한다. 운영 체제는 현재 실행 중인 프로세스의 상태를 PCB에 저장하고, 새로 실행할 프로세스의 PCB에서 상태를 복원함으로써 컨텍스트 스위칭을 수행한다.
별도의 조그마한 소식
12주차 우수TIL
이것에 선정이 되었다고 한다...!