그림으로 쉽게 배우는 운영체제 - 인프런 | 강의
이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 작성한 글입니다.
데드락이란?
데드락
🔗Deadlock, 교착상태
🔗여러 프로세스가 서로 다른 프로세스의 작업이 끝나길 기다리느라 아무도 작업을 못 하는 상태를 뜻한다.
🔗만약 어떤 자원을 여러 프로세스가 공유하지 않는다면 교착상태는 발생하지 않는다.
🔗교착상태가 일어나는 조건은 다음 네 가지다. 네 가지를 모두 충족하지 않는다면 교착상태는 일어나지 않는다.
- 상호배제: 프로세스가 특정 자원을 사용 중이라면 다른 프로세스는 그 자원에 접근할 수 없다.
- 비선점: 다른 프로세스가 사용 중인 자원을 강제로 가져올 수 없다.
- 점유와 대기: 프로세스가 자원을 점유하고 있으면서 다른 프로세스의 자원을 점유하려고 기다리고 있는 것을 말한다.
- 원형 대기: 각 프로세스가 순환적으로 다음 프로세스의 자원을 점유하려고 기다리는 것을 말한다.
🔗교착상태를 표현한 문제로는 식사하는 철학자 문제가 있다.
데드락 해결
교착상태 회피
🔗프로세스에 어느 정도의 자원을 할당해야 교착상태가 발생하는지 파악해서 교착 상태가 발생하도록 할당하는 자원을 조절한다.
🔗운영체제는 전체 자원의 수와 할당한 자원의 수를 기준으로 안정상태와 불안정상태로 구분한다. 불안정상태에서는 교착상태에 빠질 확률이 높아진다.
🔗교착상태를 피하는 방법은 다음과 같다.
- 운영체제는 전체 자원의 수를 알아야 하며 각 프로세스는 필요한 최대 자원의 숫자를 운영체제에 알려줘야 한다.
- 운영체제는 각 프로세스가 현재 사용 중인 자원의 숫자를 파악해서 그에 맞게 여유 자원을 남겨 놓는다.
- 만약 프로세스 p0가 여유 자원 이상의 자원을 요구한다면 운영체제는 프로세스p1에 여유 자원을 먼저 할당한 다음 p1의 작업이 끝나면 p1의 자원을 회수해서 p0에 할당한다.
- 즉 불안정 상태에 있더라도 모든 프로세스가 동시에 최대 자원을 요구하지 않는다면 교착 상태에 빠지지 않는다.
🔗이를 표현한 알고리즘으로는 은행원 알고리즘이 있다.
🔗교착상태를 회피하는 방법은 비용이 비싸고 비효율적이라는 단점이 있다.
교착상태 해결
🔗교착상태를 해결하는 방법은 마지막 체크포인트로 롤백하는 것이다.
🔗교착상태를 해결하려면 먼저 교착 상태가 발생한 것을 알아차려야 하는데, 여기에는 두 가지 방법이 있다. 하나는 가벼운 교착상태 검출이라고 하고 나머지 하나는 무거운 교착상태 검출이라고 한다.
🔗가벼운 교착상태 검출
- 타이머를 이용하는 방식으로, 프로세스가 일정 시간 동안 작업하지 않는다면 교착상태가 발생했다고 판단(교착상태 검출)한다.
- 마지막 체크포인으로 롤백한다.
- 교착상태가 발생하지 않았더라도 일정 시간이 지나면 프로세스를 강제 종료한다는 단점이 있다.
🔗무거운 교착상태 검출
- 자원 할당 그래프를 이용해 각 프로세스가 원형 대기 조건을 충족했는지 검사한다.
- 원형 대기 조건을 충족했다면 교창상태가 발생한 거로 보고 교착상태를 일으킨 프로세스를 강제 종료한다.
- 그 후 다시 실행할 때 체크포인트로 롤백한다.
- 운영체제가 지속적으로 자원 할당 그래프를 유지하고 검사해야 하기 때문에 오버헤드가 발생한다는 단점이 있다.
'운영체제 > 그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글
가상메모리 (0) | 2022.04.01 |
---|---|
메모리 종류 (0) | 2022.03.29 |
프로세스 동기화 (0) | 2022.03.28 |
CPU 스케줄링 (0) | 2022.03.25 |
프로세스와 쓰레드 (0) | 2022.03.24 |