-
뮤텍스 락운영체제/프로세스 동기화 2018. 2. 4. 00:32
임계 구역 문제에 대한 하드웨어 기반 해결책은 복잡하고, 응용 프로그래머는 사용할 수 없다.이때문에 소프트웨어 기반 해결책들이 사용되는데 이 중 가장 간단한 것이 뮤텍스 락이다.뮤텍스 락을 사용하게 되면 프로세스가 임계 구역에 들어가기 전 반드시 락을 획득해야 하고임계 구역을 빠져나올 때 락을 반환해야 한다. 뮤텍스 락을 이용한 임계 구역 문제 해결 방안 do { acquire() // 락을 획득 // 임계 구역 release() // 락을 반환 // 나머지 구역 } while (true); acquire() { while (!available) //바쁜 대기 available = false; } release() { available = true; } 뮤텍스 락은 available 이라는 boolean..
-
동기화 하드웨어운영체제/프로세스 동기화 2018. 2. 4. 00:25
많은 현대 기기들은 인터럽트 되지 않는 하드웨어 명령어를 제공한다. TestAndSet 명령어를 사용한 상호 배제 구현 do { while(TestAndSet(&lock)) //아무 일도 안함. // 임계 구역 lock = FALSE; // 나머지 구역 } while(TRUE) 제일 처음에는 lock은 FALSE값으로 초기화되어 있다. 따라서, 처음으로 실행한 프로세스는 첫 while문을 통과한다. 그리고, TestAndSet에의해서 lock은 TRUE가 되었으므로, 다른 프로세스가 임계 영역을 실행하려고 해도, while문에서 걸려서 실행할 수 없다. 상호 배제 조건을 만족하는 셈이다. 그리고 임계 영역을 다 끝낸 프로세스는 lock값을 다시 FALSE로 되돌려서 다른 프로세스도 임계 영역을 실행할 수..
-
피터슨의 해결안운영체제/프로세스 동기화 2018. 2. 4. 00:12
임계 구역에 대한 고전적인 소프트웨어 기반 해결책 임계구역 문제를 해결하기 위한 좋은 알고리즘적 설명을 제공한다. 피터슨의 해결안은 두 프로세스가 두 개의 데이터 항목을 공유하도록 하여 해결한다. Int turn; - 임계구역으로 진입할 순번을 나타냄 Turn == i 이면 프로세스 Pi가 임계구역에서 실행됨 Boolean flag[2]; - 프로세스가 임계구역으로 진입할 준비가 되었다는 것을 나타냄 Flag[i] == true 이면 Pi 가 임계구역으로 진입할 준비가 되었다는 것을 나타낸다. 프로세스 Pi의 구조 do { Flag[i] = TRUE; turn = j; while (flag[j] && turn == j ); // 임계구역 flag[i] = FALSE; // 나머지 구역 } while (T..
-
임계구역 문제운영체제/프로세스 동기화 2018. 2. 3. 19:24
둘 이상의 프로세스들이 동시에 접근해서는 안 되는 공유 자원을 임계구역 이라고 하고임계구역으로 지정되어야 할 코드 영역이 임계구역으로 지정되지 않았을 때 발생하는 문제를 상호 배제 문제 라고 한다. 임계구역 문제 해결안의 조건상호 배제하나의 프로세스가 임계구역에 들어가 있다면 다른 프로세스는 임계구역에 들어갈 수 없어야 한다. 진행임계 구역에 들어간 프로세스가 없는 상태에서 들어가고자 하는 프로세스가 여러 개 있다면 어느 것이 들어갈지를 적절히 결정 해 주어야 한다. 한정된 대기다른 프로세스들의 기아를 방지하기 위하여 한 번 임계구역에 들어간 프로세스는 다음 번 임계구역에 들어갈 때 제한을 두어야 한다. 선점형 커널프로세스가 커널모드에서 수행되는 동안 선점되는 것을 허용하는 커널 장점응답이 민첩할 수 있..