Mathlife
Mathlife의 학습 노트
Mathlife
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • 알고리즘
      • 자료구조
      • 운영체제
      • 네트워크
      • 데이터베이스
    • 프로그래밍 언어
      • Java
      • JavaScript
      • C·C++
      • Python
    • Backend
      • Spring
    • Frontend
      • HTML
      • CSS
    • Math
      • Linear Algebra
      • Calculus
    • AI
      • ML
      • DL
      • RL
    • Git

블로그 메뉴

  • 홈
  • 관리
  • 글쓰기
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mathlife

Mathlife의 학습 노트

Process Synchronization II
CS/운영체제

Process Synchronization II

2022. 5. 14. 10:15

출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님

 

2개의 자원을 다 가져야만 하는 작업이라고 생각해보자.

 

ex) A라는 데이터를 읽어서 B에다가 저장

 

만약에 하나씩 차지하게 되면? 

P0가 S를 얻은 후 CPU를 뻇기면 P1이 Q를 획득하는데 S는 획득 못함

다시 P0로 넘어가서 Q를 획득하려고 했더니 없음 ...

 

일이 다 끝나야만 자원을 내어놓기 때문에 

 

데드락

 

(다르게 이야기하면 각각의 입장에서는 starvation 이기도 한데 ..

 

이렇게 자원을 얻는 순서를 지정해주면 데드락이 생기지 않는다

 

Classical Problems of Synchronization

 

1. Producer-Consumer Problem

 

생산자 프로세스는 데이터를 만들어서 집어넣는 역할

소비자 프로세스는 데이터를 꺼내가는 역할

 

생산자 -생산자 lock 안걸면 데이터가 덮어 씌워지는 문제

-> lock 걸고 넣고 buffer 인덱스 옮기고? lock 푼다

 

소비자 프로세스도 비슷

 

생-소 사이에도,

 

여튼 lock 걸어서 딱 하나의 프로세스만 버퍼 사용하게 해야 한다

 

 

생산자 입장에서는 빈 버퍼가 자원

여러 생산자 프로세스가 밀어닥쳐서 꽉 채워버리면

소비자가 소비해서 빈 버퍼가 생길 때까지 기다린다

 

소비자 입장에서는 full 버퍼가 자원

생산자가 생산해서 내용이 있는 버퍼가 생길 떄까지 기다린다

 

counting semaphore 사용해서 full/empry buffer 수 

 

binary semaphore로 생산자끼리 or 소비자끼리 lock/unlock (mutex 문제)

 

2. Readers and Writers Problem

db는 DB 자체에 거는 lock 

writer가 걸었으면 접근 막고

reader가 걸었으면 readcount 참고해서 혼자 읽거나 같이 읽거나

 

근데 readcount도 공유 변수니까 mutex로 lock 걸고 증감해야한다

 

코드 잘보면 write 안하는 중에는 reader의 P(db)가 writer 막는 목적으로 작용

write 중에는 reader가 P(db)에 막혀서 읽지 못하게 됨

 

이 방식의 문제는 reader가 모두 나가야 write가 가능해진다는 것

starvation

 

신호등과 같은 원리로 일정 시간 이내에 들어온 reader들만 접근할 수 있게 해주고 그 이외에는 writer한테만.

 

으 귀찮다...

'CS > 운영체제' 카테고리의 다른 글

[ETL] Functions of OS  (0) 2022.05.14
[ETL] Evolution of OS  (0) 2022.05.14
Process Synchronization I  (0) 2022.05.14
CPU 스케줄링  (0) 2022.05.14
프로세스 관리  (0) 2022.05.09
    'CS/운영체제' 카테고리의 다른 글
    • [ETL] Functions of OS
    • [ETL] Evolution of OS
    • Process Synchronization I
    • CPU 스케줄링
    Mathlife
    Mathlife

    티스토리툴바