세마포

원래벌레·2022년 10월 11일
0

🌞 세마포

  • P와 V라는 표준 단위 연산에 의해서만 접근되는 정수형 변수

  • 다수 프로세스들을 공유 자원 접근 관리를 위한 변수, 또는 ADT(Abstract Data type)

cf) Abstract Data Type = 연산과 데이터가 합쳐져 있는 것이다.

  • P와 V가 연산 / 정수형 변수

🌼 TAS의 단점의 해결

  • 바쁜대기

  • 공유 자원이 여러 개인 경우로 일반화가 어렵다.

🌼 세마포의 용도

  • 상호배제

  • 여러 개의 공유 자원 접근 관리

  • 프로세스들 간의 동기화 - 연산의 순서 제어

🌼 세마포 개념과 동작

세마포 S

  • 정수 변수

  • 사용 가능한 자원의 개수 표현

  • 표준 단위 연산 P와 V으로만 접근

연산 P

  • 임계 영역에 진입하는 연산

  • 프로세스가 대기하는 wait 동작

연산 V

  • 임계 영역에서 나오는 연산

  • 대기 중인 다른 프로세스 깨우는 signal 동작

세마포 연산

  • S의 값이 0일 때는 P연산 즉 wait을 할 것이다. 그리고 V 연산에 의해서 값이 1이 되면 while문을 탈출하고 다시 S값을 -- 하면서 0으로 바꾸고 임계영역을 차지한다.

  • 바쁜대기 문제는 해결하지 못했고, 공유자원 문제는 해결했다. S=3으로 초기화시 공유자원이 3개 일 때 해결한다.

세마포로 프로세스를 동기화하는 예

  • S1이 끝난 후에 S2를 수행

  • 세마포 synch는 0 으로 초기화

이진 세마포

  • 뮤텍스 라고도 부름

  • 공유 자원이 한개

  • S는 1로 초기화

계수 세마포

  • 공유 자원이 여러 개

  • S는 공유 자원 개수로 초기화

🌼 세마포의 구현

바쁜 대기를 안하는 방법

  • 세마포를 기다리는 프로세스를 대기 상태로 전환

  • 연산 wait과 signal 수정 -> 프로세스 대기전환(blocked)과 재시작(ready)을 추가

  • 세마포는 운영체제의 지원이 필요한 작업이다.

세마포를 구조체로 정의

profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글