cs 개념 정리

[운영체제] 프로세스와 스레드

박수련 2024. 4. 6. 17:23

프로세스

운영체제로부터 자원을 할당받은 작업의 단위

 

생명주기 

1.  운영체제가 프로그램을 실행시키기 위해 메모리에 공간을 할당한다. 

2. 프로그램이 메모리 위에 올라가면 인스턴스화가 일어나 프로세스가 된다. 

3. CPU 스케줄러에 따라 CPU 자원이 할당되고 PCB가 생성된다. 

4. 실행이 끝나면 할당된 CPU와 메모리를 반환하고 PCB가 삭제된다. 

 

PCB

프로세스 아이디, 이름, 상태, 포인터, io 리스트, 메모리 정보를 담고 있다. 

 

스케줄링 알고리즘

비선점형: 프로세스가 스스로 CPU 할당을 포기하는 것 

 1. FCFS: 실행시간이 긴 프로세스가 있다면 다른 프로세스의 대기 시간이 길어지는 단점 발생(convoy effect)

 2. SJF: 실행시간이 긴 프로세스는 실행되지 않는다는 단점 발생(starvation)

 3. priority: 우선순위 알고리즘은 무엇?

 

선점형: 프로세스를 강제 중지시키는 것

 1. RR: 동일한 시간을 할당한 후, 시간 안에 못 끝냈다면 준비 큐의 뒤에서 기다린다. 

 2. SRF: 실행중간에 더 짧은 작업이 들어오면 먼저 처리 shortest remaining time first

 3. 멀티 레벨: 준비큐가 여러개 있고 서로 다른 알고리즘을 사용 

 

프로세스 상태

1. 생성: PCB 할당

2. 준비: 메모리 할당

3. 실행: CPU 할당

4. 대기: system call(요청을 해서 가는 것), i/o interrupt(당하는 것) 처리 끝나면 준비 단계로

5. 종료: CPU, 메모리, PCB 반환

 

컨텍스트 스위칭 (문맥 교환)

싱글 코어를 기준으로 설명하자면 동시에 실행되는 것처럼 보이기 위해, 한 프로세스에서 다른 프로세스로 CPU 할당하는 것

 

why

CPU의 사용률을 높이며, 한 프로세스의 독점을 방지한다. 

 

when

프로세스가 종료되었을 때

i/o interrupt(system call)

timeout

 

how

1. CPU 프로세스 (가) 실행

2. interrupt/ system call 시 (가)의 상태 PCB에 저장(레지스터)

3. (나) 선택, PCB에서 상태 불러와서 실행

 

스레드

하나의 프로세스 내에서 동시에 진행되는 흐름의 단위 

 

스레드의 스케줄링 

하나의 프로세스에 다수의 스레드가 동작하기 때문에 스레드 간의 상호작용과 동기화 문제를  고려해야한다. ??? 

멀티 프로세스와 멀티 스레드

멀티 프로세스

독립적 -> 안정성, 확장성

자원 공유 x -> 문맥 교환 비용 많이 듦, 메모리 사용량 높다

 

멀티 스레드

자원 공유 -> 문맥 교환 비용 감소, 메모리 사용량 가볍다 

독립적 x -> 하나의 스레드에서 문제 발생 시 영향

 -> 공유 자원에 여러 쓰레드가 접근, 동기화 문제 발생할 수 있다. 통제하는 과정에서 병목 현상이 일어날 수 있다. 

 

8) 병렬성과 동시성에 대해 설명해주세요.

9) 선점형, 비선점형 스케줄링에 대해서 설명해주시고, 각각 대표 알고리즘에 대해서 설명해주세요.

10) 문맥교환이 언제 발생하는지 알려주세요. 2가지 이상.