컴퓨터구조 공부 정리1 - 교착상태가 무엇이고 어떻게 해결하는지!

박경현·2023년 5월 31일
0

오랜만에 cs 공부를 해서 그런지 다시 보는건데도 헷갈린다..

역시 몰입해서 공부하고 반복적으로 정리하는 것이 오래 남는 방법인가 보다

교착상태란?

교착 상태가 무엇인지 가장 잘 보여주는 그림이다

서로가 서로에게 이미 할당 된 자원을 기다리고 있다보니 이도저도 못하고 무한 로딩이 걸려버린 것!!
이렇게 서로 기다리면서 프로세스가 아무것도 못하는 상태를 교착상태라고 한다

추상적인 해결법!

일단 왜 교착상태가 일어났는지 알아야한다!!
그러기 위해서는 한눈에 이해하기 쉬운 그래프를 그려보는 방식이 좋은데

자원 할당 그래프를 그려보면 직관적으로 이해가 가능하다

SSD, CPU, 프린터라는 자원이 각 프로세스에 어떻게 할당 되었는지,
그리고 어떤 프로세스가 이 자원들을 기다리는지 화살표로 표시한 그래프

교착상태가 일어날 수 밖에 없게 만드는 4가지 조건(전부 충족 되야함)

4가지 조건을 전부 만족해야만 서로가 서로를 애타게 바라보는 교착상태가 된다

상호배제 -> 한 프로세스가 사용중인 자원을 다른 프로세스가 사용 못하는 상태
점유와 대기 -> 자원을 할당 받은 상태에서 다른 자원이 오길 기다리는 것
비선점 -> 다른 프로세스의 자원을 강제로 뺏지 못하는 상태!
원형대기 -> 프로세스들이 원의 형태로 자원을 대기하는 상태!

교착상태의 해결방법 (예방, 회피, 인정 후 회복)

  • 예방 : 위에 4가지 조건 중 하나를 없애버리면 됨!!

상호배제를 없애면? -> 난장판이 될 수 있음

점유와 대기를 없애면? -> 특정 프로세스에 모두 할당하거나 아에 할당 안하는 방식 / 자원 활용률 낮춤!

비 선점 -> 이게 그나마 효과적!, cpu등이 실제로 우선순위로 할당이 가능! / 모든 자원이 선점이 되는건 아님!

원형 대기 -> 모든 자원에 번호를 붙이고 오름차순으로 정의해주기 -> 이론임

  • 회피 : 자원을 무분별하게 할당해서 일어났다고 간주!
    조심조심 할당 => 자원의 양을 고려하여 배분!!
    근데 이건 배분 양을 알아야하지 않음?

안전 순서열 : 교착 상태 없이 안전하게 프로세스들에게 자원 할당 가능한 순서
안전 상태 : 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태 (안전 순서열 존재!)
불 안전 상태 : 교착 상태 발생 할 수도 있는 상태

  • 검출 후 회복 : 발생 인정하고 사후에 조치 ->선점을 통한 회복, 프로세스 강제 종료를 통한 회복

    선점 회복: 교착상태 인정하고 프로세스에게 일단 하나 다 주고 하나씩 해결하기!
    강제 종료 : 작업내용 읽을 수 있음

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글