목차
프로세스
Context
- 프로세스의 상태 및 환경 정보
- Program Counter: 다음 실행할 명령어 주소 저장(in memory)
- 각종 레지스터
- 프로세스 상태: CPU, memory etc. 자원 얼마나 사용중인지 등에 대한 상태 정보
- Windows는 PCB가 컨텍스트를 관리한다.
- 프로세스 관련 커널 자료 구조
- PCB(Process Control Block)
- PCB는 이 정보를 저장하고 관리하는 역할
- 프로세스마다 PCB를 가지고 있음
- PCB에 저장되는 정보
- 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
- 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
- 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
- CPU 레지스터
- CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
- 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
- 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
- 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등
- Kernel Stack
- PCB(Process Control Block)
- 프로세스의 주소 공간
- code, data, stack
프로세스 상태
- New: 프로세스가 생성중인 상태
- Terminated: 실행이 끝난 상태
※리눅스에서는 priority(우선순위)가 있어서, 그걸로 프로세스에게 자원을 할당한다.
Timer interrupt를 발생시켜 문맥교환
프로세스를 스케줄링하기 위한 큐
운영체제는 작업들을 모두 Queue에 넣고 관리한다.
- blocked된 Queue에 있는 것은 CPU를 주지 않는다. Ready Queue에 있는 프로세스부터 CPU를 준다.
- blocked된 Queue가 Ready Queue가 되었을 때, 인터럽트를 발생시켜 CPU를 사용할 수 있도록 한다.
- Job queue
- 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready queue
- 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device queues
- I/O Device의 처리를 기다리는 프로세스의 집합
프로세스들은 각 큐들을 오가며 수행된다.
공유데이터
- 프로세스 끼리 공유해서 쓰는 데이터
- 한 프로세스가 데이터를 쓰고 있어서, 다른 프로세스가 Blocked된 상태
문맥 교환(Context Switch)
- CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
- 절차
- CPU를 건네주기 전, 어디까지 명령어 실행했는지 프로세스의 상태를 PCB에 저장
- CPU를 새롭게 얻는 프로세스는 자신의 PCB를 보고 실행했던 데부터 다시 실행
문맥 교환 사례
- 문맥 교환 아님! 사용자 프로세스가 달라지지 않았음
- 사용자 프로세스 A로부터 B로 CPU가 넘어갔으니 문맥교환 일어남!
(1)의 경우에도 CPU 수행 정보 등 Context의 일부가 달라졌으므로 PCB의 변경이 일어나긴 하지만, (2)의 오버헤드(시간,자원 etc.) 더 크므로 (2)를 문맥교환이라 부른다.
프로세스 스케줄링 큐의 모습
'운영체제(OS) & Network' 카테고리의 다른 글
케이블의 종류와 연결 방식 및 주소(address) (1) | 2023.09.18 |
---|---|
메모리 (0) | 2023.09.18 |
쓰레드(Thread) (0) | 2023.09.14 |
스케줄러(Scheduler) (0) | 2023.09.13 |
프로세스(Process) (2) (0) | 2023.09.13 |