OperatingSystem(41)
-
[운영체제][프로세스관리] Deadlocks #2 교착상태와 뱅커 알고리즘(Deadlocks & Banker's Algorithm) : 교착상태 회피(Deadlock Avoidance)
교착상태 방지(Prevention) 방법의 한계 교착상태가 발생 만족 조건 4가지인 상호배제, 점유와 대기, 선점 불가, 원형 대기중 조건을 하나라도 막는다면 교착상태를 막을 수 있습니다. 그러나 조건을 막는다 하더라도 근본적인 문제 해결이 불가능하거나 비실용적인 경우가 대부분이었습니다. 제일 실용적인 원형 대기 조건을 방지한다 하더라도 교착상태가 일어나지 않는 것을 보장할 수 없었습니다. 교착상태 회피(Deadlock Avoidance) 교착상태 회피 시스템은 미래의 발생가능한 교착상태를 회피하기 위해서 쓰레드가 대기를 해야하는지 안해야하는지에 대한 각각의 요청을 결정하는 시스템입니다. 교착상태 회피 시스템은 회피해야할지 결정하기 위해서 자원들이 어떻게 요청되었는지에 대한 추가적인 정보를 요구합니다. ..
2022.07.14 -
[운영체제][프로세스관리] 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