프로세스 동기화(thread, 세마포기능 이용, 리눅스)
- 최초 등록일
- 2012.06.27
- 최종 저작일
- 2012.06
- 7페이지/ 압축파일
- 가격 1,000원
소개글
제목: 프로세스 동기화
프로그램 내용:
1. Producer/Consumer 프로그램
가. 먼저 동기화 (세마포 등) 기능 없이 프로그램을 작성하고 수행하시오.
나. 동기화 기능이 없을 때 어떠한 문제들이 발생하는지 프로그램 수행결과를 바탕으로 설명하시오. (만일 예상되는 문제가 발생되지 않을 경우, 이유를 설명하고 프로그램을 수정하여 문제를 발생시킴, 즉 race condition 이 발생하도록 함)
다. 동기화 기능을 추가한 프로그램을 작성하여 문제를 해결하고 확인하시오.
2. Reader/Writer 프로그램
가. 먼저 동기화 (세마포 등) 기능 없이 프로그램을 작성하고 수행하시오.
나. 동기화 기능이 없을 때 어떠한 문제들이 발생하는지 프로그램 수행 결과를 바탕으로 설명하시오. (만일 예상되는 문제가 발생되지 않을 경우, 이유를 설명하고 프로그램을 수정하여 문제를 발생시킴, 즉 race condition 이 발생하도록 함)
다. 동기화 기능을 추가한 프로그램을 작성하여 문제를 해결하고 확인하시오
* producer, consumer, reader, writer 의 개수는 적당히 조절하며, 그 밖의 가정은 상식적인 수준에서 가능함
제출물:
1. 원천코드
2. 동작시험 결과 (프로그램이 어느 수준까지 동작되었는지 설명하고 근거 자료를 제시)
3. 토의 및 느낀점
목차
1. 보고서
2. 각 소스코드
본문내용
3. 토의 및 느낀 점
여러 명의 reader와 writer가 있을 경우, 하나의 파일이나, 버퍼(문자열)에 접근하게 될 경우 문제가 발생할 수 있다. 예를 들어 하나의 파일을 여러 명의 사용자가 읽기 전용으로 읽는다면, 아무 상관이 없다. 하지만 다수의 writer가 접근하여 내용을 변경하게 된다면 이 때 문제가 발생하는 것이다. 다수가 쓰기 권한을 갖는다면, 원하는 결과를 얻을 수 없기 때문이다. 자신이 원하는 내용을 쓰고 저장하였지만, 다른 사용자가 접근하여 다른 내용을 저장하게 된다면 결국 자신이 원하는 결과가 아닌 다른 내용이 저장되게 되는 것이다. 따라서 상호 배제가 이루어져야한다. 하나의 writer가 접근할 시 다른 사용자들은 접근하여 쓰기를 행할 수 없도록 해야 하는 것이다. 이 또한 위에서 설명한 것과 같은 race condition의 문제다. 수정된 코드에서는 세마포를 이용하여 문제를 해결하였다. wrt 세마포는 reader와 writer가 모두 공유하고 이는 writer들의 상호 배제를 위한 것이다. mutex 세마포는 readcount를 갱신할 때 상호 배제를 보장하기 위한 것으로 readcount는 현재 몇 개의 프로세스들이 객체를 읽고 있는지 여부를 알려준다. 수정된 코드를 수행한다면, 여러 명의 reader는 동시에 읽기 모드를 수행 할 수 있고, 쓰기의 경우 writer는 오직 한 사람만이 접근 할 수
참고 자료
없음
압축파일 내 파일목록
OS2.200420254.김동선.hwp
rw2.c
pc.c
pc2.c
rw.c
운영체제+과제+2+-+동기화.hwp