2012년 3월 21일 수요일

o/s 추가 개념

 process syncronization

동시에 여러개의 쓰레드가 동일한 자료를 접근하고 조작할 때 그 실행결과가 접근이 발생한 특정 순서에 의존하는 상황이 발생하는데 이로 부터 보호하기 위해 우리는 한순가에 단하나의 쓰레드만이 공유 변수를 조작할 수 있도록 보장해주어야 한다. 이러한 보장을 위해 쓰레드에 대한 동기화기 필요하다.


사운드 포지라는 음성 편집 프로그램을 열어 파일을 불러온다. 현재 그 파일은 winamp프로그램을 통해 현재 플레이 되고 있다고 해보자

결국 현재 음악 파일이 2개의 프로그램을 통해 불러진 상태 이때 사운드 포지 에서 편집을 하게 된다면 윈엠프에서 듣공 ㅣㅇㅆ는 음악 파일은 어떻게 디는 것일가
이런한 부분이 바로 프로세스 동기화가 필요한 부분이다.

이 문제는 많은 수의 접속자를 수용하는 서버에서는 더욱더 중요한 문제가 아닐 수 없다.

::임계 구역(critical section)::
프로세스 동기화를 위해 가장 먼저 알아야 할 개념이다.
각 쓰레드들(프로세스)은 각자의 임계구역을 갖는다. 이곳에서 쓰레드는 공통변수를 변경하고 테이블을 갱신하면 파일에 대한 쓰기 작업을 수행한다.


::동기화 작업의 필요조건 3가지::
1. 상호배제(mutual exclusion)
임의 한 쓰레드가 자신의 임계구역에서 실행되고 있다면 다른 쓰레드들은 그들의 임계구역에서 실행이 불가능 하다.(임계구역에는 하나의 쓰레드만 들어갈 수 있다.)

2. 진행(progress)
임계 구역에서 실행되고 있는 쓰레드가 없고 임계구역으로 진입코자 하는 쓰레드가 다루 사면

3. 한정된 대기(Bounded waiting)
쓰레드의 Starvation을 예방코자 임의의 한 쓰레드가 임계구역에 진입요청을 한 후 다른 쓰레드들이 임계 구역에 진입하도록 허용되는 횟수에 한계를 둠(어느정도 대기를 하면 임계 구역에 들어갈 수 있도록 보장을 해줘야 함)

출처:http://cafe.naver.com/geekerproject.cafe

댓글 없음:

댓글 쓰기