Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

분류 전체보기275

8. 동기화 기법(뮤텍스 락, 세마포, 모니터) 🖥️ 동기화 기법 🖥️ 동기화의 종류에는 크게 상호배제, 실행 순서 제어가 있다. 뮤텍스 락 상호 배제를 위한 동기화 도구로 자물쇠 역할을 함. 뮤텍스 락의 단순한 형태 - 전역 변수 하나, 함수 두 개 - 자물쇠 역할: 프로세스들이 공유하는 전역 변수 lock - 임계 구역을 잠그는 역할: acquire 함수 - 임계 구역 잠금 해제 역할: release 함수 acquire 함수 - 프로세스가 임계 구역에 진입하기 전에 호출 if 임계 구역이 잠겨 있다면, 임계 구역이 열릴 때까지(lock이 false가 될 때까지) 임계 구역을 반복적으로 확인 (탈의실 똑똑 무한 반복) if 임계 구역이 열려 있다면, 임계 구역을 잠그기(lock = true) 임계구역 작업 ... release 함수 - 임계 구역에서.. 2023. 9. 2.
7. 동기화(synchronization) 🖥️ 동기화 🖥️ 동시다발적으로 실행되는 프로세스들(스레드들)은 서로 협력하며 영향을 주고 받는다. 이 과정에서 '자원의 일관성 보장'이 필요하다. 동기화란? 공동의 목적을 위해 동시에 수행되는 프로세스 ex. 워드 프로세스 프로그램 - 맞춤법 검사 프로세스 - 입력 내용을 화면에 출력하는 프로세스 '프로세스들의 수행 시기를 맞추는 것' 1. 실행 순서 제어 - 프로세스를 올바른 순서대로 실행하기 2. 상호 배제 - 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 * 실행 문맥을 갖는 모든 대상은 동기화 대상이기 때문에 스레드도 당연히 동기화의 대상임. 실행 순서 제어를 위한 동기화(reader writer problem) 읽기 프로세스와 쓰기 프로세스는 아무렇게나 실행되어서는 안 된다.. 2023. 9. 2.
6. CPU 스케줄링 알고리즘 🖥️ CPU 스케줄링 알고리즘 🖥️ 1. 선입 선처리 스케줄링 FCFS(First Come First Served) 스케줄링 - 준비 큐에 삽입된 순서대로 처리하는 비선점 스케줄링 - 먼저 CPU를 요청한 프로세스부터 CPU 할당 호위 효과(convoy effect)를 방지하려면 어떻게 할 수 있을까? 2. 최단 작업 우선 스케줄링 SJF(Shortest Job First) 스케줄링 (기본적으로는 비선점, 선점형이 될 수도 있음) CPU 사용 시간이 짧은 프로세스는 먼저 실행, CPU 사용 시간이 긴 프로세스는 나중에 실행하기 (평균 대기 시간 단축) 3. 라운드 로빈 스케줄링 RR(Round Robin) 스케줄링 (돌아가며) - 선입 선처리 스케줄링 + '타임 슬라이스' * 타임슬라이스: 각 프로세스가.. 2023. 8. 30.
5. CPU 스케줄링 🖥️ CPU 스케줄링 🖥️ 운영체제가 CPU를 어떻게 관리할까? CPU 사용이 필요한 프로세스들이 차례로 돌아가며 사용하는 것이 가장 공정한 스케줄링일까? 프로세스마다 우선순위가 다르다는 점을 생각해보자. 입출력 작업이 많은 프로세스 (io bound) -> 프로세스가 대기 상태에 머무르는 시간이 많음(이 때는 CPU 안 씀) 그래서 입출력 작업이 많은 프로세스를 먼저 실행시키고(어차피 금방 대기 상태에 머물러서 CPU를 안 쓸테니) 이후에 CPU 집중 프로세스를 실행해서 CPU를 많이 쓰는것이 효율적 스케줄링 큐 다음으로 CPU를 사용시킬 프로세스의 PCB를 모두 살펴보는 것은 비효율적이다. 같은 큐 내부에서도 우선순위별로 처리됨. 선점형(preemptive) 스케줄링, 비선점형(non-preempti.. 2023. 8. 29.
4. 스레드 🖥️ 스레드 🖥️ 스레드(thread)는 프로세스를 구성하는 '실행 흐름의 단위' 스레드의 구성 요소 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보 프로세스의 스레드들은 프로세스의 자원을 공유함! 스택 영역만 각자 가지고 코드, 데이터, 힙 영역은 공유하는 것 (요즘은 프로세스 단위보다 스레드 단위로 CPU 할당, 해제 케이스가 많음) 멀티 프로세스와 멀티 스레드 동일한 작업을 수행하는 단일 스레드 프로세스 여러 개 실행 -> 멀티 프로세스 하나의 프로세스를 여러 스레드로 실행 -> 멀티 스레드 프로세스끼리는 자원을 공유하지 않지만, 스레드끼리는 같은 프로세스 내 자원을 공유하며 실행된다. 프로세스를 fork하면 코드/데이터/힙/스택 영역 등 모든 자원이 '복.. 2023. 8. 29.
3. 프로세스 상태와 계층 구조 🖥️ 프로세스 상태와 계층 구조 🖥️ 프로세스의 상태는 운영체제마다 차이가 있지만, 크게는 아래와 같다. 1. 생성 상태 - 메모리에 적재되어 PCB를 할당 받은 상태 2. 준비 상태 - CPU를 할당 받아 실행할 수 있지만,자신의 차례가 아니라 기다리는 상태 - 자신의 차례가 오면 실행 상태로 변경 (준비 상태 -> 실행 상태가 되는 것을 '디스패치'라고 함) 3. 실행 상태(running state) - CPU를 할당 받아 실행 중인 상태 - 할당된 시간을 모두 사용 시 준비 상태로 변경(타이머 인터럽트 발생 시) - 실행 도중 입출력 장치를 사용하면(입출력 인터럽트) 입출력 작업이 끝날 때까지 대기 상태로 4. 대기 상태(block state) - 프로세스가 실행 도중 입출력 장치를 사용하는 경우 .. 2023. 8. 28.