[운영체제] 프로세스 동기화

혀니앤·2022년 10월 12일
0

컴퓨터 지식 공부

목록 보기
6/10

Critical Section

  • 동일한 자원에 동시에 접근하는 작업 코드 영역 (공유하는 변수, 동일 파일 사용 등)
  • 둘 이상의 스레드가 동시에 접근해서는 안되는 명령문, 코드 일부 영역

Critical Section Problem (임계영역 문제)

  • 프로세스들이 임계 영역을 함께 사용할 수 있는 프로토콜을 설계해야 함
  • Race Condition이 발생하지 않게 하기 위해 Race Condition : 동시에 여러 개의 프로세스가 동일한 자료에 접근하여 경쟁하는 현상
  • 기본조건
    • Mutual Exclusion (상호 배제) : 하나의 프로세스가 임계 구역에서 실행되고 있다면, 다른 프로세는 실행될 수 없음
    • Progress (진행) : 임계 구역에서 실행되고 있는 프로세스가 없다면 들어갈 프로세스를 적절히 선택해줘야 함. 별도의 동작이 없는 프로세스들만 진입할 수 있음
    • Bounded Waiting (한정된 대기) : 프로세스의 Starvation 을 방지하기 위해, 방치되는 프로세스를 실행해주어야 함

임계영역 해결

1) Mutex Lock

  • 임계 영역에 진입하는 프로세스가 Lock을 획득하고, 나올 때 Lock을 방출
  • 한계
    • 다중처리 환경에서 시간적으로 효율성 떨어짐
    • Busy Waiting : 다른 프로세스가 임계구역에 있는 동안 반복문을 돌면서 다른 일을 못하고 기다려야 함

2) Semaphores (세마포어)

  • Counting Semaphores : 사용 가능한 자원에 대해 그 개수. 여러 개의 프로세스를 동시에 실행할 수 있다
    • 자원을 사용할 때 S 변수 감소, 자원 방출할 때 S 증가
  • Binary : 0,1 순서로 작업
  • 한계
    • Busy Waiting : 진입 코드를 계속해서 반복실행 ⇒ CPU 시간 낭비 ⇒ 해결 : 진입 실패한 프로세스는 Block시켜두고 나중에 다시 깨움
    • DeadLock : 둘 이상의 프로세스가 임계 구역 진입을 무한정 기다리고, 실행 중인 프로세스는 기다리는 프로세스가 실행되기를 기다림
    • Starvation : 오랜 기간 선택받지 못한 프로세스가 발생

3) Monitor

1) 세마포어에서의 타이밍 오류가 계속해서 발생하므로, 항상 하나의 프로세스만 실행되도록 해서 동기화 문제를 해결

추가 개념

1) Dining-Philosophers

  • 5개의 젓가락이 있고 5명의 철학자가 있을 때, 모두 젓가락 하나씩만 가지고있으면 아무도 식사를 할 수 없음 ⇒ Deadlock 과 Starvation

참고

https://hun-developer.tistory.com/36

https://velog.io/@doyuni/운영체제OS-6.-Process-Synchronization

https://overcome-the-limits.tistory.com/342

profile
일단 시작하기

0개의 댓글