1. 프로세스 개요
> 프로세스들은 돌아가며 한정된 시간 만큼만 CPU 이용
- 타이머 인터럽트가 발생하면 차례 양보.
1) 프로세스 제어블록(= PCB)
- 빠르게 번갈아 수행되는 프로세스들을 관리
- 이를 위해 사용하는 자료구조가 프로세스 제어블록(PCB)
- 프로세스 관련 정보를 저장하는 자료구조
- 상품에 달린 태그와 같은 정보
- 프로세스 생성 시 커널 영역에 생성, 종료 시 폐기
> PCB에 담기는 대표적인 정보
- 프로세스 ID (=PID) : 특정 프로세스를 식별하기 위해 부여하는 고유한 번호
- 레지스터 값 : 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원 => 실행 재개
- 프로세스 상태 : 입출력 장치 사용 대기 상태, CPU 사용 대기 상태 등등
- 메모리정보 : 프로세스가 어느 주소에 저장되어 있는지에 대한 정보 (페이지 테이블 정보)
- CPU 스케줄링 정보 : 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보
- 사용한 파일과 입출력장치 정보
2) **문맥교환
Q. 한 프로세스에서 다른 프로세스로 실행 순서가 넘어가면?
A. 기존에 실행되던 프로세스는 지금까지의 중간 정보를 백업
- 프로그램 카운터 등 각종 레지스터 값, 메모리 정보, 열었던 파일, 입출력장치 등
- 이러한 중간정보를 '문맥'
- "실행 문맥을 백업해두면 언제든 해당 프로세스의 실행을 재개할 수 있다"
=> 기존의 실행중인 프로세스 문맥을 백업하고 새로운 프로세스 실행을 위해 문맥을 복구하는 과정을
'문맥 교환' 이라 한다.
3) 프로세스의 메모리 영역
- 코드, 데이터, 스택, 힙 영역
(1) 코드
- 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
- 데이터가 아닌 CPU가 실행할 명령어가 담기기에 쓰기가 금지된 영역(read-only)
(2) 데이터
- 프로그램이 실행되는 동안 유지할 데이터 저장 (ex.전역 변수)
(3) 스택
- 데이터가 일시적으로 저장되는 공간
- 잠깐 쓰다가 말 값들이 저장되는 공간 (ex. 매개변수, 지역변수)
(4) 힙
- 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장공간
+ 힙영역과 스택영역의 크기는 가변적
- 일반적으로 힙영역은 낮은주소 -> 높은주소로 할당
- 일반적으로 스택영역은 높은주소 -> 낮은주소로 할당
2. 프로세스 상태와 계층 구조
1) 프로세스 상태
(1) 생성상태
- 이제 막 메모리에 적재되어 PCB를 할당 받은 상태
- 준비가 완료되었다면 준비상태로
(2) 준비상태
- 당장이라도 CPU를 할당받아 실행할 수 있지만 자기 차례가 아니기에 기다리는 상태
- 자신의 차례가 된다면 실행상태로 (=디스패치)
(3) 실행상태
- CPU를 할당받아 실행중인 상태
- 할당된 시간 모두 사용 시 준비상태로
- 실행도중 입출력장치를 사용하면 입출력 작업이 끝날때까지 대기 상태로
(4) 대기상태
- 프로세스가 실행 도중 입출력장치를 사용하는 경우
- 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듬
- 입출력 작업이 끝나면 준비 상태로
(5) 종료상태
- 프로세스가 종료된 상태
- PCB, 프로세스의 메모리 영역 정리
2) 프로세스 계층 구조
- 프로세스 실행 도중 (시스템 호출을 통해) 다른 프로세스 실행 가능
- 새 프로세스를 생성한 프로세스 : '부모 프로세스'
- 부모 프로세스에 의해 생성된 프로세스 : '자식 프로세스'
+부모 프로세스와 자식 프로세스는 별개의 프로세스이므로 다른 PID를 가짐
+일부 운영체제는 자식프로세스 PCB에 부모 프로세스 PID 명시하기도 함
- 자식 프로세스는 또 다른 자식 프로세스를 낳을 수 있음
-> 프로세스의 계층적인 구조 형식
3. 스레드
: 프로세스를 구성하는 실행 흐름의 단위
스레드의 구성요소
: 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보
'CS 공부' 카테고리의 다른 글
[CS] {운영체제} 동기화 (0) | 2025.04.22 |
---|---|
[CS] {운영체제} CPU 스케줄링 (0) | 2025.04.21 |
[CS] {운영체제} 운영체제란? (0) | 2025.04.16 |
[CS] {컴퓨터 구조} 입출력장치 (1) | 2025.04.15 |
[CS] {컴퓨터 구조} 보조기억장치 (0) | 2025.04.13 |