전체 글 (75) 썸네일형 리스트형 동기화 도구들: 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)나 sig.. 동기화 도구들: 세마포 세마포(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)이라고 한다. 경쟁 조건으로부.. CPU 스케줄링: 알고리즘의 평가 - (1) 알고리즘의 평가(Algorithm Evaluation) - 시스템에 맞는 CPU 스케줄링 알고리즘을 선택하는 방법 1. 알고리즘을 선택하는 데 사용할 기준을 정의한다. 2. 선택 기준이 정의되면, 선택 기준에 따라 알고리즘들을 평가한다. 결정론적 모델링(Deterministic Modeling) 평가 방법 중 중요한 부류 중 하나가 분석적 평가(analytic evaluation)이다. 분석적 평가는 알고리즘 성능 평가하는 공식이나 값을 생성하기 위해 주어진 알고리즘과 시스템 부하를 이용한다. 결정론적 모델링(deterministic modeling)은 분석적 평가의 한 가지 유형이다. 이는 미리 정의된 특정 작업 부하를 이용하여 각 알고리즘의 성능을 정의한다. 결정론적 모델링의 장점은 단순.. 이전 1 2 3 4 5 6 7 8 ··· 10 다음