2022. 4. 14. 02:26ㆍCS/운영체제
Process
프로그램을 실행할 때 하드웨어 리소스는 프로그램에 할당된다.
프로그램은 메모리에 적재되고, 이 프로그램의 코드가 CPU에 의해서 동작한다.
프로그램 실행은 프로세스를 호출한다.
Definition
1. 프로그램을 실행하면 생기는 인스턴스
2. CPU 자원을 두고 경쟁함. (CPU 스케쥴링의 후보자들과, CPU 스케쥴링은 프로세스 후보 중 구현 방식에 따라 CPU의 자원을 할당.)
3. 메모리속에 존재.
프로그램이 실행될 때 새로운 프로세스는 만들어진다.
Process State
1. running
cpu에 의해 실행됨.
2. ready
cpu에게 할당을 받는다면 즉시 run이 될 수 있는 상태.
cpu 스케쥴링의 후보
3. block
일부 event를 기다리고 있으므로 cpu가 자동적으로 해제된다.
event가 발생하기전에 실행이 계속될 수 있다.
event가 발생한다면, ready 상태로 바뀌게 된다.
CPU 스케쥴링의 후보가 아니다. (기다리고 있는 이벤트가 언제 발생할지 모름)

block 상태와 ready 상태가 별개로 존재하는 이유 :
CPU가 I/O 작업을 할 때 CPU를 반납함. 디스크 IO 작업은 CPU 처리 속도에 비해 느리기 때문에
작업이 완료될 때까지 blcok 상태임. 완료되면 인터럽트 발생을 시켜서 ready 상태가 됨.
1. 높은 CPU의 활용도 : 블락 상태의 프로세스에게 CPU 자원을 주지 않아서 활용도가 높아짐.
2. block 프로세스가 CPU를 가진다면 쓸모없음 : cpu를 할당해도 event가 발생하기 전에는 코드가 진행되지 않음.
Process Address Space

메모리 안의 프로세스 공간
1. Code segment
프로그램의 코드를 저장한다.
읽기만 가능. (프로그램의 코드를 수정할 필요가 없음)
코드는 변하지 않기 때문에 같은 프로그램의 여러 프로세스가 동시에 한 코드 영역을 이용. (메모리 사용량을 줄임)
2. Data Segment
전역 변수와 같은 프로그램의 데이터를 저장한다.
읽고 쓰기 가능. (데이터를 수정)
3. Stack Segment
함수 호출 정보와 함수 안에 있는 지역 변수를 저장한다.
읽고 쓰기 가능. (변수의 값 수정)
함수의 실행은 스택 구조로 되어 있음.

4. Heap
동적 할당. 원할 때 메모리 할당. 필요 없을 때 해제. 메모리를 효율적으로 사용.
지역 변수보다 오래 사용할 수 있음.
읽고 쓰기 가능.
Multi Programming
두 가지 프로세스 이상의 실행 되는 컴퓨팅 환경에서 CPU를 공유하는 것.
이를 Process Management라고 한다. 예를 들면 CPU scheduling.
OS는 실시간 프로세스와 각 프로세스 상태를 추적해야 함
Process Management
공정하고 효과적인 CPU 스케쥴링. (실시간 프로세스들, 프로세스 상태, 중요도, 위치..)
프로세스를 서로에게서 보호. 프로세스들을 서로 동기화. 통신, 메모리 할당.
위를 어떻게 하느냐. 프로세스 메타데이터를 통해서.
메타데이터란?
도서관으로 치면 책의 내용이 아닌 책에 관련된, 책을 특정할 수 있는 데이터들. (위치, 제목, 저자 등..)
프로세스의 메타데이터는 어떤 정보를 저장하고 있을까?
Process ID, Process State, Process Priority, CPU registers, Owner,
CPU Usage, Memory Usage, Location of process address space etc..
ex) PCB (Process Control Block) .. 운영체제 마다 이름이 다름(이 교재에서는 micro os2).
일단 Process Management를 찾으면 우리는 프로세스들의 모든 정보를 알 수 있음.
어떻게 실시간 프로세스들을 추적할 수 있을까?
양방향 linked list로 구현되어 있음.
프로세스가 만들어질 때, PCB는 만들어지고 PCB header와 연결된다.
프로세스가 종료되면, PCB는 연결이 해제되고 소멸한다.

어떻게 CPU 스케쥴링을 할까?
모든 ready 상태의 processe의 PCB들의 linked list가 존재.
프로세스가 ready가 되면, PCB는 ready PCB header와 연결이 된다.
process가 block이나 종료될 때 이 PCB와 연결이 해제 됨.
'CS > 운영체제' 카테고리의 다른 글
| LRU 구현하기 (0) | 2022.05.17 |
|---|---|
| 순환 리스트로 구현한 라운드 로빈 스케쥴러 (C언어) (0) | 2022.05.17 |
| OS : CPU Scheduling & Context Switch (microC/ OS-2) (0) | 2022.04.14 |
| OS : 프로세스 구현 (microC/ OS-2) (0) | 2022.04.14 |
| OS : Thread (microC/ OS-2) (0) | 2022.04.14 |