OS

[OS] 정리2

Binceline 2018. 9. 23. 14:46

Program이란, 디스크에 존재하며 명령들의 리스트를 포함하고 있는 파일


Process

- Process란 Program과 Program Counter를 의미한다. 프로그램이 메모리에 올라가면 프로세스가 된다.

- Code(TexT) / Data / Stack / Heap / Program Counter로 구성되어 있다.

- Data : 전역변수 / Static 변수가 저장됨

- Stack : 임시 변수 - 지역변수 및 함수 매개변수, 리턴값


Process State

- new : 프로세스가 생성됨

- ready : CPU에 할당되기를 기다림

- running : 명령들 실행중

- waiting : Event 발생 기다림

- terminated : 실행 종료됨


PCB(Process Control Block)

- 프로세스 관련 정보를 포함

- 프로세스 상태

- 프로세스 번호

- PC

- CPU Registers

- CPU 스케줄링 정보

- 메모리 관리 정보

- I/O 상태 정보


프로세스 스케줄링

- CPU를 최대한 효율적으로 사용하기 위한 전략

- Time Sharing : 사용자가 각 프로그램을 실행하는 동안 상호작용을 할 수 있도록 프로세스간에 CPU를 전환하는 것

- Uni-Processor 시스템은 프로세스를 하나만 가질 수 있음

- 프로세스가 여러개라면, 실행 중인 프로세스를 제외한 나머지는 CPU를 사용 가능할 때까지 대기해야 하며, Reschedule될 수 있음



프로세스 스케줄링 Queue

- Job queue : 시스템의 모든 프로세스 집합

- Ready queue : RAM에 상주하며, waiting, ready 상태의 프로세스 집합

- Device queue(I/O Queue) : I/O Device를 기다리는 프로세스 집합


Schedulers

- Long-Term 스케줄러(Job 스케줄러) : 디스크로부터 Main Memory 상의 ready_queue로 옮길 프로세스 선택(디스크 -> 메인메모리)

- Short-Term 스케줄러(CPU 스케줄러) : ready_queue의 프로세스 중 다음에 실행할 프로세스를 선택하고 CPU 할당(메인메모리 -> CPU)

- Long-Term 스케줄러는 드물게 수행된다(초 or 분 단위)

- Short-Term 스케줄러는 자주 호출된다(밀리 초)


CPU Burst time : CPU 작업수행시간

I/O Burst time : I/O 요청에 대한 응답 대기시간


Long-Term 스케줄러

- I/O Bound Process : 수행 속도가 I/O 시스템의 속도에 의해 제한되는 프로세스 / 짧은 CPU 버스트를 가짐

- CPU Bound Process : 수행 속도가 CPU 속도에 의해 제한되는 프로세스 / 적은 수의 매우 긴 CPU 버스트를 가짐


Medium-Term 스케줄러

- Swapping을 이용 : 때로는 사용하지 않는 프로세스를 메인 메모리에서 디스크로 옮기고(Swap-Out), 나중에 해당 프로세스를 디스크로부터 메인 메모리에 다시 올려서(Swap-In) 실행을 지속할 수 있다.


Context Switch

- CPU가 다른 프로세스로 전환할 때, 이전 프로세스의 상태를 저장하고 새 프로세스의 저장된 상태를 로딩해야 한다.

- Process의 Context(CPU Registers, 프로세스 상태, 메모리 관리 정보 등)는 PCB에 저장되어 있다.

- 스위칭은 부하가 있는 작업이다. 일반적으로 스위칭하는 데에 몇 밀리초가 걸리지만, 이는 하드웨어에 따라 다르다.


Process 생성

- 부모 프로세스가 자식 프로세스를 만드는 형태이고, 이는 Tree로 구현된다.

- process id로 관리됨

- 자원 공유 옵션

- 부모 / 자식 프로세스는 모든 자원을 공유한다.

- 부모 자원의 일부만 공유한다

- 공유하지 않는다.

- 실행 옵션

- 부모 / 자식 프로세스는 동시에 실행된다.

- 부모는 자식 프로세스가 종료될 때까지 대기한다.

- 주소공간 옵션

- 자식 프로세스는 부모 프로세스의 복사본이다

- 로드될 프로그램을 가지고 있다


Zombie 프로세스

- 종료되었지만 Process Table에 남아 있는 프로세스. 보통 exit() 함수를 호출하면서 프로세스를 종료시키고, 모든 자원을 해제시킨다. 그러나 프로세스의 exit 상태와 pid가 여전히 남게 된다. 이렇게 남겨 두는 이유는, 부모 프로세스에서 자식 프로세스의 종료 상태까지 확인할 수 있도록 하기 위함이다.  


(IPC는 따로 공부하자)

IPC(InterProcess Communication) : 프로세스 간 통신

- Cooperating 프로세스

- Independent 프로세스는 다른 프로세스에게 영향을 주거나 받을 수 없는 프로세스를 말한다. 그 반대를 바로 Cooperating 프로세스라 한다.

- 정보 공유, 계산속도 향상, 편리함.

- 공유 메모리 : 자원 공유

- Message Passing : 동기화 목적


Socket

- 통신을 위한 Endpoint

- IP 주소와 Port 번호를 붙여 사용

- 통신은 두 소켓 사이의 작용





반응형

'OS' 카테고리의 다른 글

Context Switching에서의 Thread와 Process의 관계 + PCB, TCB  (2) 2020.05.30
컴퓨터 자원의 구조와 동작, RAM과 Disk에 대해  (0) 2020.05.26
[OS] 정리7 : 가상 메모리  (0) 2018.09.27
[OS] 정리6 : 메모리 관리  (0) 2018.09.26
[OS] System call, Interrupt, Trap, 등  (1) 2018.09.24
[OS] 정리5  (0) 2018.09.24
[OS] 정리4  (0) 2018.09.24
[OS] 정리3  (0) 2018.09.24
[OS] 정리1  (0) 2018.09.21
pintos information  (0) 2014.02.13