POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention

 1  POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention-1
 2  POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention-2
 3  POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention-3
 4  POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention-4
 5  POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention-5
※ 미리보기 이미지는 최대 20페이지까지만 지원합니다.
  • 분야
  • 등록일
  • 페이지/형식
  • 구매가격
  • 적립금
자료 다운로드  네이버 로그인
소개글
POSIX library를 이용한 Dinning Philosopher, Deadlock Prevention에 대한 자료입니다.
목차
1. Dinning Philosopher 문제를 POSIX library를 활용하여 재작성하시오
1.1 프로그램 설명
1.2 소스 코드
1.3 실행 결과
1.4 결과 분석
2. 위 프로그램에 필요한 자원을 한꺼번에 확보하는 방법의 deadlock prevention 기법을 적용하여 작성하시오.
2.1 프로그램 설명
2.2 소스 코드 - philosopher()부분만 기재
2.3 결과 분석
3. 위 프로그램에 필요한 자원을 0,1,2,3,4 순서로 확보하는 방법의 deadlock prevention 기법을 적용하여 작성하시오.
3.1 프로그램 설명
3.2 소스 코드 - philosopher()부분만 기재
2.3 결과 분석


본문내용
1.1 프로그램 설명
picoKernel이 아닌 POSIX Library를 이용한다. 이를 위해서는 pthread.h가 필요하며, 프로세스 스케쥴링을 위해 sched.h를 사용한다.
picoKernel과 다른 점은 다음과 같다. mutex가 pthread_mutex_t 라는
구조체에 저장되며, thread도 pthread_t를 이용한다. 또한 Thread 생성 시
인자 값을 포인터로 넘겨주기 때문에 동기화 문제가 생길 수도 있다.
각 Thread는 5번의 작업을 하면 종료하게 되어 있으며, 생성은 기본 설정으로
한다. 내부의 작동은 과제#3에서 작성한 프로그램과 동일하다.
1.2 소스 코드

#include
#include
#include

pthread_mutex_t mutexChopstick[5];
pthread_t threadnum[5];
int g_id=1;

void *philosopher(void *);

int main(void)
{
int index;

for(index=0;index