티스토리 뷰

📌 프로세스 

 

📝 프로세스란?

- 실행중인 프로그램. 

- 디스크에 저장된 실행 파일이 메모리에 적재될 때 비로소 프로세스가 된다. 

 

 

📝 메모리 상에서의 프로세스 (프로세스의 주소 공간)

 

프로세스의 주소 공간은 크게 4 세션으로 구분된다. 

텍스트 세션 : 실행코드

데이터 세션 : 전역 변수

힙 세션 : 프로그램 실행 시 동적으로 할당되는 메모리

스택 세션 : 함수 호출 시 임시 데이터 저장 (함수 매개변수, 반환 주소, 지역 변수)

 

💡 힙 영역 ? Heap 
사용자가 관리할 수 있는, 관리해야하는 힙 영역. 
ex. 대용량 다운로드 사례가 발생하면,heap 영역에서 개발자는 메모리 영역을 크게 설정하여 OOM(out of memory)를 막을 수있음. 

 

 

📝 프로세스 상태 별 설명 

 

new : 프로세스 생성 중

running : 명령어들이 실행 중

waiting : 프로세스가 어떤 사건이 일어나기를 기다림

ready : 프로세스 처리기에 할당 되기를 기다림

terminated : 프로세스 실행이 종료 

 

 

 

📝 프로세스는 운영체제에서 프로세스 제어 블록(Process Control Block, PCB) 에 의해 표현됨. 

 

Process state : 프로세스 상태, New, Ready, Running, Waiting 

Program counter : 프로세스가 다음에 실행할 명령어 주소

cpu register : 누산기, 인덱스 레지스터, 스택 레지스터 등 

-> 인터럽트 일어나면 그 전에 진행중인 일들 저장. 

memory limits : 기준 레지스터와 limit 레지스터의 값, 페이지 테이블, 세그먼드 테이블

list of open files : cpu가 할일들 .. 

스케쥴링 큐.. 등 

 

 

 

 

 

 

📌 프로세스 스케쥴링 

 

OS의 목적은 CPU가 놀지 않도록 스케쥴링하는게 중요함. 

그래서 프로세스 스케쥴러는 CPU에서 실행가능한 여러 프로세스들 중에서 하나의 프로세스 선택.

 

⭐️ 스케쥴링 큐 

프로세스가 시스템에 들어오면 Job Queue에 적재. 

준비 완료 상태에서 실행에 대기하는 프로세스들은 Ready Queue에 적재. 

특정 입출력 장치를 대기하는 프로세스들의 리스트는 Device Queue(I/O Queue)에 적재. 

 

 

ready Queue와 다양한 device Queue

 

프로세스 스케쥴링을 표현한 다이어그램

 

새로운 프로세스는 ready queue에서 대기.

 

프로세스들은 다양하게 처리됨. 

- 입출력

- 시분할

- 자식프로세스 생성

- 인터럽트 때문에 대기되기도

이 과정 반복되거나 끝나거나.. 

 

 

 

 

📝 프로세스 스케쥴러 종류

 

단기 스케쥴러

- 계속 프로세스 선택되 몇 초 단위로 실행

- ready queue에 있는 프로세스들 중 어떤걸 실행할지 고름.

- CPU 스케쥴러

 

중기 스케쥴러 

- 메모리에서 프로세스들을 제거, 혹은 완화하여 장기 스케쥴러와 단기 스케쥴러의 일을 적절하게 분배하도록 함. 

- 몇 분 단위로 발생 

- 스와핑 (Swapping) 수행. 

 

장기 스케쥴러

- 잡 스케쥴러 : 하드웨어에서 메모리로 프로세스 로드하는 역할

- 실행빈도 낮음

- 메모리상의 프로제스 수를 제어

- 입출력 중심 + CPU 중심 적절한 혼합 중요. 

 

 

 

📌 컨텍스트 스위칭 

 

인터럽트 개념 다시 등장 

인터럽트는 운영체제가 CPU를 현재 작업에서 빼앗아 커널 루틴을 실행할 수 있게 함.

종료 후 본래 작업 중이던 프로세스를 재개함. 

 

💡 그러면 재개하려면?

어떤 값을 저장해야할까? -> 실행 중이던 프로세스의 문맥 (context)

어느 곳에 저장해야할까? -> PCB

이 작업의 명칭은 -> 컨텍스트 스위칭 

 

문맥 (context) 

- CPU 레지스터 값, 프로세스의 상태, 메모리의 관리 정보 등을 포함. 

 

컨텍스트 스위치가 진행될 동안의 시스템

- 시스템은 그동안 유용한 일을 하지 못함. 

- 컨텍스트 스위치의 소요 시간은 순수한 오버헤드