IT recording...

[OS] 8. 프로세스 동기화 문제 - (2) 본문

Operating System

[OS] 8. 프로세스 동기화 문제 - (2)

I-one 2022. 4. 24. 01:40

[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]

운영체제

운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw.net

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net


[그림과 함께 편하게 보려면 여기로]

https://adorable-aspen-d23.notion.site/OS-8-2-1934aee84bac41f1a81de05bdec0492f

 

[OS] 8. 프로세스 동기화 문제 - (2)

1. Deadlock and Starvation

adorable-aspen-d23.notion.site

1. Deadlock and Starvation

1. DeadLock

  • 둘 이상의 프로세스가 서로 상대방에 의해 충족될 수 있는 event를 무한히 기다리는 현상
  • ex) 하드웨어 A → B로 자료를 옮기는 과정에서 A,B 세마포어를 모두 가져야만 하는 프로세스가 두 개 일때
  • P0에서 S를 획득한 상태에서 CPU를 뺏겨서 P1가 실행됨 → waiting
  • P1가 Q를 획득한 상태에서 S를 기다림 → waiting
  • 각각 S와 Q는 임계구역을 빠져나가고 release 되는데, 그렇지 못하므로 deadlock에 빠짐
  • 해결
    • 둘 다 S,Q로 순서를 맞춰주면 됨

2. Syncronization 문제

1. Bonded-Buffer Problem

  • 크기가 유한인 버퍼 문제

1. Producer-Consumer Problem

  • 생산자 프로세스는 데이터를 만들어서 버퍼에 넣는다.
  • 소비자 프로세스는 데이터를 버퍼에서 꺼내간다.

2. 문제점

  • 공유 데이터에 대한 Syncronization 문제
    • 생산자 - 생산자
      • 생산자가 도착해서 빈 곳에 데이터를 쓰고 있다. 근데 CPU를 빼앗기고, 다른 생산자가 도착해서 동일한 버퍼에 데이터를 쓴다 ⇒ 데이터 유실
    • 소비자 - 소비자
      • 소비자가 도착해서 데이터 하나 꺼내 쓰려고 했는데 CPU를 빼앗기고, 다른 소비자가 동일한 데이터를 가져간다면?
    • 해결방법
      • 공유 버퍼에 Lock을 걸어 해결한다. (Semaphore)
  • 버퍼가 유한하기 때문에 생기는 문제
    • 생산자 - 생산자
      • 버퍼가 다 차있는데 생산자가 도착한다면, 사용할 수 있는 자원이 없는 상태이다.
      • 생산자 입장 가용 자원 : 비어있는 버퍼의 수
    • 소비자 - 소비자
      • 버퍼가 비어있는데 소비자가 도착한다면, 사용할 수 있는 자원이 없는 상태이다.
      • 소비자 입장 가용 자원 : 차있는 버퍼의 수
    • 해결방법
      • 버퍼가 비어있는지, 차있는지 확인하고 각 생산자, 소비자를 상대방이 깨워주자

2. Readers-Writers Problem

  • 공유데이터 : DB, readCount
  • 고려할 점
    • Write는 동시에 하면 안되지만, Read는 동시에 해도 된다.
      • Read가 왔는데도 Block시킨다면 비효율적
      • 근데 Read에도 락을 걸기는 해야한다. (Write는 오면 안되니까!)
  • Read 친구들이 lock을 공유할 수 있게 하자
    • readCount도 공유변수이기 때문에 P(mutex)로 막는다.
  • Read 하는 중에 Write가 오면 안되므로 (혹은 반대도) P(db)로 막는다.
    • 처음 읽는 애가 P(db)설정
    • 마지막에 읽고 나가는 애가 V(db)
  • 단점
    • Starvation
      • Reader가 계속 SharedLock 차지시 Writer 기아/무한봉쇄 발생 가능하다.
    • 해결방법
      • Reader-Writer 대기큐를 두고 우선순위를 줘서 Writer도 동작하게끔 한다.

3. Dining-Philosophers Problem (Deadlock)

교착상태 발생

  • 공유 데이터 : 젓가락
    • 모든 철학자들은 왼쪽, 오른쪽의 젓가락을 들어야 밥을 먹을 수 있는데,
    • 각각의 철학자마다 행동 주기가 다르다.
      • 젓가락을 잡을 수 없는 상황이라면 기다린다.
      • 밥을 다 먹었을 때만 왼쪽, 오른쪽 젓가락을 순서대로 놓는다.
    • 문제점
      • 모든 철학자가 왼쪽 젓가락만 잡은 경우, 누구도 내려놓지 않아서 누구도 식사할 수 없다. (DeadLock)
    • 해결방안
      • 4명만 동시에 테이블에 앉을 수 있게 한다.
      • 젓가락을 동시에 집을 수 있을 때만 집게 한다.
      • 비대칭
        • 짝수는 왼쪽 먼저, 홀수는 오른쪽을 먼저 잡도록 한다.
        • 생각해보면 짝수 입장에서 왼쪽 젓가락은 홀수 입장에서 오른쪽 젓가락이다.
          • 그래서 같은 공유 자원을 잡을 수 있는 애가 먼저 잡도록 해서 해결 가능한 것

'Operating System' 카테고리의 다른 글

[OS] 10. 메모리 관리 - (1)  (0) 2022.05.15
[OS] 9. 데드락 - (3)  (0) 2022.04.24
[OS] 7. 프로세스 동기화, 임계구역 - (1)  (0) 2022.04.24
[OS] 6. CPU 스케줄링  (0) 2022.04.24
[OS] 5. 쓰레드  (0) 2022.04.24
Comments