학습 내용
프로그램 : 파일 시스템에 실행파일 형태로 존재하는 것
프로세스 : 프로그램이 운영체제로 부터 자원을 할당받고 실행중인 프로그램이다.
프로세스는 운영체제로 부터 독립적 공간인 Virtual Memory 를 할당 받는데, 0번째 주소부터 시작한다.
Virtual Memory 는 Code, Data, Stack 으로 구성된다.
커널 주소 공간의 내용
- Code
- 시스템콜, 인터럽트 처리 코드
- 자원 관리를 위한 코드
- 편리한 서비스 제공을 위한 코드
- Data
- 프로세스들을 관리하기 위한 자료구조
- 하드웨어를 관리하기 위한 자료구조
- Stack
사용자 프로그램이 사용하는 함수
프로세스
- 프로세스의 문맥
- CPU 의 수행 상태를 나타내는 하드웨어 문맥
- Program Counter
- 각종 Register
- 프로세스의 주소 공간
- 프로세스 관련 커널 자료 구조
프로세스의 상태
PCB (Process Control Block)
https://byjus.com/gate/process-control-block-notes/
- 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
- 커널의 data 영역에 존재한다
- 구성요소
- OS가 관리상 사용하는 정보
- Process State, Process ID
- scheduling information, priority
- CPU 수행 관련 하드웨어 값
- Program counter, registers
- 메모리 관련
- code, datat, stack 의 위치 정보
- 파일 관련
문맥 교환
- CPU 를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
- CPU 가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
- CPU 를 내어주는 프로세스의 상태를 그 프로세스의 PCB 에 저장
- CPU 를 새롭게 얻는 프로세스의 상태를 PCB 에서 읽어옴
- 주의
- 시스템 콜이나 인터럽트 발생시 반드시 문맥교환이 발생하는 것은 아니다.
문맥교환 X
사용자 프로세스 A → ISR 또는 시스템 콜 함수 → 사용자 프로세스 A
문맥교환 O
사용자 프로세스 A → ISR 또는 시스템 콜 함수 → 사용자 프로세스 B
프로세스를 스케줄링하기 위한 큐
https://www.guru99.com/process-scheduling.html
- 운영체제는 프로세스를 큐에 넣고 스케줄링한다.
- 큐 종류
- Job queue : 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready queue : 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device queue : I/O device 의 처리를 기다리는 프로세스의 집합
- 프로세스들은 각 큐들을 오가며 수행된다.
스케줄러
운영체제가 메모리 관리를 위한 작업
- Long-term scheduler
- 시작 프로세스 중 어떤 것들을 ready queue 로 보낼지 결정
- 프로세스에 memory 를 주는 문제
- time sharing system 에는 보통 장기 스케줄러가 없음 (무조건 ready)
- Short-term scheduler
- 어떤 프로세스를 다음번에 running 시킬지 결정
- 프로세스에 CPU를 주는 문제
- 충분히 빨라야 함
- Medium-term scheduler
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
- 프로세스에게서 memory 를 뺏는 문제