운영체제가 관리하는 작업의 단위로서, 실행중인 프로그램(프로그램이 메모리에 올라간 상태)을 의미한다.
1. Process State Lifecyle
- New: 새로 생성되어 아직 실행 준비가 완료되지 않은 초기 상태 (스케줄링 대상이 되지 않은 상태)
- Running: CPU를 점유하여 실제로 실행 중인 상태
- Waiting: CPU를 점유하고 있지 않으면서, 특정 이벤트(입/출력 완료, 리소스 확보 등) 발생을 기다리며 대기 중인 상태
- Ready: CPU 할당만 받으면 바로 작업을 실행할 수 있는 상태
- Terminated: 모든 작업을 완료하고 종료된 상태
1.1 프로세스의 상태 값이 Waiting Status
로 변경되는 경우
- 디스크, 프린터 등 I/O 작업이 완료되기를 기다리는 경우
- 메모리나 다른 리소스가 부족해서 추가 확보를 기다리는 경우
- 특정 이벤트(사용자의 입력, 네트워크 패킷 도착 등)가 발생할 때까지 기다리는 경우
1.2 Running
프로세스가 Interrupt가 발생하면서 Ready
상태로 변환되는 경우
- 프로세스에 할당된 Time Slice가 만료되어
Timer Interrupt
가 발생하는 경우 - 우선순위가 더 높은 프로세스가 스케줄러에 의해서 선점된 경우
- Multi-Core, Multi-Tasking 환경에서 스케줄러가 부하 분산을 위해 다른 프로세스를 실행하는 경우
2. Process Control Block (PCB)
운영체제가 프로세스를 관리하기 위해 참고하는 프로세스 관련 정보를 저장한 구조체
- Process State: 프로세스의 현재 상태 (New, Running, Waiting, Ready, Terminated 등)
- Program Counter: 프로세스가 다음에 실행할 명령어의 위치(주소) 저장
- CPU Registers: 프로세스 실행 중 사용된 CPU Registers 값
- CPU Scheduling Information: 프로세스의 우선순위, Time Slice 정보 등
- Memroy Management Information: 메모리 할당 정보, 페이지 테이블 정보 등
- Accounting information: 사용자 ID, 그룹 ID, CPU 사용시간 등
- I/O Status informtion: 프로세스가 사용하는 입/출력 장치, 파일 정보
- Process Identifier(PID): 프로세스 고유 ID
- Parent Process Identifier(PPID): 프로세스 생성한 부모 프로세스 ID
- Process Privileges: 프로세스의 권한
- Thread Information: 멀티 스레드 환경일 경우 프로세스에 포함된 스레드 관련 정보
- Signal Handling Information: 프로세스가 처리할 Signal
- Open File Table: 프로세스가 열어둔 파일들의 정보
- Resource Usage Information: 프로세스가 사용중인 자원(CPU, Memory 등)
3. Multi-Processing
CPU를 최대로 활용하기 위해 사용하는 기술
- 프로세스는 Single Thread of Execution 방식으로 작업을 수행
- 프로그램이 복잡해지면서 하나의 프로그램(프로세스) 내에서 Multi-Thread를 사용해야 하는 경우가 발생
- 과거에는 Multi-Process를 사용했으나 Multi-Thread가 더 효율적이라 최근에는 잘 사용되지 않음
3.1 Multi-Processing 동작 방식
- 시간을 여러 개의 Time Slot으로 나누어 프로세스를 번갈아 가면서 실행하는 방식
- 프로세스가 동시에 실행되는 것처럼 보이지만, 단일 CPU 환경에서는 시분할 방식으로 동작
- Multi-CPU, Multi-Core 환경에서는 실제 여러 프로세스를 동시에 실행 가능
3.2 Context Switch
멀티 프로세싱 환경에서 실행 중인 프로세스가 CPU를 다른 프로세스에게 양보할 때 발생하는 작업
- 실행중인 프로세스의 상태를 PCB에 저장(다음에 다시 실행될 때 작업을 이어서 진행하는데 활용)
- CPU를 양보 받은 프로세스의 상태를 복원하여 작업을 이어서 진행
- Context Switch가 자주 발생할 경우 CPU 작업을 멈추고 상태 저장/복원 작업이 진행되므로 성능 저하 발생
'CS Fundamentals > Operating System' 카테고리의 다른 글
[Operating System] Operating System의 정의 (0) | 2024.12.26 |
---|