OperatingSystem(40)
-
[운영체제][프로세스관리] Deadlocks #1 교착상태의 이해 : 교착상태 방지(Deadlock Prevention)
1. 시스템 모델(System Model) 교착상태(Deadlock)이란 무엇인가? 교착상태란 어떤 다른 프로세스에 의해서 발생된 이벤트에 의해서 모든 프로세스가 대기하는 현상 요청한 자원을 다른 대기중인 쓰레드가 점유하고 있기 때문에 자원을 요청한 대기중인 쓰레드(또는 프로세스)는 다시는 쓰레드 상태를 변경할 수 없습니다. 여러개의 경쟁하는 쓰레드 사이에게 분배가 될 유한한 수의 자원으로로 구성된 시스템을 고려해보자. 자원의 종류는 몇가지 동일한 인스턴스로 구성됩니다. 예를 들어 CPU 싸이클, 파일, 입출력 기기(프린터, 드라이브 등)이 있습니다. CPU 사이클이 4개의 코어로 구성되었다면 한번에 4개의 쓰레드를 수행할 수 있고 그 이후의 쓰레드는 대기하여야 합니다. 만약 어떤 한 쓰레드가 동일한 자..
2022.07.11 -
[운영체제][프로세스관리] 동기화 예제 #2 식사하는 철학자들은 왜 굶어 죽었을까?
1. 동기화 문제의 대표적인 문제 : 식사하는 철학자들 문제 5명의 철학자들은 생각하기(thinking), 먹기(eating) 두가지 행동만을 반복합니다. 5명의 철학자들은 한짝밖에 없는 5개의 젓가락을 공유합니다. 철학자들이 배가 고파지면 배가 고픈 철학자의 양 옆에 있는 두 젓가락을 집어들어 밥을 먹습니다. 한명의 배가 고픈 철학자가 그의 양 옆에 있는 젓가락을 집고 밥을 때 그 철학자는 젓가락을 내려 놓지 않고 먹습니다. 다음 그림은 한 테이블에 다섯명의 철학자와 다섯개의 한짝인 젓가락이 배치된 모습입니다. 식사하는 철학자들의 문제점 교착상태가 없고 기아현상이 없는 여러개의 프로세스들(철학자들) 사이에서 여러개의 자원(젓가락)의 할당이 필요합니다. 여기서 각각의 철학자들의 프로세스들은 전부 동일한 ..
2022.07.11 -
[운영체제][프로세스관리] 프로세스 동기화 #7 Liveness (DeadLock, Priority-Inversion)
1. Liveness 임계 영역 문제를 해결하기 위한 3가지 기준 상호 배제(Mutual Exclusion) 만족 : 어떤 한 프로세스가 임계 영역 안의 공유 자원에 접근하여 작업을 수행하는 도중에는 다른 프로세스는 선점을 할 수 없다는 조건을 만족해야 합니다. 진행(Progress) : 교착상태(Deadlock)이 발생하지 않아야 합니다. 교착상태란 두개 이상의 프로세스가 서로 다른 프로레스가 가진 lock을 해제할때까지 계속 대기하는 현상을 말합니다. 한정된 대기(Bounded-waiting) : 기아(Starvation) 현상이 없어야 합니다. 기아 현상이란 프로세스가 다른 프로세스에게 계속 우선순위가 선점되어 실행되지 않고 대기하는 현상을 말합니다. 세마포어와 모니터 동기화 도구는 상호 배제 조건..
2022.07.07 -
[운영체제][프로세스관리] 프로세스 동기화 #1 프로세스 동기화의 배경(필요성)
프로세스 동기화의 배경(필요성) 상호 협력적 프로세스들(Cooperating processes)의 특징 상호협력적인 프로세스들은 서로 영향을 주거나 받을 수 있습니다. 상호협력적인 프로세스들은 논리적인 주소 공간(대표적인 것이 쓰레드)을 공유하거나 공유 데이터를 공유합니다. 공유 데이터 방식은 다음과 같은 방식이 있습니다. 공유 메모리(shared memory) 방식 : 메모리 특정 영역에 여러 프로세스들이 자원을 공유할 수 있는 공간을 생성하고 자원을 공유하는 방식 메시지 전송 방식(message passing) 방식 : 여러 프로세스들끼리 네트워크를 통해서 링크를 연결하고 메시지를 주고 받는 방식입니다. 상호 협력적 프로세들의 문제 상호협력적인 프로세들이 공유 데이터에 동시적으로 접근하는 것은 데이터..
2022.07.04 -
[운영체제][프로세스관리] 프로세스 동기화 #6 모니터(Monitor)와 자바 동기화
세마포어 사용이 어려운 이유 세마포어는 타이밍 에러(timing errors)가 발생할 수 있습니다. 타이밍 에러는 어떤 특정한 실행 시퀀스에서 발생한다면 언제나 발생하지도 않고 탐색하기도 쉽지 않는 에러입니다. 세마포어의 문제 예제 모든 프로세스들은 이진 세마포어인 1로 초기화된 뮤텍스를 공유합니다. 각각의 프로세스는 임계 영역에 들어가기 전에 wait(mutex)를 호출해야합니다. 임계영역의 작업을 마친 프로세스는 signal(mutex)를 호출하여 자원을 반납합니다. wait(mutex) -> signal(mutex) 실행순서를 지키지 않는 경우 두개 이상의 프로세스가 동시에 임계 영역에 접근하는 문제가 발생할 수 있습니다. 세마포어의 wait(mutex), signal(mutex) 실행순서가 잘못..
2022.04.19 -
[운영체제][프로세스관리] 동기화 예제 #1 동시성 제어의 고전적 문제들
동시성 제어 문제들의 고전적인 예제들 유한 버퍼 문제(Bounded-Buffer Problem) 생산자-소비자(Producer-Consumer Problem) 독자-저자 문제(Readers-Writers Problem) 식사하는 철학자 문제(Dining-Philosophers Problem) 1. 유한 버퍼 문제(Bounded-Buffer Problem) 생산자-소비자 문제로도 불립니다. 각각에 하나의 아이템을 저장할 수 있는 n개의 버퍼로 구성되어 있습니다. 생산자의 목적은 소비자를 위해서 버퍼를 가득 채우는 것이 목표입니다. 소비자의 목적은 아이템을 소비하여 버퍼를 비우는 것이 목표입니다. 공유 데이터 구조 mutex : 이진 세마포어 버퍼 공간에 접근하는 동안 다른 프로세스가 접근하지 못하게 상호 ..
2022.04.05