전공 (37) 썸네일형 리스트형 [운영체제] 교착 상태 시스템 모델(System Model) 시스템은 경쟁하는 스레드들 사이에 분배되어야 하는 유한한 자원으로 구성된다. 자원들은 다양한 유형으로 분할되고, 이들 각각은 동일한 몇개의 인스턴스들로 구성된다. 한 스레드가 어떤 자원 유형의 한 인스턴스를 요청하면, 동일한 인스턴스들 중 하나가 할당된다. mutex lock과 세마포와 같은 동기화 도구들 역시 시스템 자원이다. 이들은 현대 컴퓨터 시스템에서 가장 일반적인 교착 상태의 발생 원인이다. 스레드는 자원을 사용하기 전에 요청해야 하고, 자원을 사용하고 난 후에는 해제해야 한다. (request, use, release) 스레드는 task를 수행하기 위해 필요한 만큼의 자원을 요청할 수 있고, 요청한 자원의 수는 전체 자원의 수를 초과할 수 없다. 지원의 요.. [운영체제] 동기화 도구들: Liveness Liveness 임계구역에 대한 접근을 조정하기 위해서 동기화 도구를 사용하는 것은 임계구역에 들어가려는 프로세스가 무한히 대기하는 결과를 가져올 수 있다. 무한 대기는 임계구역 문제 해결책의 세가지 요구 조건인 진행과 한정된 대기를 만족시키지 못한다. Liveness는 시스템이 프로세스의 진행을 보장하기 위해서 만족해야 하는 속성의 집합을 의미한다. Liveness 실패는 성능과 응답성 모두에서 좋지 않다. Liveness 실패로 이어 질 수 있는 두 가지 상황을 아래에서 살펴본다. 교착 상태(Deadlock) 교착 상태는 집합 내의 모든 프로세스가 대기중인 프로세스 중 하나에 의해 일어나는 event를 무한히 기다리는 상황을 의미한다. 여기서 event는 mutex lock과 세마포와 같은 자원의 획.. [운영체제] 동기화 도구들: 모니터 왜 모니터(Monitor)를 사용하는가? 세마포는 프로세스간 동기화를 위해 편리하고 효율적으로 쓰일 수 있지만 잘못 사용하면 timing error를 발생시킬 수 있다. timing error는 특정한 순서로 실행되었을 때만 발생하기 때문에 발견이 어렵다. mutex lock과 세마포는 이러한 오류를 해결하기 위해서 도입되었지만, 다음과 같은 상황에서 오류가 발생할 수 있다. 1. wait(mutex)와 signal(mutex) 연산의 순서가 뒤바뀌었을 때, 여러 프로세스가 임계구역에 동시에 진입했을 때 문제가 발생한다. 2. signal(mutex)를 써야 할 곳에 wait(mutex)를 썼을 때, 두 번째 wait(mutex) 연산에서 교착 상태가 발생한다. 3. wait(mutex)나 signal(.. [운영체제] 동기화 도구들: 세마포 세마포(Semaphore) 세마포는 프로세스들이 더 정교하게 동기화할 수 있는 방법을 제공하는 도구이다. 세마포 S는 정수 변수로서, 초기화를 제외하고는 두 개의 표준 원자적 연산 wait()과 signal()로만 접근할 수 있다. wait()과 signal()의 정의는 다음과 같다. 세마포의 정수 값을 변경하는 연산은 반드시 원자적으로 수행되어야 한다. 즉, 한 프로세스가 세마포 값을 변경할 때, 다른 프로세스는 동시에 변경할 수 없다. 세마포 사용법(Semaphore Usage) os는 종종 counting semaphore와 binary semaphore를 구분한다. 1. counting semaphore counting semaphore의 값은 제한이 없다. 따라서 공유 자원이 여러 개인 경우에 .. [운영체제] 동기화 도구들: Mutex Locks Mutex Locks 앞에서 제시한 하드웨어 기반 해결책은 응용 프로그래머는 사용할 수 없다. 따라서 임계구역 문제를 해결하기 위한 상위 수준 소프트웨어 도구들을 개발했는데, 그중 하나가 mutex lock이다. 프로세스는 임계구역에 들어가기 전에 반드시 lock을 획득해야 하고, 임계구역을 빠져나올 때는 lock을 반환해야 한다. mutex lock은 available이라는 boolean 변수를 가지는데 이 변수는 lock이 available 한 지 표시해준다. acquire()과 release()는 다음과 같이 정의된다. 위의 구현 방식은 busy waiting이라는 문제를 발생시킨다. busy waiting이란 한 프로세스가 임계구역에 있는 동안 다른 프로세스가 계속 조건을 확인하며 루프를 실행하는.. [운영체제] 동기화 도구들: 동기화를 위한 하드웨어 지원 메모리 장벽(Memory Barriers) 컴퓨터 아키텍처가 응용 프로그램에게 메모리를 어떻게 제공하는가에 대한 모델을 메모리 모델(memory model)이라고 한다. 메모리 모델은 일반적으로 다음 두 가지 중 하나에 속한다. 1. 강한 순서(strongly ordered): 한 프로세서의 메모리 변경 결과가 다른 모든 프로세서에 즉시 보인다. 2. 약한 순서(weakly ordered): 한 프로세서의 메모리 변경 결과가 다른 프로세서에 즉시 보이지 않는다. 메모리 모델은 프로세서 유형에 따라 다르므로 커널 개발 시 가정할 수 없다. 이를 해결하기 위해 컴퓨터 아키텍처는 메모리의 모든 변경 사항을 다른 모든 프로세서로 전파하는 명령어를 제공하여 다른 프로세서에서 실행 중인 스레드에 메모리 변경 사항이.. [운영체제] 동기화 도구들 - (2) peterson의 해결 방법 peterson의 해결 방법은 임계구역에 대한 고전적인 소프트웨어 기반 해결책이다. 이는 현대 컴퓨어에서 제대로 실행된다고 보장할 수 는 없지만, 임계구역 문제 해결을 위한 알고리즘적 설명을 제공하고, 상호 배제, 진행, 한정된 대기의 요구 조건을 다루는 소프트웨어 설계에서의 복잡성을 설명한다. peterson의 해결 방법은 임계구역과 나머지구역을 번갈아 실행되는 두 프로세스로 제한된다. peterson의 해결 방법은 두 프로세스가 두 개의 데이터 항목을 공유하도록 하여 해결한다. int turn; boolen flag[2]; 변수 turn은 임계구역으로 진입할 순번을 나타낸다. (turn = i이면, Pi가 임계구역에서 실행될 수 있다는 것을 의미한다.) flag 배열은 프.. [운영체제] 동기화 도구들 - (1) 배경(Background) 협력적 프로세스(cooperative process)는 시스템 내에서 실행 중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스이다. 협력 프로세스는 공유 메모리 또는 메시지 전달을 통해서 데이터를 공유한다. 공유 데이터에 접근하는 것은 데이터의 일관성에 문제를 발생시킬 수 있다. 따라서 협력적 프로세스들의 순차적 실행을 보장해서 데이터의 일관성을 유지해야 한다. 프로세스는 병행해서 혹은 병렬로 실행될 수 있다. 이는 공유 데이터의 무결성(integrity)에 문제를 일으킨다. 여러 프로세스가 동일한 데이터를 동시에 접근해서 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 조건(race condition)이라고 한다. 경쟁 조건으로부터 보호.. 이전 1 2 3 4 5 다음