본문 바로가기
운영체제

운영체제 프로세스 자원 할당에 대하여 ( 2 )

by 흰색남자 2022. 9. 28.

참고 : https://kils-log-of-develop.tistory.com/640

 

 

이제 프로세스 할당 과정에서 발생하는 문제점에 대해서 알아보기 전에 프로세스의 상태부터 알아보자

 

 

 

 

 

 

위에꺼 외울 필요도 없이 당연한거긴함. 상태 종류만 뭐가 있는지 확인만 해두자.

PID / Process Identifier

PCB / Process Control Block  

얘네는 컨텍스트 스위칭할때도 나오니 찾아보셈

 

이왕 하는김에 메모리 구조도 알아도자.. JVM이랑 비슷하게 생김

 

 

데드락 ( 교착상태 / Dead Lock ) 이란 우리가 사용하는 CPU에는 한정된 자원을 가지고 있다. 필자의 CPU는 20개의 논리 프로세서를 가지고 있다.

이 자원을 누가 사용하는가를 놓고 특정 알고리즘에 의하여 할당받는다.

프로세스 할당과정에서 대기 상태로 들어간 프로세스가 실행상태로 돌아갈 수 없는 것을 데드락이라고 한다.

 

데드락의 4가지 조건은

1. 상호 베타

2. 보유 및 대기

3. 비선점

4. 환형 대기

를 모두 만족해야해서 잘 발생하지 않는다. // 필요 충분 조건이 아니라 필요 조건임. 무조건 발생하지는 않음

이렇게 말하면 아무도 못알아먹으니 풀어서 말하자면

 

 

A, B프로그램이 있고 하나의 프로세스 C가 있다고 가정하자.

A가 C를 할당받아 프로그램을 돌리고 있고, B가 C 자원을 사용하기 위해 대기하고 있다. 하지만 A를 실행하기 위해서는 B를 실행해야한다. 여기서 자원 할당 알고리즘은 비선점 알고리즘 중 하나이다.

이렇게 되면 데드락이 발생할 수!! 있다(가정임)

 

 

이를 방지하기 위해서는 방시, 회피, 복구, 무시 방법이 있다.

1. 예방 : 데드락이 생길 4가지 조건 중 하나를 없앰.

2. 회피 : 데드락이 발생할 가능성을 배제하지 않고 적절히 회피(?) // 뭔 개소린지 모르겠음

 - 은행원 알고리즘 :  https://jhnyang.tistory.com/102

 - 자원 할당 그래프 알고리즘 : 자원 할당 그래프를 만들어서 사이클이 없을 경우( 저 위에 사진 ) 자원을 할당 

3. 탐지 : 데드락를 허용하지만 발생하면 다시 회복함

4. 무시 : 그냥 무시해버림 // ...??  윈도우가 이거 사용한다함...