일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백엔드
- 웹
- kubernetes
- 리액트
- 자바스크립트
- next.js
- CSS
- 가상화
- es6
- HTML
- 컴퓨터공학
- 이더리움
- 타입스크립트
- 알고리즘
- AWS
- TypeScript
- 프론트엔드
- VUE
- 파이썬
- 이슈
- 백준
- JavaScript
- docker
- k8s
- 클라우드
- BFS
- 솔리디티
- 블록체인
- react
- 쿠버네티스
Archives
- Today
- Total
즐겁게, 코드
운영체제 - 03. 프로세스 관리 본문
이 글은 한국기술대학교 컴퓨터공학부의 OS 공개강의를 시청한 후 정리한 내용입니다.
목차
- 프로세스의 개념
- PCB (Process Control Block)
- 프로세스의 상태
- 인터럽트
- 컨텍스트 스위칭
1. 프로세스의 개념
작업 (Job) / 프로그램 (Program)
- 실행할 프로그램 + 데이터
- 컴퓨터 시스템에 실행을 요청하기 전의 상태
프로세스
- 실행을 위해 시스템(커널)에 등록된 작업
- 시스템 성능 향상을 위해 커널에 의해 관리됨.
⇒ 작업(Job)을 요청해 커널에 등록되면 이를 프로세스라 함.
1. 1. 프로세스의 정의
- 실행중인 프로그램 (커널에 등록되고, 커널의 관리를 받는 작업)
- 각종 자원을 요청하고 할당받을 수 있는 객체
자원의 개념
- 커널의 관리 하에 프로세스에 할당/반납되는 수동적 객체
자원의 종류
- SW : Message, Signal, filed, installed SW
- HW : Processor, Memory, disk, monitor, keyboard
⇒ "자원" 이라 하면, 주로 프로세서와 메모리를 의미하게 되는듯?
2. Process Control Block (PCB)
- 커널 공간 내에 존재
- OS가 프로세스를 관리하기 위해 필요한 정보를 저장함.
- 프로세스 생성 시 생성됨
2. 1. PCB가 관리하는 정보
- PID : Process Identification Number (프로세스 고유 식별 번호)
- 스케줄링 정보 (프로세스 우선순위)
- 프로세스 상태 (자원 할당상태, 요청 정보 등)
- 메모리 관리 정보 (Page table, Segment Table 등)
- 입출력 상태 정보 (할당받은 입출력 장치 등)
- 컨텍스트 저장 정보 (프로세스의 레지스터 상태를 저장하는 공간)
- 계정 정보
→ PCB의 정보는 OS마다 다르며, PCB 참조 및 갱신 속도는 OS 성능을 결정하는 중요한 요인이다.
3. 프로세스의 상태
프로세스의 상태는 프로세스 - 자원 간의 상호작용을 통해 결정된다.
※ 프로세스 상태 변경도
3. 1. Created State
- 작업을 커널에 등록하는 단계
- PCB 할당 및 프로세스를 생성한다.
- 커널 : 가용 자원(메모리 공간) 체크 후, 프로세스 상태를 변경한다.
- 할당할 메모리가 있을 경우 - 프로세스 상태를 Ready 로 변경
- 할당할 메모리가 없을 경우 - 프로세스 상태를 Suspended Ready 로 변경
3. 2. Ready State
- 프로세서 외의 모든 자원을 할당받은 상태
- 프로세스 할당 대기 상태 (즉시 실행 가능 상태)
3. 3. Running State
- 프로세서와 필요한 자원을 모두 할당받은 상태
- Running 상태가 끝나는 두 가지 상황
- Preemption (프로세서 선점)
- 프로세서 스케줄링에 의해 타임아웃이 발생하거나 우선순위가 변경될 수 있음.
- 이 경우 작업을 처리할 프로세서가 없기 때문에 Ready State 로 변경됨.
- Block / Sleep (I/O가 끝날 때까지 대기)
- Running State => Sleep State로 변경
- I/O 등 자원 할당을 요청함.
- Preemption (프로세서 선점)
3. 4. Block / Sleep State
- 프로세서 외에 다른 자원을 기다리는 상태
- 자원 할당은 System Call에 의해 이루어짐.
3. 5. Suspended State
- 메모리를 할당받지 못한 상태
- ready 상태에서 메모리를 빼앗기면 suspended ready
- sleep 상태에서 메모리를 빼앗기면 suspended sleep
- 메모리를 빼앗겨 suspend 상태로 들어가는 것을 swap-out, 메모리를 부여받는 것을 swap-in 이라 부른다.
- 메모리를 할당받으면 원래 상태로 복귀한다!
3. 6. Terminated State / Zombie State
- 프로세스 수행이 끝난 상태
- 모든 자원을 반납한 후, 커널 내에 일부 PCB 정보만 남아있는 상태 (이후 프로세스 관리를 위해).
4. 인터럽트
- 예상치 못한, 외부에서 발생한 이벤트
- 인터럽트의 종류
- I/O 인터럽트 (가장 대표적임, 프로세서가 예상하지 못한 순간에 입력이 들어올 때 / 파이썬에서도 가끔 보임)
- Clock 인터럽트
- Console 인터럽트
- Program Check 인터럽트
- Machine Check 인터럽트
- Inter-Process 인터럽트
- System call 인터럽트
4. 1. 인터럽트 처리 과정
- 간단하게, 인터럽트가 발생하면 일단 멈추고 이유를 물어본다. ("야, 왜 쳤어? 일단 이유나 들어보자")
- 이후, Context Saving 을 통해 실행 중의 상황을 PCB에 저장한다.
- 프로세스를 중단하면, 이후 Ready 상태에 있던 프로세스 중 하나를 프로세서에 올린다.
- 인터럽트 대응이 끝나면 Context Restore를 마친 후, 다시 Ready 상태로 큐에 올려놓는다.
5. Context Switching (컨텍스트 교환)
Context
- 프로세스와 관련된 정보들의 집합
Context Saving
- 현재 프로세스의 Register context를 저장하는 작업
Context Restoring
-
Register Context를 프로세스로 복구하는 작업
Context Switching
- 실행중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일 (= Saving + Restoring)
Context Switch Overhead
- Context Switch에 소요되는 비용
- OS마다 다름
- OS의 성능에 큰 영향을 줌
- 항상 불필요한 Context Switching을 줄이는 것이 좋음. (쓰레드 최적화)
반응형
'🖥 컴퓨터공학 > 운영체제' 카테고리의 다른 글
운영체제 - 05. 프로세스 스케줄링 上 (0) | 2021.04.23 |
---|---|
운영체제 - 04. 스레드 관리 (0) | 2021.04.17 |
운영체제 - 02. 운영체제 개요 (0) | 2021.04.07 |
운영체제 - 01. 컴퓨터 시스템의 이해 (0) | 2021.04.06 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆