운영체제(OSTEP)

OSTEP 4장

woohap 2024. 10. 8. 00:00

프로세스

일반적으로 프로세스는 실행 중인 프로그램으로 정의

**
프로그램 - 디스크 상에 존재, 실행을 위한 명령어와 정적 데이터의 묶음
운영체제는 CPU를 가상화하여 CPU가 여러 개 존재한다는 환상을 제공한다.
- 문맥교환을 통한 동시성 구현을 통해 CPU 가상화를 실현

**
시분할 기법
하나의 프로세스를 실행하고 중단 후 다른 프로세스를 실행하는 것을 반복 -> 여러 CPU가 존재한다는 환상을 줌
- CPU를 공유하기 때문에, 각 프로세스의 성능은 낮아짐 

** 
문맥교환 
- CPU에서 프로그램 실행을 잠시 중단하고 다른 프로그램을 실행하는 것
- 현재 실행 중인 프로세스의 PCB를 준비큐 혹은 대기큐에 저장하고, 준비큐에서 우선순위가 높은 프로세스의
PCB를 CPU에 적재하는 것을 의미

메커니즘과 정책

**
메커니즘 - How // 할 수 있는 것 
- 필요한 기능을 구현하는 방법이나 규칙을 의미 
- 프로세스 생성, 메모리 할당, 파일 시스템 구조 등
- 문맥교환, 시분할은 메커니즘

**
정책 - what // 해야 할 것 
- 어떤 결정을 내리기 위한 알고리즘 
- 운영체제가 지금 당장 어는 것을 선택해야하는가 
- 어떤 프로세스에 CPU를 할당, 얼마나 많은 메모리를 각 프로세스에 줄지
- 라운드 로빈, 우선순위 기반 등이 정책

공간분할

시분할과 대응되는 개념
개체에게 공간을 분할해주는 것을 의미

** 대표적인 공간분할 자원이 디스크 
메모리 
- 프로세스를 구성하는 요소 중 하나는 메모리
- 프로세스의 하드웨어 상태 중 가장 중요한 구성 요소 
- 레지스터도 하드웨어 상태를 구성하는 요소 중 하나 
- PC, SP 레지스터에 하드웨어 상태가 저장됨 // 레지스터는 하드웨어 상태를 구성하는 요소 중 하나

프로그램 실행

**
프로그램은 보조 기억 장치에 실행 파일 형식으로 존재 

** 
1. 프로그램을 실행하기 위해서는 프로그램 코드와 정적 데이터를 메모리(프로세스의 주소 공간)에 탑재되야 함
- 코드와 정적 데이터 탑재
2. 일정량의 메모리를 스택 용도로 할당 후 초기화
3. 일정량의 메모리를 힙 용도로 할당 후 초기화
4. 입출력과 관련된 초기화 작업 수행 // Ex) 파일 디스크립터 0, 1, 2(표준 입출력 및 에러)
5. 함수에서 프로그램 실행 // 프로그램 시작 지점 (entry point)

과거 프로그램은 모든 프로그램 코드와 정적 데이터를 메모리에 모두 올림
- 프로그램이 메모리 보다 크면 실행 못하는 문제 발생
- 프로그램의 필요한 부분만 메모리에 탑재하여 해결 // 요구 페이징 기법

프로세스 상태

실행(Running) : 실행 상태에서 프로세스는 프로세서에서 실행 중. 즉 프로세스는 명령어를 실행 중
준비(Ready) : 준비 상태에서 프로세스는 실행할 준비가 되어 있지만 운영체제가 다른 프로세스를 실행하고 있는 등의 이유로 대기 중 
대기(Blocked) : 프로세스가 다른 사건을 기다리는 동안 프로세스의 수행을 중단시키는 연산
Ex) 프로세스가 디스크에 대한 입출력 요청 -> 프로세스는 입출력 완료될 때까지 대기 상태가 됨 
- 이 때 다른 프로세스가 실행 상태가 될 수 있음

실행 -> 준비 : 프로세스가 나중에 다시 스케줄 될 수 있는 상태
실행 -> 대기 : 요청 완료 등의 이벤트가 발생할 때까지 대기하는 상태 
- 이벤트 발생 시 준비 상태가 됨 

**
운영체제는 '프로레스 리스트'라는 자료구조를 이용하여 실행 중인 프로그램을 관리 (프로세스 상태 파악)
이 자료구조를 구성하는 것을 PCB(프로세스 제어 블록)라 부른다.

레지스터 문맥 자료구조

레지스터 자료구조는 프로세스가 중단되었을 때 해당 프로세스의 레지스터값들을 저장한다.
나중에 프레세스 실행을 재개할 때, 이 레지스터값들을 복원한다.

****
PCB의 주소를 준비큐 혹은 대기큐에 저장하고 있음

'운영체제(OSTEP)' 카테고리의 다른 글

OSTEP 16장  (0) 2024.10.31
OSTEP 14장  (0) 2024.10.19
OSTEP 8장  (0) 2024.10.11
OSTEP 6장  (0) 2024.10.10
OSTEP 5장  (0) 2024.10.09