cs 공부

cs 공부 운영체제 (OS)

gilola 2025. 1. 17. 15:03

process와 thread

 process는 실행중인 프로그램을 말하며 메모리 영역(code, data, heap, stack)을 다른 프로세스와 공유하지 않음

thread는 프로세스 내에서 stack만 따로 할당 받고, 그 이외의 메모리영역(code, data, heap) 영역을 공유하기 때문에 다른 thread의 실행 결과를 즉시 확인할 수 있음. 

 

multi process와 multi thread

 multi process는 하나의 프로세스가 다른 프로세스에 영향을 끼치지 않고 계속 실행되지만 많은 메모리 공간과 CPU 시간을 차지 

multi thread는 동기화 문제 존재

 

multi thread의 concurrency 와 parallerism

concurrency는 single core에서 여러 개의 thread가 번갈아 실행하는 것

parallerism은 multi core에서 각 core들을 동시에 실행하는 것

 

multi thread 환경에서 주의사항

다수의 쓰레드가 shared data 에 동시에 접근하는 경우에 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 교착 상태가 발생하지 않도록 주의해야 함

 

deadlock

둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 대기 상태에 놓인 상황

dealock의 4가지 조건

1. nonpreemptive (다른 process의 자원을 뺏을 수 없음)

2. Circular wait (자원을 순환적으로 대기)

3. Hold & wait (자원을 잡고 있는 채로 대기)

4. Mutual exclusion (한 번에 한 process만 자원에 접근 가능)

 

convey effect

작업 시간이 긴 process가 먼저 큐에 도착하여 다른 proces 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상

FCFS 스케줄링에서 주로 발생

 

synchronous와 asynchronous

synchronous는 순차적, 직렬적으로  task 수행함. 서버에 데이터를 요청하고 응답될 때까지 이후 task들은 blocking됨

asynchronous는 병렬적으로 task 수행함. 서버에 데이터를 요청한 후 응답될 때까지 대기하지 않고 다음 task 수행

 

critical section

critical section은 process간 공유자원을 접근하는데 있어 문제가 발생하지 않도록 한번에 하나의 process만 이용하게끔 보장해줘야 하는 여역

critical section 문제를 해결하기 위해서는 3가지 조건을 충족해야 함

1. Mutual exclution: 하나의 process가 critical section에 들어가 있다면 다른 process는 들어갈 수 없다

2. Progress: critical section에 들어간 process가 없는 상태에서 들어가려는 process가 여러 개라면 어느 것이 들어갈지 결정 해주어햐 한다.

3. Bounded waiting: 다른 process의 기아 방지를 위해, 한 번 critical section에 들어간 process는 다음 번 critical section에 들어갈 때 제한을 두어야 한다.

 

mutex와 semaphore

mutex는 공유 자원에 대한 접근을 제어하기 위한 상호 배제 기법 중 하나로 lock을 사용해 하나의 process나 thread를 단독으로 실행하게 함. semaphore은 동시에 접근 가능한 thread의 개수를 지정할 수 있음.

현재 수행중인 process가 아닌 다른 process가 semaphore을 해제할 수 있음.

하지만 mutex는 lock을 획득한 process가 반드시 그 lock을 해제해야 함

 

페이지 교체 알고리즘

어떤 페이지를 선택해 교체할 것인지 결정하는 방법

1. FIFO (first in first out)

2. Optimal (구현 불가능, 연구 목적)

3. LRU (least recently used)

 

context switching

context switching은 multiprocess 환경에서 cpu가 어떤 하나의 process를 실행하고 있는 상태에서 interrupt 요청에 의해 다음 우선 순위의 process가 실행되어야 할 때 기존의 process 상태/ reg 값을 저장하고 cpu가 다음 process를 수행하도록 새로운 process의 상태/reg 을 교체하는 작업

 

 

 

참고: https://dev-coco.tistory.com/162

'cs 공부' 카테고리의 다른 글

cs 공부 자료구조  (0) 2025.01.23
cs공부 정렬 (selection)  (2) 2024.12.29