검색어 입력폼
평가점수A

[프로그램] 운영체제 프로그램(세마포,condition value,synchronized)동기화 프로그램

등록일 2004.06.27 한글파일한컴오피스 (hwp) | 16페이지 | 가격 3,000원

소개글

제가 정말로 열심히 해서 만든 소스입니다..
전부 잘 돌아가구여.. 전 유닉스 환경(vi)에서 작업했습니다. 도움이 되었으면 좋겠습니다.
동기화 프로그램입니다.
제가 한달간에 걸쳐 빡시게 해서 직접 완성한 프로그램들(semaphore, synchronized, condition value)의 소스, 주석, 프로그램 설명, 3가지 프로그램의 비교분석, 느낀점등이 자세하게 구성되어져 있습니다. 제가 정말 열심히한 프로그램들입니다. 도움이 되었으면 좋겠네요~~^^
참고로 전부 P(), V()를 사용한 임계구역 접근방법을 사용하였음을 알려드립니다.

목차

없음.

본문내용

3개의 프로그램 모두 각각의 방법은 다르지만, 동기화를 구현했다는 점에서는 서로 일맥상통하는데, 우선 첫 번째 java 프로그램에서는 동기화를 위해서 java에서 지원하고 있는 synchronized 키워드를 사용했는데, 이는 producer와 consumer사이의 공유버퍼 공간에서 데이터를 공유하는 여러 쓰레드들이 쓰레드 간의 충돌을 방지해 공유자원에 대한 일관성을 유지하기 위한 방법으로 사용하였다. 이 방법은 synchronized가 첨가된 메소드인 P()나 V()를 도착했을 경우 이 P(), V()메소드를 사용하고 있는 클래스는 자바 가상머신(JVM)에게 lock을 신청하고, JVM에서 승인이 나면 P() 또는 V()를 사용하고 있는 클래스 영역을 실행하고, 실행하고 있는 동안에는 lock이 걸려 있는 상태이기에 쓰레드 모니터를 사용하여 다른 쓰레드가 접근하는 것을 통제하게 된다.

두 번째 프로그램에서는 Pthread 라이브러리 중 Semaphore를 사용한 방법인데, 세마포는 3번째 프로그램에서 사용한 condition value와 같이 임계영역 문제를 해결하기 위한 동기 전용도구이다. Semaphore는 자체적으로 mutex가 보장된다는 점에서 세 번째 프로그램과 차별화되는데, condition value는 별도의 mutex를 사용해야 블록을 지정할 수 있는 반면에 semaphore에서는 wait()와 post()만으로 블록을 걸고, 푸는 것이 가능하다. 하지만 이러한 일련의 과정이 atomic(끊어지지 않고 연속되게)하게 진행 되어야 한다는 점에 주목할 필요가 있다.

마지막으로 Pthread라이브러리 중 condition value를 이용한 방법에서는 mutex가 lock을 이용한 소극적인 동기화를 제공한다면, condition value에서는 signal()과 wait()를 통한 좀더 적극적이고 세밀한 동기화 방법을 제공한다. condition은 반드시 mutex_lock를 사용해 다른 프로세스의 진입을 막는다는 점에서 Semaphore와 구별된다. 세마포의 경우는 empty와 full변수를 wait와 함께 사용해 lock의 기능을 수행할 수 있지만, condition value의 경우에는 mutex_lock를 우선적으로 사용해 원천적으로 다른 쓰레드의 진입을 막는다.

참고 자료

없음
다운로드 맨위로