검색어 입력폼

운영체제 (Test-and-Set을 사용한 생산자-소비자)

저작시기 2009.10 |등록일 2010.03.28 한글파일한글 (hwp) | 7페이지 | 가격 1,500원

소개글

1. 과제물에 대한 설명 (목표, 내용 등)
■ Test and Set 프로그램 설명
[ 기 능 ]
원래 Test_and_Set 기능은 하드웨어 적으로 지원하는 원자적 함수이다. 여기서는 atomic 키워드를 이용하여 소프트웨어 적으로 처리 하였다.
어떤 프로세스가 임계 구역에 진입하기 위해서는 반드시 Test_and_Set()함수를 실행하여 lock 공유 변수가 false가 되어야 한다. 또는 waiting이 false가 되어야 한다(waiting은 이전에 임계구역에 진입했던 프로세스가 임계 구역을 빠져나오기 전에 false로 만들어준다).

atomic bool Test_and_Set();
Test를 하여 lock변수의 값을 읽어와 임시 변수에 저장하고, lock변수에 false를 Set한다. 그리고 임시 변수의 값을 반환한다. 이 함수는 원자적으로 실행되어야 하기 때문에 atomic키워드를 사용 하였다.

목차

1. 과제물에 대한 설명 (목표, 내용 등)
2. 소스 코드
3. 실행 결과 화면 캡쳐
4. 과제후기
5. 참고문헌

본문내용

1. 과제물에 대한 설명 (목표, 내용 등)
■ Test and Set 프로그램 설명
[ 기 능 ]
원래 Test_and_Set 기능은 하드웨어 적으로 지원하는 원자적 함수이다. 여기서는 atomic 키워드를 이용하여 소프트웨어 적으로 처리 하였다.
어떤 프로세스가 임계 구역에 진입하기 위해서는 반드시 Test_and_Set()함수를 실행하여 lock 공유 변수가 false가 되어야 한다. 또는 waiting이 false가 되어야 한다(waiting은 이전에 임계구역에 진입했던 프로세스가 임계 구역을 빠져나오기 전에 false로 만들어준다).

atomic bool Test_and_Set();
Test를 하여 lock변수의 값을 읽어와 임시 변수에 저장하고, lock변수에 false를 Set한다. 그리고 임시 변수의 값을 반환한다. 이 함수는 원자적으로 실행되어야 하기 때문에 atomic키워드를 사용 하였다.

- 입력 & 출력 -
void process(int pid)
pid에 프로세스 번호를 넣는다.

cobegin
{
process(0); process(1); process(2); process(3); process(4);
process(5); process(6); process(7); process(8); process(9);
}
프로세스를 10개를 생성하여 병행 실행시킨다.

스크린 샷을 보면 각각의 프로세스들이 상호배제를 지키는 것을 알 수 있

참고 자료

http://ko.wikipedia.org/wiki/Test-and-Set
다운로드 맨위로