ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 운영체제 04
    쾌락없는 책임 (공부)/운영체제 2021. 5. 19. 14:31
    반응형

    본 포스트는 '신용현'교수님의 운영체제 강의를 듣고

    이해, 정리한 내용들을 올린 포스트입니다.

    - 강의자료는 올리지 않습니다.




    Bounded Buffer

    각자의 프로세서들은 공통된 버퍼에 접근하는 경우가 있고 이 경우 동기화를 잘 해줘야 각종 오류들을 피할 수 있습니다. 

     

     

    Reader-Writer 문제

    여러 프로세스가 데이터들을 공유할 때 단순히 읽기만 하는 프로세스가 있는 반면 쓰기를 해서 데이터를 변경하는 프로세스가 있습니다. Reader가 여러개인 경우는 큰 문제가 되지 않지만 데이터 수정을 하는 Writer가 여럿이면 데이터 변경에 있어서 제한을 둬야 합니다.

    Reader Writer
    readcount를 통해 몇명이 읽는지를 알려줌 write를 하기 전 p(wrt) = 0으로 해 읽기 불가 상태로 만듬
    덕분에 쓰기를 여럿 할 수 없고 쓰는 중 읽기 불가 

     

    Dining-Philosophers 문제

    이 문제의 경우 비유를 하자면 원탁에서 저녁 식사를 하기 위해 각자 젓가락이 필요하게 된다. 그런데 적가락이 5개, 사람이 5명이라 일단 각자 1개씩 들고가는데 그러면 남은 한개를 구하지 못해 서로 멈춰있다는 것입니다. 이로 인해서 각자 젓가락을 찾는 이른바 데드락이 발생하기 때문에 이를 방지해야 합니다.

     

    데드락

     데드락의 경우 프로세스들 간 자원을 공유하는데 다른 프로세스가 선점한 자원을 원해 무한정 기다리고, 이것들이 꼬리를 물고 발생하는걸 말합니다.

     

    -데드락은 4 조건이 동시에 발생하면 나타나게 되는데 그 조건들은 아래와 같습니다.

        1. 상호 배제(Mutual Exclusion)을 지키고 있을 때.

        2. 추가적인 자원을 위해서 기다릴 때 (Hold and Wait)

        3. No Preemptive

        4. 원형으로 기다림 (사이클이 있음)

     위 4가지 조건 중에서 특히 4번을 위해 프로레스가 원하는 자원, 자원이 어느 프로세스에 할당되는지를 그래프로 그려 표현할 수 있으며 여기서 사이클이 있으며 데드락이 발생한 것이고 없다면 데드락이 없는 것입니다.

     ( 사이클 모양이지만 화살표 방향으로 인해 사이클이 아니라면 데드락 발생 가능성이 있는 그래프 입니다 )

     

    -데드락을 처리하는 3가지 방법

    1) 데드락 방지 (Prevention)

     : 위 4가지 조건중 하나를 포기하면 데드락을 예방할 수 있습니다. 그런데 1번은 무시가 절대 불가능하니 남은 3가지중 하나를 포기해서 데드락 자체를 예방하는 방법입니다.

        2번을 포기한다는건 프로세스 수행 전 필요한 자원을 한번에 할당하는 것이고 3번의 경우 다른 프로세스가 자원을 들고있어 자원을 모두 가져오지 못했다면 가져온 자원을 모두 반납하고 다음번을 기다리는 것입니다.

        4번의 경우 자원 할당에 순서를 준다는 것입니다. A,B 자원이 있을때 각자의 프로세스가 A, B 를 따로 가져간다면 남은 하나를 위해 기다리므로 데드락이 발생합니다. 때문에 두 프로세스 모두 자원을 A먼저 할당해야 한다고 하면 한 선점한 프로세스만이 다음 자원을 가져갈 수 있게 됩니다. 이로서 데드락을 예방하는 것이죠.

     

    2) 데드락 피하기 (Avoidance)

     : 데드락을 피하는 알고리즘은 프로세스의 상태를 2가지로 나눕니다. 데드락 가능성이 전혀 없는 Safe상태와 데드락 발생 가능성이 있는 Unsafe 상태입니다. 이런 Unsafe상태는 위 그래프 설명에 있는 데드락 발생 가능성이 있는 그래프를 의미합니다. 결론적으로 그런 상태가 있다면 deny해서 피한다는 것입니다. 데드락이 발생하지 않아도 피하는 것이죠.

     

    3) 데드락 발견 후 처리 (Detection / Recovery)

     : 데드락이 발생했다는걸 전제로 나온 알고리즘입니다. 데드락은 주기적으로 사이클을 탐색해 탐지하며 만약 데드락이 발생했다면 관련 프로세스들을 전부 종료하거나 데드락이 사라질때 까지 하나씩 중단하는 형식입니다.

    반응형

    '쾌락없는 책임 (공부) > 운영체제' 카테고리의 다른 글

    운영체제 06  (0) 2021.05.27
    운영체제 05  (0) 2021.05.19
    운영체제 03  (0) 2021.04.10
    운영체제 02  (0) 2021.04.10
    운영체제 01  (0) 2021.04.09

    댓글

Designed by Tistory.