우선순위 역전
"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 본문
우선순위 역전(Priority Inversion)은 실시간 운영체제(RTOS)나 우선순위 기반 스케줄링을 사용하는 환경에서 발생하는 현상으로, 다음과 같이 정의 및 설명될 수 있습니다:
정의:
- 낮은 우선순위를 가진 작업(Task)이 공유 자원(예: 세마포어)을 점유하고 있을 때, 높은 우선순위를 가진 작업이 해당 공유 자원이 필요하여 대기하게 되는 상황입니다. 이 때, 중간 우선순위를 가진 작업이 낮은 우선순위의 작업보다 먼저 실행되어, 결과적으로 우선순위가 높은 작업이 가장 늦게 실행되는 현상을 말합니다.
- 간단히 말하면, 우선순위가 높은 프로세스가 우선순위가 낮은 프로세스 때문에 실행되지 못하고 지연되는 현상입니다.
발생 원인:
- 공유 자원 접근: 주로 공유 자원에 대한 접근을 제어하는 과정(동기화)에서 발생합니다. 낮은 우선순위의 작업이 공유 자원을 점유하고 있는 동안, 높은 우선순위의 작업이 동일한 자원을 필요로 할 때 발생합니다.
- 스케줄링과 동기화의 상호작용: 스케줄링 규칙에 따라 실행되어야 하는 쓰레드와 동기화 메커니즘에 의해 실행되어야 하는 쓰레드가 서로 다를 때, 우선순위 역전이 발생할 수 있습니다.
- 선점형 스케줄링: 선점형 스케줄링 방식에서 우선순위가 높은 작업이 우선순위가 낮은 작업의 실행 순서를 역전시킬 수 있습니다.
발생 시나리오 예시:1. Task 1 (높은 우선순위), Task 2 (중간 우선순위), Task 3 (낮은 우선순위) 세 개의 작업이 있다고 가정합니다.
2. Task 3가 공유 자원(예: 세마포어)을 획득하여 사용 중입니다.
3. Task 1이 실행되어 공유 자원을 요청하지만, Task 3가 이미 점유하고 있으므로 대기 상태가 됩니다.
4. Task 2가 실행됩니다. Task 2는 공유 자원과 관련이 없으므로 Task 3보다 우선순위가 높아 실행됩니다.
5. Task 2가 완료될 때까지 Task 3는 실행되지 못하고, 공유 자원을 반환하지 못합니다.
6. 결과적으로 Task 1은 Task 2와 Task 3가 모두 완료될 때까지 대기해야 하므로, 우선순위가 가장 높음에도 불구하고 가장 늦게 실행됩니다.
문제점:
- 실시간성 저해: 실시간 시스템에서 중요한 작업의 수행이 지연되어, 정해진 시간 안에 완료되지 못할 수 있습니다.
- 시스템 성능 저하: 중요한 작업이 무한정 대기하게 되면, 전체 시스템의 성능 저하 또는 이상 현상을 유발할 수 있습니다.
해결 방법:
- 우선순위 상속(Priority Inheritance): 낮은 우선순위의 작업이 공유 자원을 점유하는 동안, 해당 작업의 우선순위를 일시적으로 높은 우선순위 작업의 수준으로 높여주는 방법입니다. 이를 통해 중간 우선순위 작업에 의한 간섭을 방지하고, 높은 우선순위 작업이 빠르게 실행될 수 있도록 합니다.
- 우선순위 실링 프로토콜 (Priority Ceiling Protocol): 공유 자원마다 우선순위 상한(ceiling)을 설정하고, 이 상한 이상의 우선순위를 가진 작업만이 해당 자원에 접근할 수 있도록 하는 방법입니다.
참고: 우선순위 역전은 공유 자원을 사용하는 멀티태스킹 환경에서 필연적으로 발생할 수 있는 문제이므로, 실시간 시스템 설계 시에는 이를 고려하여 적절한 해결책을 적용해야 합니다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com