운영체제 정리( 피피티를 손수 한글로 맞음, 학점 A+)
- 최초 등록일
- 2011.08.31
- 최종 저작일
- 2011.06
- 11페이지/ 한컴오피스
- 가격 1,500원
소개글
운영체제 교과목 정리본입니다.
목차
없음
본문내용
Semaphore
- 세마포어는 하나의 변수이다 ( wait() , signal()만 사용가능한 변수 )
- 초기화는 되지만 값을 사용자 임의로 할당 할 수는 없다 ( const 변수라고 생각하면 된다 )
- Counting Semaphore 방법과 Binary Semaphore 방법이 있고, 특히 Binary Semaphore의 경우 쓰레드의 핵심이며, 가장많이 사용한다.
- Binary Semaphore를 mutex locks 라고 하며 muture Exclusion locks라고도 한다.
wait 함수
signal함수
전체함수
wait(node s)
{
while( s <= 0 );
// no - op
s--;
}
signal(s)
{
s++;
}
Semaphore s = 1;
wait(s);
// Critical Section
signal(s);
처음 s값은 1로 초기화 되어있고 이때 wait을 실행하면 s > 1이므로 s를 하나줄이고 빠져나와서 CA를 실행시킨다. CA를 실행시키는 동안 다른 프로세스가 접근을 시도할 것이고 이때 s = 0 이므로 파일문을 돌며 계속 기다리고, 첫 번째 프로세스에서 CA를 끝내면 signal을 실행해 s를 하나 올려 1을 만들어서 다른 프로세스의 wait을 종료시켜 CA에 접근 가능 하게 해준다 조금 수정하면 < wait에서 기다릴 때 큐에 넣어서 대기상태를 줄 수 있고 signal함수에서 큐에 있던 것을 하나 끌어내는 식으로 구현 할 수 있다 >
- 인터럽트 로도 구현가능한데 이렇게 구현할시 N개의 cpu때는 불가능 하다.
동기화에 대한 고전적인 문제
3가지 문제가 있다.
Bounded_Buffer Problem ( 저장할 수 있는 버퍼는 한정되 있다 )
- Producer 와 User간 변수를 정해 버퍼의 상태를 공유 할 수 있게 한다.
참고 자료
없음