[충남대 최훈]운영체제 생산자 소비자 문제 구현 및 커널 알고리즘 분석
- 최초 등록일
- 2012.10.13
- 최종 저작일
- 2011.04
- 22페이지/ 한컴오피스
- 가격 7,000원
소개글
과제의 목표
◯ 내용
□ 생산자- 소비자 문제 구현
□ 커널 알고리즘 분석
◯ 도출해야 할 결과
□ 생산자-소비자 알고리즘을 Unix/Linux에서 구현한다.
․ Three processes with shared memory
․ Three threads
․ 생산자가 버퍼에 저장한 시각과 소비자가 버퍼에서 읽어갈 때의 시각 및 그 차이 및 20개 시간차의 평균값을 출력한다.
․ 두 방법 모두 item을 생산하고 소비하는데 random한 시간이 걸리게 한다.
□ The Design of the UNIX OS책의 알고리즘을 분석하여 커널이 어떻게 동작하는지 설명한다
2. 생산자 -소비자 문제 주요 모듈 설명
◯ Multi Process
□ fork()함수를 통해 같은 코드를 실행하는 또 다른 process를 가질 수 있다. 이러한 프로세스들이 서로 통신하기 위해서는 IPC(Semaphore, Queue, shared memory, message passing)방법을 사용해야 한다. 이번 과제에서 사용한 shared memory생성을 위해 사용된 함수들을 살펴보자.
목차
1. 과제의 목표
2. 생산자 -소비자 문제 주요 모듈 설명
2. 커널 알고리즘 분석
본문내용
1. 과제의 목표
내용
□ 생산자- 소비자 문제 구현
□ 커널 알고리즘 분석
도출해야 할 결과
□ 생산자-소비자 알고리즘을 Unix/Linux에서 구현한다.
Three processes with shared memory
Three threads
생산자가 버퍼에 저장한 시각과 소비자가 버퍼에서 읽어갈 때의 시각 및 그 차이 및 20개 시간차의 평균값을 출력한다.
두 방법 모두 item을 생산하고 소비하는데 random한 시간이 걸리게 한다.
□ The Design of the UNIX OS책의 알고리즘을 분석하여 커널이 어떻게 동작하는지 설명한다
2. 생산자 -소비자 문제 주요 모듈 설명
Multi Process
□ fork()함수를 통해 같은 코드를 실행하는 또 다른 process를 가질 수 있다. 이러한 프로세스들이 서로 통신하기 위해서는 IPC(Semaphore, Queue, shared memory, message passing)방법을 사용해야 한다. 이번 과제에서 사용한 shared memory생성을 위해 사용된 함수들을 살펴보자.
SYSTEM CALL : int shmget( key_t key, int size, int shmflg );
- 새로운 메시지 큐를 만들거나 존재하는 큐에 접근하기 위해 shmget()시스템 콜이 사용된다.
- shmget()의 첫번째 아규먼트는 키값이다(ftok()호출에 의해 반환된). 이 키값은 커널안에 존재하는 다른 공유 메모리 세그먼트의 키값과 비교되어진다. 이때, 열기 나 접근 동작은 shmflg 아규먼트의 내용에 달려있다.
- IPC_CREAT : 커널안에 이미 존재하지 않는다면 세그먼트를 만든다.
SYSTEM CALL : int shmat( int shmid, char * shmaddr, int shmflg)
- addr 아규먼트가 제로(0)이면, 커널은 매핑되지 않은 지역을 찾으려고 한다.
- 세그먼트를 위한 유효한 IPC 확인자가 넘겨지고 세그먼트가 붙여진 주소를 반환한다.
SYSTEM CALL : int shmctl( int shmqid, int cmd, struct shmid_ds *buf);
- IPC_RMID : 제거하기 위해 세그먼트에 표시하는데 실제로 커널로부터 세그먼트를 제거 하는 것이 아니라, 제거하기 위해 세그먼트에 표시를 해둔다. 실제적인 제거 자체는 현재 세그먼트에 붙어있는 마지막 프로세스가 적절해 detached됐을 때 일어난다. 현재 세그먼트에 붙어있는 프로세스가 없으면, 제거는 즉시 이루어진다. 공유메모리 세그먼트에서 detach되기 위해 프로세스는 shmdt시스템 호출을 호출한다.
SYSTEM CALL : int shmdt( char *shmaddr)
- 위의 shmctl에서 설명한 것과 같이 공유 메모리 세그먼트가 프로세스에 의해 더 이상 필요가 없어진 후에, 이 시스템 콜을 호출하여 detach되어져야 한다.
참고 자료
없음