작성일
20231122, 20231124
컴퓨터 시스템에는 CPU, 메모리, 입출력 장치 등과 같은 다양한 자원이 존재하고, 이를 관리하는 담당자가 운영체제(Operating System)
라는 것을 앞선 글에서 알아봤습니다.
이번 글에서는 운영체제가 시스템의 안전성과 효율성을 유지하기 위해 프로세서(CPU) 관리
, 메모리(RAM) 관리
, 입출력(I/O) 장치 관리
, 파일시스템 관리
, 네트워크 관리
, 사용자 및 권한 관리
이렇게 총 6가지 측면에서 운영체제의 자원 관리 방법을 살펴보겠습니다.
운영체제의 자원 관리 항목 첫 번째
프로세서들 간의 자원 경쟁을 조절
운영체제의 자원 관리 항목 두 번째
운영체제의 자원 관리 항목 세 번째
운영체제의 자원 관리 항목 네 번째
운영체제의 자원 관리 항목 다섯 번째
운영체제의 자원 관리 항목 여섯 번째
CS STUDY 면접 예상 질문후보
CPU 스케줄링에 대해 설명해주세요.
스케줄러의 종류는 무엇이 있나요.
CS STUDY 면접 예상 질문후보
선점형 스케줄링과 비전형 스케줄링의 차이가 무엇인가요?
선입선출 스케줄링(FCFS)에 대해 설명해주세요.
최단 작업 우선 스케줄링(SJF)에 대해 설명해주세요.
최소 잔류 시간 우선 스케줄링(SRTF) 방식에 대해 설명해주세요.
우선순위 스케줄링에 대해 설명해주세요.
라운드 로빈 스케줄링에대해 설명해주세요.
멀티 레벨 큐 스케줄링에 대해 설명해주세요.
멀티 레벨 피드백 큐 스케줄링에 대해 설명해주세요.
운영체제가 자원을 할당할 시 발생할 수 있는 대표적인 문제 상황에는 교착상태, 기아상태, 우선순위 역전, 과도한 대기 시간, 자원 과다 소모 등을 뽑을 수 있습니다.
두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 다음 단계로 진행할 수 없는 상태를 말합니다.
아래의 4가지 조건이 모두 성립되는 경우, deadlock이 발생한다.
▶ 상호배제(Mutual Exclusion)
- 프로세스들이 필요로 하는 자원에 대해 배타적인(= 독점) 통제권을 요구한다.
▶ 점유대기(Hold & Wait)
- 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
▶ 비선점(No preemption)
- 프로세스가 어떤 자원의 사용을 완료할 때까지 해당 자원을 다른 프로세스에서 뺏을 수 없다.
▶ 순환대기(Circular wait)
- 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.
출처: https://devraphy.tistory.com/242 [개발자를 향하여:티스토리]
CS STUDY 면접 예상 질문후보
기아 상태가 무엇인가요?
특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태를 말합니다.
프로세스가 필요한 자원을 계속해서 얻지 못해 영원히 기다리는 상태입니다. 프로세스에 자원을 할당하는 정책이나 알고리즘을 개선하여 기아상태를 피할 수 있어야 합니다.
CS STUDY 면접 예상 질문후보
기아 상태를 어떻게 해결할 수 있나요?
기아 상태를 해결하기 위한 방법은 다양하지만, 기본적으로는 우선순위 할당, 시간 제한, 자원 선점, 공정한 자원 할당, 자원 요청 취소 등을 활용합니다. 우선순위를 부여하여 우선적으로 자원을 할당하거나, 대기 시간을 제한하고 자원을 선점하거나, 자원을 공정하게 할당함으로써 기아 상태를 해결할 수 있습니다. 이러한 전략들을 조합하여 특정 상황에 맞게 적절한 해결책을 찾아내는 것이 중요합니다.
낮은 우선순위의 프로세스가 높은 우선순위의 프로세스가 사용 중인 자원을 기다리는 동안 높은 우선순위의 프로세스에게 자원이 할당되어 발생하는 상황입니다. 우선순위 역전을 방지하기 위해 특별한 우선순위 상속(protocol)이나 우선순위 강제 상승(priority boosting) 등의 기법을 사용할 수 있습니다.
프로세스가 필요한 자원을 얻기 위해 오랜 시간을 기다리는 상황으로, 시스템의 효율성을 저하시킵니다. 자원 할당 알고리즘이나 스케줄링 정책을 개선하여 대기 시간을 최소화해야 합니다.
여러 프로세스가 한정된 자원에 경쟁하는 상황으로, 자원의 효율적인 분배가 필요합니다. 적절한 자원 할당 전략이나 자원 공유 방법을 사용하여 경쟁을 관리할 수 있습니다. 자원 할당 문제를 해결하기 위해서는 효율적인 자원 관리 정책, 교착상태 방지 및 해결 알고리즘, 우선순위 스케줄링 등이 필요합니다. 이러한 문제들은 운영체제 설계 및 관리에서 항상 주의 깊게 다뤄져야 하는 중요한 측면입니다.
[BLOG]