OperatingSystem(41)
-
[운영체제][프로세스관리] 동기화 예제 #1 동시성 제어의 고전적 문제들
동시성 제어 문제들의 고전적인 예제들 유한 버퍼 문제(Bounded-Buffer Problem) 생산자-소비자(Producer-Consumer Problem) 독자-저자 문제(Readers-Writers Problem) 식사하는 철학자 문제(Dining-Philosophers Problem) 1. 유한 버퍼 문제(Bounded-Buffer Problem) 생산자-소비자 문제로도 불립니다. 각각에 하나의 아이템을 저장할 수 있는 n개의 버퍼로 구성되어 있습니다. 생산자의 목적은 소비자를 위해서 버퍼를 가득 채우는 것이 목표입니다. 소비자의 목적은 아이템을 소비하여 버퍼를 비우는 것이 목표입니다. 공유 데이터 구조 mutex : 이진 세마포어 버퍼 공간에 접근하는 동안 다른 프로세스가 접근하지 못하게 상호 ..
2022.04.05 -
[운영체제][프로세스관리] 프로세스 동기화 #5 뮤텍스 락(Mutex Lock)과 세마포어(Semaphore)
학습목표 1. 세마포어가 무엇인지 학습 2. 세마포어의 사용방법에 대해서 학습 3. 세마포어의 구현에 대해서 학습 4. 세마포어를 사용할때의 교착상태와 기아에 대해서 학습 임계 영역 문제를 해결하기 위한 고수준 소프트웨어 도구들의 종류 뮤텍스 락(Mutex Locks) 동기화를 위한 가장 간단한 도구 세마포어와는 다르게 하나의 쓰레드만을 제어할 수 있습니다. 바이너리 세마포어라고 부를 수 있습니다. 세마포어(Semaphore) 뮤텍스 락보다 더욱 강력하고, 편리하고, 효율적인 도구 뮤텍스락과는 다르게 n개의 쓰레드를 제어할 수 있습니다. 모니터(Monitor) 뮤텍스락과 세마포어의 단점을 극복한 동기화 도구 1. Mutex Lock은 무엇인가? Mutex Lock은 세마포어 값이 0 또는 1을 가지는 이..
2022.04.01 -
[운영체제][프로세스관리] 프로세스 동기화 #4 동기화 하드웨어(Synchronization Hardware)
학습목표 1. 동기화를 위한 하드웨어 기반 해결안을 소개 2. 하드웨어 명령어 자체를 원자성있게 설계하여 상호배제를 만족시키는것에 학습 3. TestAndSet() 명령어와 waiting 배열을 통한 상호배제 구현과 한정된 대기 조건 만족 알고리즘 분석 4. Java 언어 기반 Atomic Variable 예제 실습 이전글에서는 피터슨의 해결안을 소개하였습니다. 하지만 피터슨의 해결안은 소프트웨어 기반이기 때문에 동기화를 보장해주지는 않습니다. 왜냐하면 아무리 소프트웨어적으로 완벽하다고 하더라도 기계어 레벨에서는 다른 프로세스에게 선점되어 데이터의 불일치가 발생할 수 있기 때문입니다. 이러한 문제를 해결하기 위해서 하드웨어 기반 해결안을 제시합니다. 1. 동기화를 위한 하드웨어 기반 해결안 하드웨어 명령..
2022.03.24 -
[운영체제][프로세스관리] 프로세스 동기화 #3 동기화 문제의 해결책 : 피터슨의 해결안(Peterson's Solution)
1. 피터슨의 해결안(Peterson's Solution) 피터슨의 해결안은 임계구역(Critical Section) 문제를 소프트웨어적으로 해결하기 위한 알고리즘입니다. 현대 컴퓨터 구조가 load, store와 같은 기본적인 기계어를 수행하는 방식이기 때문에 피터슨의 해결안(소프트웨어적인 방법)은 임계 구역 문제 해결을 보장할 수 없습니다. 임계 구역 문제를 해결하기 위한 알고리즘적인 설명을 제공하고 상호 배제, 진행, 한정된 대기의 요구 조건을 중점으로 수행하는 소프트웨어를 설계하는데 필요한 복잡성을 잘 설명하기 때문에 피터슨의 해결안이 제시됩니다. 피터슨의 해결안은 임계 구역(Critical Section)과 나머지 구역(Remainder Section)을 번갈아 가며 실행하는 두개의 프로세스로 ..
2022.03.23 -
[운영체제][프로세스관리] 프로세스 동기화 #2 임계 구역 문제(Critical-Section Problem)
1. 임계 구역(Critical-Section) 임계 구역의 개념 및 특징 어떤 한 프로세스가 임계 구역으로 정해진 구역에서 실행중이면 다른 프로세스들은 해당 임계 구역의 코드들을 실행하지 못하는 구역을 임계 구역이라고 합니다. 임계 구역에서는 다른 프로세스와 공유자원의 값을 변경하거나, 테이블을 갱신하거나 파일을 쓰거나 하는 등의 작업을 수행합니다. 두개 이상의 프로세스가 임계구역에 존재할 수 없습니다. 2. 코드들의 구역 종류 진입 구역(Entry-Section) : 임계 구역에 들어가기 위해서 허락을 요청하는 코드 구역 임계 구역(Critical-Section) : 다른 프로세스와 공유하는 자원을 갱신하거나 접근하는 구역 퇴출 구역(Exit-Section) : 임계 구역에서 나오는 구역 나머지 구역..
2022.03.03 -
[운영체제][프로세스관리] CPU Scheduling #5 쓰레드 스케줄링(Thread Scheduling)
학습목표 1. 경쟁범위에 대해서 학습 2. C언어 기반 Pthread 스케줄링 예제 학습 1. 경쟁범위(Contention Scope) 프로세스-경쟁 범위(process-contention scope, PCS) 시스템-경쟁 범위(system-contention scope, SCS) 사용자 수준과 커널 수준 쓰레드의 차이 중 하나는 그들이 어떻게 스케줄되느냐에 있습니다. 다대일과 다대다 모델을 구현하는 시스템에서는 쓰레드 라이브러리가 사용자 수준 쓰레드를 가용한 LWP(Light Weight Process) 상에서 스케줄링합니다. 이 구조는 동일한 프로세스에 속한 쓰레드들 사이에서 CPU를 경쟁하기 때문에 프로세스-경쟁-범위(process-contention scope, PCS)로 알려져 있습니다. 즉, ..
2022.02.28