- 본 글은 인프런 공룡책 운영체제 강의를 듣고 정리한 내용입니다
프로세스
프로세스란 실행중인 프로그램
프로세스가 실행되려면
- cpu 를 쓸수있어야 함
- 메모리에 올라가있어야 함
- 리소스들을 관리할 수 있어야함 (files, I/O device)
프로그램 사이즈 확인 방법
$ size ./a.out
text data bss(initialized data) dec hex filename
순으로 출력된다
프로세스의 생명주기(Life cycle)
- new : 프로세스 생성 (fork 같은게 실행된)
- Running : 프로세스를 CPU에 로딩한 상태
- Waiting : CPU 가 다른 프로세스를 실행중이라면 대기하는 상태
- I/O 대기 같은 것 (queue)
- Ready : waiting 에서 준비가 되었다는걸 알리는 상태 (queue)
- Terminated : 종료된 상태
PCB (Process Control Block) or TCB (Task Control Block)
- 프로세스가 가져야할 정보를 모두 다 저장되어있는 구조체
- 운영체제가 관리해야함
PCB 의 정보
- Process state : (new, ready 같은것)
- Program counter : 명령어들의 주소가 저장되어있음(순서대로)
- CPU register : instruction register , data register 정보들을 가지고 있음
- CPU-scheduling information
- Memory-management information : 메모리관리정보
- Accounting information : 유저 계정 정보
- I/O state information : 어떤 자원이 오픈되어잇고 등등
- Stack Pointer 등등
Process
- a program that performs a single thread of execution
Multi Processing
- 멀티 스레드가 같이 도는 것 (multi tasking)
- 여기까지는 한 프로세스에 싱글 스레드로 구성이 되어있는데 프로그램들이 복잡해지면서 싱글 스레드로는 부족해졌다
- ⇒ 스레드 라는 개념이 생겨남
멀티프로그래밍의 목적
- 동시에 여러 프로그램을 실행시켜보자
- 병렬적으로
- ⇒ CPU 사용 효율을 높이기 위해서
Time sharing 목적
- CPU 의 프로세스를 자주 교체하여 사용자가 프로그램들이 동시에 동작한다고 생각하게 하는 것
- 동작하기 위해선 CPU를 스케쥴링 해주어야함
Scheduling Queue
- 각 프로세스들이 대기열에 대기하고 있다가 차례대로 실행되는 것
- ⇒ ready queue
- ready → running → 다시 ready 로 가는 경우도 있지만 waiting 으로 가는 경우가 있음 ( I/O completion 을 기다림 → 끝나면 ready로 감)
- linked list 로 구현 가능 (레디큐 밑엔 다 waiting queue)
Queueing Diagram
Context Switch (PCB 정보를 뜻함)
- Context(문맥) 교환을 OS가 해주어야함
- interrupt 가 일어났을 때 실행중이던 process 의 context 를 저장(PC, Progam Count : 어디까지 실행했는지)하고 다시 실행되었을때 다시 context 를 가져오는 것
- 현재 실행중인 프로세스의 상태를 저장하고 새로 실행하는 프로세스의 상태를 가져오는 것
부모프로세스와 자식프로세스
- 부모프로세스와 자식프로세스가 동시에 실행되는 경우, 부모가 wait 하는 경우 두가지
- 부모프로세스와 코드가 같으면 굳이 두개를 만들 필요가 없기 때문에 PCB만 새로 만들고, 주소를 복사하여 실행위치만 다르게 진행될 수 있다
좀비 프로세스와 고아 프로세스
- 좀비 프로세스 : 자식 프로세스 생성 후 부모프로세스가 wait 을 안하고 신경을 안쓰는 경우(daemon)
- 고아(orphan) 프로세스 : 자식 프로세스 생성 후 부모 프로세스가 wait을 하지 않고 부모 프로세스가 종료된 경우
'운영체제' 카테고리의 다른 글
06. 프로세스간 통신의 실제 (0) | 2021.09.06 |
---|---|
05. 프로세스간 통신 (0) | 2021.09.05 |
04. 프로세스의 생성 (0) | 2021.09.04 |
02. 운영체제의 개념과 구조 (0) | 2021.09.02 |
01. 운영체제 기초 (0) | 2021.09.01 |