본문 바로가기

CS16

[OS] 교착상태와 해결 방법 교착상태(deadlock) 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태. 둘 이상의 프로세스나 스레드가 서로 필요한 자원을 얻지 못하고 무한히 대기하는 상태. 교착상태의 발생 조건 아래의 4가지 조건을 모두 만족했을 때 교착상태의 발생 가능성이 있다. 상호 배제 : 동시에 자원 사용이 불가능한 경우 점유와 대기 : 자원을 할당받을 채 다른 자원의 할당을 기다리는 경우 비선점 : 강제로 자원을 빼앗을 수 없는 경우 원형 대기 : 자원을 원형으로 대기할 경우 교착상태 해결 방법 교착상태 예방 교착상태 발생 조건 중 네가지 중 하나를 없애는 것 교착상태가 발생 배경 원천을 차단한다. 교착상태가 발생하지 않음을 보장할 수 있지만 여러 부작.. 2023. 9. 10.
[OS] 조건 변수와 모니터 기존 동기화 도구의 문제점은 세마포어를 누락하거나, wait과 signal 순서를 햇갈린 경우 등 실수를 할 수 있다는 것이다. 이런 것들을 방지하기 위해서 사용이 간편한 동기화 도구를 모니터라고 한다.(입출력장치의 모니터가 아닌 동기화도구 모니터임) 모니터 공유 자원에 접근하기 위한 인터페이스를 분리해둔 방식 정해진 인터페이스를 통해서만 공유자원에 접근할 수 있도록 만들어둔다. 이를 통해 상호 배제가 보장된다. 실행 순서 제어를 위한 동기화를 위해 조건 변수를 사용한다. 조건 변수 현재 프로세스의 상태를 상황에 따라 변경할 수 있는 특별한 변수로 wait(), signal()연산이 가능한 변수다. wait() : 호출한 프로세스를 대기 상태로 전환 signal() : 호출한 프로세스를 깨움 조건변수를 .. 2023. 9. 9.
[OS] 뮤텍스 락과 세마포어 동기화를 하기 위해서 지켜야 하는 3가지 원칙 상호 배제 : 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 대기해야함 진행 : 어떤 프로세스라도 임계 구역에 진입하지 않았다면 진입이 가능해야함 유한 대기 : 한 프로세스가 임계 구역에 진입하기 위해 대기하고 있다면 언젠가 진입이 가능해야 함 뮤텍스 락 : 상호 배제를 위한 동기화 도구 상호 배제를 위한 동기화 도구로 한번에 하나의 프로세스만 자원에 접근할 수 있도록 하는 락 메커니즘을 제공한다. 뮤텍스 락은 acquire 함수와 release 함수를 사용한다. 자물쇠 잠그기 역할을 하는 acquire 함수 락을 얻기 위해 호출되며 락을 얻을 때 까지 대기하거나 스핀한다. 락을 획득했다면 임계구역에 진입한다. 여기서 락을 얻을 때 까지, 반복적으로 .. 2023. 9. 9.
[OS] 프로세스 동기화 실행에 문맥을 갖고있는 모든 것들은 동기화 대상이다. 동시다발적으로 실행되는 프로세스(& 스레드)는 실행 순서와 자원의 일관성을 고려해야한다. 운영체제가 제공하는 동기화의 의미 1. 실행 순서 제어 : 프로세스를 올바른 순서로 실행하기 2. 상호 배제 : 자원의 일관성을 위해서 동시에 접근해서는 안되는 자원에 하나만 접근하기 운영체제에서 이야기하는 동기화 라는 것은 동시다발적으로 실행되는 프로세스와 스레드가 고려해야하는 것 중 하나인데 크게 실행 순서제어, 상호 배제로 나눌 수 있다. 실행 순서 제어는 프로세스 혹은 스레드를 올바른 순서대로 실행하는 것을 의미하고 상호 배제는 동시에 접근하면 안되는 자원에 하나만 접근하는 것을 의미한다. 실행 순서 제어를 위한 동기화의 예 다음과 같이 동시에 실행되는 프.. 2023. 9. 9.