스레싱
스레싱은 프로세스가 실제로 실행되는 시간보다 페이징에 더 많은 시간을 소비하여 성능이 급격히 저하되는 상태를 의미합니다.
스레싱의 원인
요구 페이징 시스템에서는 다중 프로그래밍 수준(degree of multiprogramming)이 높아지면 시스템의 CPU 이용률이 높아지는 경향이 있습니다.
다중 프로그래밍 수준 증가: CPU 스케줄러는 CPU 이용률을 높이기 위해 새로운 프로세스를 메모리에 추가합니다.
프레임 부족: 프로세스가 증가하면서 각 프로세스에 할당되는 프레임 수가 감소합니다.
페이지 오류 급증: 각 프로세스에게 필요한 최소 프레임이 충족되지 못하면, 프로세스는 실행될 때마다 거의 항상 페이지 오류를 일으킵니다.
스레싱 발생: 운영체제는 페이지 오류를 처리하기 위해 페이지 인/아웃(스와핑)에 대부분의 시간을 소비합니다. 이로 인해 CPU 이용률이 급격히 떨어지며 스레싱이 발생합니다.
스레싱이 발생하면 운영체제는 CPU 이용률이 낮아졌다고 판단하고, 이를 높이기 위해 더 많은 프로세스를 추가로 적재합니다. 이는 상황을 더욱 악화시키는 악순환을 초래합니다.
지역성 모델 (Locality Model)
스레싱을 방지하려면 **지역성 모델(Locality Model)**에 기반하여 프로세스의 동작을 이해해야 합니다.
지역성: 프로세스는 실행되는 동안 **작업 집합(working set)**이라고 불리는 비교적 작은 페이지 집합만을 집중적으로 참조합니다.
지역성 집합 (Locality Set): 프로그램은 실행 중에 다양한 지역성 집합 사이를 이동하며 참조 패턴을 바꿉니다.
스레싱의 관점: 스레싱은 프로세스의 현재 지역성 집합 전체가 메모리에 있지 못할 때 발생합니다. 프로세스가 메모리에 모든 지역성 집합을 담을 수 있는 충분한 프레임을 확보한다면, 페이지 오류율이 크게 감소하고 스레싱이 방지될 수 있습니다.
작업 집합 모델 (Working-Set Model)
작업 집합 모델은 지역성을 기반으로 스레싱을 방지하는 방법입니다.
작업 집합의 정의: 프로세스의 **작업 집합 **은 시간 이전에 발생한 개의 가장 최근 페이지 참조가 포함된 페이지 집합입니다. (는 작업 집합 윈도우 크기).
(윈도우 크기): 값이 너무 작으면 지역성을 포괄하지 못하고, 너무 크면 여러 지역성 집합을 포괄하여 비효율적입니다.
프레임 할당 원칙: 프로세스가 실행되기 위해서는 작업 집합의 크기와 동일한 수의 프레임을 할당받아야 합니다.
스레싱 방지: 운영체제는 모든 프로세스의 작업 집합 크기의 합()을 계산합니다. 가 총 프레임 수 을 초과하면, 운영체제는 일부 프로세스를 **스와핑 아웃(swap out)**하여 스레싱을 방지합니다.
페이지 부재 빈도 (Page-Fault Frequency, PFF)
페이지 부재 빈도는 스레싱을 제어하는 보다 직접적인 방법입니다.
원리: 페이지 오류율을 직접 측정하고, 이를 상한(upper bound) 및 **하한(lower bound)**과 비교하여 프레임 수를 조정합니다.
조정 규칙:
페이지 오류율 > 상한: 프로세스가 너무 적은 프레임을 가지고 있으므로, 프레임을 추가로 할당합니다.
페이지 오류율 < 하한: 프로세스가 너무 많은 프레임을 가지고 있으므로, 할당된 프레임을 회수합니다.
스와핑 처리: 사용 가능한 프레임이 없어 프레임을 추가 할당할 수 없는 경우, 운영체제는 다른 프로세스를 스와핑 아웃합니다.
이 내용이 사용자님의 파일 기준 **10.6장 '스레싱'**의 정확하고 완전한 내용입니다. 다음 섹션인 **10.7장 '메모리 매핑 파일'**에 대해 계속 진행할까요?
Last updated