운영체제
프로세스 개념
Tae4an
2024. 4. 20. 18:33
프로세스(Process) 정의
프로세스는 실행중인 프로그램을 의미하며, 운영체제에서 기본적인 관리 단위로 작동한다.
- 실행중인 프로그램(Active Entity): 예를 들어 UNIX 시스템에서의 a.out 파일 또는 DOS에서의 *.exe 파일.
- 구성 요소: 프로그램의 코드(Text), 데이터(Data), 스택(Stack) 등으로 구성된다.
- 운영체제의 관리 단위: 프로세스는 운영체제에서 기본적으로 관리하는 단위로, CPU 스케줄링의 대상이 된다.
- 프로세스 컨트롤 블록(PCB): 각 프로세스는 프로세스 컨트롤 블록을 할당 받아 시스템 자원에 대한 정보를 유지한다.
- 시스템 자원의 주체: 프로세스는 CPU와 기타 시스템 자원을 할당받아 사용하는 주체다.
프로세스는 현재 실행 중이거나 곧 실행될 준비가 되어 있는 상태를 포함하여, 시스템 내에서 활동적인 개체로 간주된다.
프로세스 개념의 출현
- 60년대 Multics 시스템: "프로세스"라는 용어가 처음으로 사용되었다.
- 이 때 "작업(Task)"이라는 용어와 함께 사용되었음.
관련 용어
- Task, Job: 프로세스와 관련된 전통적인 용어.
- Thread: 프로세스 내에서 실행되는 더 작은 실행 단위.
- 프로그램(Program)
- 정적 상태: 프로그램은 저장 장치에 저장되어 있는 정적인 상태의 코드와 데이터의 모음.
프로세스(Process)
- 동적 상태: 프로세스는 프로그램이 메모리에 로드되어 실행 중인 상태입니다. 이는 시스템 내에서 자원을 할당받고, CPU의 스케줄링 단위로 동작하는 동적인 개체.
프로세스의 종류
운영체제 프로세스
- 커널 및 시스템 프로세스
- 프로세스들의 실행 순서 제어
- 중요한 시스템 감시 기능 담당
- 시스템 운영에 필수적인 코드 수행
사용자 프로세스(User Process)
- 사용자가 작성한 코드를 수행하는 프로세스
병행 프로세스(Concurrent Process)
- 여러 프로세스가 동시에 수행되는 상태
- 병행성(Concurrency) 특징
- 시스템에 동시에 존재하지만 특정 시간에는 하나의 프로세스만 실행
- 독립적인 프로세스와 협동 프로세스로 구분
독립 프로세스
- 동일한 초기값에서 같은 결과를 도출하는 프로세스
- 다른 프로세스와 자료 공유하지 않음
협동 프로세스
- 다른 프로세스의 실행에 영향을 주거나 받음
- 제한된 자원을 서로 공유함
- 상호 작용이 통제된 환경에서 발생
- 협동 필요한 경우 : 서로 통신을 위한 수단과 동기화 기능 필요
프로세스와 프로그램의 관계
프로그램이 프로세스가 된다는 것은 운영체제로부터 프로세스 제어 블록을 얻는다는 뜻
프로세스가 종료된다는 것은 해당 프로세스 제어 블록이 폐기된다는 뜻
프로세스의 상태
- 생성 상태 (New): 프로세스가 메모리에 올라와 실행 준비를 완료한 상태.
- 준비 상태 (Ready): 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태.
- 실행 상태 (Running): 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태.
- 대기 상태 (Waiting): 프로세스가 이벤트나 자원의 가용성을 기다리는 상태.
- 완료 상태 (Terminated or Exit): 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 진입하는 상태. 프로세스 제어 블록(PCB)이 시스템에서 제거됨.
- 디스패치 (Dispatch): 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업.
- 타임아웃 (Timeout): 프로세스가 자신에게 주어진 하나의 타임 슬라이스 동안 작업을 끝내지 못하면 다시 준비 상태로 돌아가는 것.
프로세스가 종료되면, 프로세스에 할당된 모든 자원과 프로세스 제어 블록이 운영체제에 의해 회수되어 자원 풀에 반환된다. 이는 프로세스의 생명주기가 끝났음을 의미하며, 시스템의 다른 프로그램이 해당 자원을 사용할 수 있게 된다.