11. 프레임 할당, 파일 할당

발표자: 김성연

프레임 할당 (Allocation of Frames)

쓰레싱 (Thrashing)

  • I/O 작업이 증가하여 CPU 이용률이 떨어지는 현상

  • 프로세스 개수가 증가 → CPU의 이용률 증가 → 일정 범위를 넘어서면 오히려 CPU 이용률이 감소하는 현상 발생

  • 원인

    • 빈번한 페이지 교체로 인한 i/o 시간 증가

    • page in/out 작업 → 디스크 I/O 작업으로 CPU를 사용하지 않는 작업

  • 해결 방법

    • Global Replacement보다 Local Replacement를 사용 → 메모리 사용 효율이 떨어지는 단점

    • 프로세스당 충분한/적절한 수의 프레임(메모리)을 할당

정적 할당 (Static Allocation)

  • 동일 할당(Equal Allocation)

    • 모든 프로세스에 똑같은 수의 프레임을 할당 → 프로세스의 크기에 따라 매우 비효율적

  • 비례 할당(Proportional Allocation)

    • 프로세스의 크기에 따라 프레임을 할당 → 프로세스 크기가 크더라도 모든 기능을 사용하지 않기 때문에 비효율적

동적 할당 (Dynamic Allocation)

Working Set Model

  • locality

    • Locality 성질 이용 → 특정 시간에는 일정 범위의 페이지를 주로 참조

    • 특정 시간에 따라 사용하는 페이지의 개수만큼 프레임을 할당

    • 프로세스를 미리 수행해봐야 할 수 있다는 단점

    • 프로세스를 수행할 때마다 사용하는 기능이 달라질 수 있기 때문에 비현실적

  • working set

    • locality의 방식과 유사

    • 과거 기록을 보고 예측

    • working set → 현재 시간에서 일정 시간 이전동안 사용되었던 페이지의 집합

    • 시간은 운영체제 내부에서 정하는 기준에 따라 다르며, 이를 working set window 라고함

    • working set의 개수만큼 프레임을 할당

Page-Fault Frequency(PFF)

  • 페이지 부재의 비율은 프로세스에 할당된 프레임의 수에 반비례

  • 페이지 폴트 발생 비율의 상한선과 하한선을 설정

  • 상한선 초과 프로세스에 더 많은 프레임을 할당하고 하한선 이하 프로세스의 프레임은 회수하는 방식

파일 할당 (File Allocation)

각각의 파일에 대해 free block을 어떻게 할당할 것인가?

하드 디스크의 구조

Sector: 자체적으로 주소를 가지는 스토리지 단위, 트랙의 재 분할, sector size는 일반적으로 512 bytes이며 주로 여러 개를 묶어서 사용 Track: 동심원 형태의 영역, 데이터가 기록되는 부분 Cylinder: 모든 platter에서 같은 track 위치의 집합 Block: sector 집합, 분할 처리 단위 (하드디스크는 블록 단위로 읽고 쓰기 때문에 block device 라고 불리기도 함)

연속 할당 (Contiguous Allocation)

  • 각 파일에 대해 디스크 상의 연속된 블록을 할당

  • 장점

    • 디스크 헤더의 이동 최소화 → 빠른 i/o 성능

    • 순차 접근(sequential access) 가능 → 순서대로 읽어옴

    • 직접 접근(direct access) 가능 → 특정 부분을 바로 읽어옴 (디렉토리에서 시작 블록 넘버 정보 이용)

  • 단점

    • 외부 단편화: 파일이 삭제되면 홀이 생긴다 → 반복적인 생성과 삭제로 흩어져있는 다수의 홀 발생

    • 외부 단편화로 인한 디스크 공간 낭비

    • 파일을 저장할 때 실제 크기를 알 수 없고, 지속적인 사용으로 파일의 크기가 계속 증가할 수 있기 때문에 기존 홀 배치(연속 할당)는 부적절함

연결 할당 (Linked Allocation)

  • 연결 할당은 연속 할당의 문제점을 해결하기 위해 나온 방법

  • 연결 리스트(linked list) 와 같은 방식으로 파일을 할당

  • 특징

    • 마지막에 **주소를 저장하는 포인터 공간(4bytes)**이 존재

    • 마지막 블록의 포인터 공간에는 끝임을 나타내는 값이 저장

  • 장점

    • 연결 할당은 위치와 상관없이 할당이 가능하므로 외부 단편화 문제 없음 → 디스크 낭비 없음

    • 순차 접근 가능

  • 단점

    • 직접 접근 불가능 → 파일의 블록들은 모두 흩어져 있으므로 시작 블록 번호를 가지고는 원하는 위치의 블록에 바로 접근 불가

    • 포인터를 저장으로 4 bytes 이상의 손해 발생

    • 낮은 신뢰성 → 중간 블록의 포인터가 끊어지면 그 이후의 모든 블록에 접근 불가

    • 느린 속도 → 블록이 모두 흩어져 있으므로 디스크 헤더의 움직임 증가

FAT(File Allocation Table) 시스템

  • 다음 블록을 가리키는 포인터들만 모아서 하나의 테이블(FAT)을 만들어 한 블록에 저장하는 방식

  • 특징

    • 직접 접근 가능

    • FAT만 문제가 없다면 중간 블록에 문제가 생겨도 그 다음 블록을 읽는 것이 가능

    • 디스크 헤더가 움직는 것은 블록이 흩어져 있으므로 여전히 느림

    • 손실 시 복구를 위해 이중 저장

    • FAT의 각 인덱스 크기는 전체 블록의 개수를 저장할 만큼의 크기를 가지고 있어야 하는데, 현재는 일반적으로 32bit 크기를 사용 → FAT32 (이전에는 FAT16, FAT12 등이 있었음)

색인 할당 (Indexed Allocation)

  • 데이터를 랜덤한 블록 번호에 할당하지만 할당된 블록 번호(포인터)를 하나의 블록에 따로 저장(인덱스 블록)

  • 특징

    • 파일 당 하나의 인덱스 블록이 존재

    • 디렉토리 정보에 시작 블록 번호가 아닌 인덱스 블록 번호를 저장

  • 장점

    • 직접 접근 가능

    • 외부 단편화 없음

  • 단점

    • 인덱스 블록 할당에 따른 저장 공간 손실

    • 하나의 인덱스 블록을 가지고는 크기가 큰 파일을 저장 불가 → Linked, Multilevel index, Combined 등으로 해결

색인 할당 단점 보완

  • Linked

    • 인덱스 블록을 여러 개 만들어 연결 할당

    • 각 인덱스 블록의 마지막에 다음 인덱스 블록을 가리키는 포인터 저장

  • Multilevel index

    • 하나의 인덱스 블록의 모든 포인터가 다른 인덱스 블록을 가리킴

  • Combined

    • Linked + Multilevel index

    • 한 인덱스 블록의 포인터들은 데이터 블록과 또 다른 인덱스 블록 둘 다 가리킬 수 있음

참고 자료

Last updated