(운영체제) posix thread를 사용한 교차로 구현- 설계보고서
- 최초 등록일
- 2013.05.25
- 최종 저작일
- 2012.09
- 18페이지/ MS 워드
- 가격 5,000원
소개글
posix thread를 사용하여 교차로의 교통량 문제를 해결하는 문제입니다.
교차로에는 서로 다른 방향의 차량이 동시에 들어와 충돌이 발생하거나 서로의 진행 방향을 방해하여 교차로가 혼잡하거나 꽉 막힌 상태가 발생할 수도 있습니다. 따라서 충돌을 방지하며 데드락이 발생하지 않도록 효과적인 교차로를 구현하는 것이 목적입니다.
- 제한 사항-
1. 교차로의 각 부분(nw, ne, sw, se)에는 총 4대의 차량이 존재할 수 있습니다.
2. 차량들은 하나의 thread가 담당하게 됩니다.
3. 함수의 프로토 타입 및 일부 함수 구현을 제공하며 제공된 코드는 수정할 수 없습니다.
4. 교차로를 효율적으로 구현하는 것이 목적이며 데드락이 발생해서는 안됩니다.
car_driving()함수와 각 교차로 구간의 queue 정책에 대한 서술 위주의 설계 보고서입니다.
목차
1.설계 주제
2.설계 개요
3.설계 알고리즘
4. 설계 코드 구현
5.설계 결과 출력화면
본문내용
- MUTEX
Mutual Exclusion(상호 배제)의 뜻으로써 Critical Section(임계 구역)문제를 해결하기 위한 방법 중 하나이다. 뮤텍스 개체는 잠겨지지 않은 Unlock 상태와 잠금 Lock 상태, 두 가지의 상태를 가지며 둘 이상의 스레드가 소유할 수 없다.
다수의 객체가 공유자원에 접근하려고 할 시 접근 시점을 제어해야 한다. 시간과 공간을 맞추어준다는 의미의 동기화 해야함으로써 공유 자원 영역에 접근하는 객체들의 진입 시간을 제어해준다.
<중 략>
교차로마다 생성한 count 변수를 0으로 초기화 해놓음
랜덤으로 자동차 방향과 이동 방향 생성한 것을 통하여 첫 번째 스레드가 임계 영역에 진입
다른 스레드들이 같은 교차로에 진입하고자 할 경우 임계 영역 진입을 시도하지만 이미 첫 번째 스레드가 진입해 있으므로 임계 영역 밖에서 대기
첫 번째 스레드가 count 값을 읽고 카운팅 연산한 후 값을 증가 시켜 저장함
첫 번째 스레드가 일 수행을 마친 후 임계 영역에서 빠져 나옴
그로써 다음 스레드가 임계 영역에 진입하여 count 값 읽어 카운팅 연산한 후 저장함
<중 략>
switch(car_direction) //현재 위치 파악
{
case OS_HW_SOUTH: //남쪽에서 오는 경우
switch(turn_direction) //앞으로 나아갈 방향 파악
{
case OS_HW_WEST: //남->서 경우, se->ne->nw
pthread_mutex_lock(&mutex_m_se); //첫 번째 지나가는 경로인 se 교차로 mutex lock
참고 자료
없음