크래프톤 정글/TIL

[크래프톤 정글 5기] PintOS 프로젝트 여섯번째 날, Multiprocess vs Multithread, deadlock 해결 전략

양선규 2024. 5. 14. 16:01
728x90
반응형

응용 프로그램 구현 시, Multiprocess와 Multithread중 하나를 선택하는 기준

1. 안정성 vs 자원 사용 : 시스템 안정성이 매우 중요하면 멀티프로세스가 선호된다. 리소스가 제한적인 경우 멀티스레드가 더 효율적일 수 있다.

2. 구현의 복잡성 : 스레드는 공유 메모리로 인해 동기화 문제가 복잡해질 수 있다. 따라서 멀티스레드를 사용하려면 개발자의 동시성 제어에 대한 이해도가 중요하다.

3. 응답 시간 : 멀티 스레드는 Context Switching이 빠르게 때문에, 빠른 응답 시간을 요구하는 경유 유리하다.

4. 플랫폼 및 언어 지원 : 사용 중인 프로그래밍 언어나 플랫폼이, 멀티스레드 또는 멀티프로세스 중 어느 쪽을 더 잘 지원하는지 고려할 수 있다.

 

멀티프로세스 : 조금 느리고 쉽지만 안정성 좋다, 리소스 충분해야 한다

멀티스레드 : 조금 어렵고 안정성 떨어지지만 빠르다, 리소스 제한적일 때 좋다

 

데드락(Deadlock, 교착상태) 해결 전략

1. 데드락 예방(Deadlock Prevention)

- 데드락 발생을 원천적으로 차단

- 데드락의 4가지 필수 조건 중, 적어도 하나를 제거함으로써 데드락 방지

2. 데드락 회피(Deadlock Avoidance)

- 시스템이 데드락 상태로 진입하는 것을 회피하는 전략

- 리소스 할당 결정 시 데드락의 가능성을 고려한다

- ex) 뱅커스 알고리즘. 프로세스에 리소스를 할당하기 전, 안전 상태를 유지할 수 있는지 확인하고 데드락 위험이 있다면 리소스를 할당하지 않는다

3. 데드락 탐지 및 회복(Deadlock Detection and Recovery)

- 시스템이 데드락을 탐지하여 이를 해결한다

- 주기적으로 리소스 할당 그래프를 검사하여, 순환 대기(환형 대기)조건을 찾는 것으로 이루어질 수 있다.

-> 순환 대기 : 프로세스가 자원을 할당받은 상태에서 서로의 자원을 요청하여 끝없는 대기가 이루어 지는 것

- 데드락 탐지 시, 시스템은 리소스를 중지하거나 리소스 할당을 롤백하여 데드락을 해결한다.

4. 자원의 상호 배제 제거(Ignoring Mutual Exclusion)

- 일부 경우에, 리소스의 상호 배제 조건을 제거할 수 있다. (리소스 공유가 가능하게 만듦)

- 리소스 공유가 가능한 경우, 여러 프로세스가 동시에 해당 리소스를 사용할 수 있기 때문에 해당 리소스 때문에 데드락이 발생하는 일은 없다.

- 이런 방식으로 상호 배제 조건을 제거하여 데드락 발생 가능성을 줄인다.

 

순환 대기(환형 대기)상태

728x90
반응형