프로세스(Process)란?
프로세스는 프로그램을 실행 시켜 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말한다. 즉, 컴퓨터에서 작업 중인 프로그램을 의미한다.
프로세스 상태
- 생성 상태(create) : 프로세스의 생성
- 준비 상태(ready) : 지금 당장 cpu를 할당받아서 실행할 수 있는 상태
- 실행 상태(running) : 프로세스가 CPU를 차지하여 명령어들 실행
- 대기 상태(blocked)
- 지금 당장 실행할 수 없는 상태(이벤트를 기다리고 있는 상태)
- 주로 입출력 장치 사용을 요청했을 때 일어남
- 입출력 작업이 완료됐을 때까지 대기상태임.
- 종료 상태(terminated) : 프로세스의 실행 종료
- 준비 -> 실행
- 디스패치 : 준비 큐 맨 앞에 있는 프로세스가 프로세서를 점유하는 것
- 다중 프로그래밍 운영체제는 실행 상태인 프로세스가 할당된 시간만큼만 프로세서를 사용하여 특정 프로세스의 독점을 방지
- 실행 -> 준비
- 운영체제는 프로세스의 독점을 방지하기 위해 인터럽트 클록(interrupt clock)을 두어 일정 시간만 점유하도록 제한
- 이 시간이 지나도 프로세서를 반환하지 않으면 클록이 인터럽트를 발생시켜 운영체제에 프로세서 제어권을 부여
- 실행 -> 대기
- 할당된 시간 이전에 실행 상태의 프로세서에 입출력 연산 또는 자원 요청 등의 문제로 프로세서를 스스로 넘기는 경우
- 대기 -> 준비
- 입출력 작업이 끝나거나 문제가 해결된다면 대기 상태에서 준비 상태가 됨
더보기
[실습:리눅스 환경]
$top > S (프로세스 상태)
R (Running) | 실행 상태 |
S (Sleeping) | 대기 상태 |
W (Waiting) | 준비 상태 |
S (Stopped) | 종료 상태 |
Z (Zombie) | 프로세스 종료 후 자원이 반환되었지만 커널 영역에 프로세스가 남아있는 상태 |
프로세스 제어 블록(PCB)와 문맥 교환(Context Switch)
프로세스 제어 블록(PCB)
: 프로세스의 실행 정보는 프로세스 제어 블록에 저장된다.
정보 | 설명 |
프로세스 식별자(Process ID) | 각 프로세스의 고유 식별자(숫자, 색인 항목) |
프로세스 상태(Process State) | 생성, 준비, 실행, 대기, 중단 등 상태 표시 |
프로그램 카운터(Program Counter) | 프로세스 실행하는 다음 명령의 주소 표시 |
CPU 스케줄링 정보 | 우선 순위, 최종 실행시각, CPU 점유시간 등 |
메모리 관리 정보 | 해당 프로세스의 주소 공간 등 |
프로세스 계정 정보 | 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등 |
입출력 상태 정보 | 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등 |
문맥 교환(Context Switching)
운영체제는 현재 실행 중인 프로세스 외의 프로세스를 실행하기 위해 메모리에 적재된 PCB를 교체하는데 이를 문맥 교환이라고 한다.
스레드
- 프로세스를 구성하는 실행 흐름의 단위
- 각기 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택
멀티 프로세스와 멀티 스레드
가장 주된 차이점은 자원 공유 여부
- 프로세스 간에는 기본적으로 자원을 공유하지 않음
- 스레드 간에는 프로세스의 자원(입출력 장치, ...)을 공유
멀티 프로세스
- 각각의 프로세스들은 각기 다른 자원으로써 실행
멀티 스레드
- 프로세스의 자원을 스레드가 공유
- 스레드가 공유하는 자원에 문제가 생기면 스레드 전체에 영향을 미침
예) 웹 브라우저 탭 기능
1. 웹 브라우저 탭 하나하나를 프로세스로 두었을 경우
- 하나의 탭에 문제 생겼을 때, 그 탭만 닫으면 됨. 다른 탭에 영향X
2. 각각의 탭을 하나의 스레드로 두었을 경우
- 하나의 탭이 잘못되면 웹 전체에 문제 생김. 다 껐다 켜야함.
프로세스 간에도 자원 공유가 가능하다!
-> 프로세스간 통신(IPC)
- 공유 메모리를 통한 통신
- 파이프를 통한 통신
- 네트워크 소켓을 통한 통신
- ...
[참고]
'스터디 > CS 스터디' 카테고리의 다른 글
운영체제 - 가상 메모리 (0) | 2025.03.17 |
---|---|
운영체제 - 동기화와 교착상태 (0) | 2025.03.14 |
운영체제 - CPU 스케줄링 (0) | 2025.03.10 |
운영체제 - 메모리 영역 (0) | 2025.03.10 |
컴퓨터 구조 - 기본, 명령어 (0) | 2025.03.02 |