Luinesse 2024. 3. 7. 16:35
반응형

디스크에 파일을 기록하게 되면, OS는 마지막으로 기록된 클러스터의 마지막 부분을 Moduler 연산으로 구하여 기록합니다. (Append Mode)

 

이를 위해서 OS는 I/O 하부 시스템으로 파일관리자를 두어 처리합니다.

파일관리자는 파일 관련 작업과 I/O 장치를 관리합니다.

 

OS는 여러 레이어의 프로시저로 구성되어 있는데, 상위 레이어로 갈 수록 파일관리에 대해 Logical하게 담당하고, 하위 레이어로 갈 수록 Physical한 면을 담당합니다.

 

레이어 구조는 다음 프로시저를 따릅니다.

 

  1. 기록하기로 한 파일의 파일 포인터 위치에 값을 기록하도록 OS에 요청
  2. OS는 파일 관리자에 해당 작업을 넘김
  3. 파일 관리자는 파일 식별자 테이블을 이용하여 파일의 대한 정보를 검증합니다.
  4. 파일의 마지막 클러스터의 물리적 위치를 파악하기 위해 FAT 검색
  5. 찾은 마지막 클러스터가 RAM의 I/O 버퍼에 있는지 확인하고 있다면 기록, 없다면 다음 프로시저로 이동
  6. 마지막 클러스터가 위치한 데이터를 I/O Processor에게 전달
  7. IOP는 디스크가 데이터를 저장할 준비가 될 때까지 디스크에 적합한 형태로 데이터 구성
  8. 해당 데이터를 디스크 제어기로 전달
  9. 디스크 제어기는 해당 데이터를 클러스터에 기록하도록 디스크 드라이버에 전달

위 작업으로 디스크에서 읽어온 데이터는 버퍼에 기록하게됩니다.

 

버퍼의 병목현상을 방지하기 위해 버퍼를 최소 2개를 두어 빈번한 DISK I/O를 방지합니다. 이를 이중 버퍼링이라고 부릅니다.

 

시스템이 디스크 섹터를 요청하게 된 경우, 읽을 섹터가 버퍼 공간에 없을 때 빈 버퍼를 풀에서 찾아 디스크에서 섹터를 빈 버퍼로 읽어들입니다. 이를 버퍼 풀링이라고 합니다.

 

버퍼 풀링 과정에서 빈 버퍼가 없는 경우, 시스템은 현재 사용중인 특정 버퍼를 희생자로 결정하고 새로운 섹터로 채웁니다. 이는 버퍼 대체 전략을 활용하여 수행하는데 대표적으로 다음 두가지가 있습니다.

 

  • LRU (Least Recently Used)
  • MRU (Most Recently Used)

LRU는 최근까지 사용하지 않은 버퍼를 선택합니다. 일반적으로 가장 많이 사용하며 순차접근에 적합한 방식입니다.

MRU는 최근까지 사용된 버퍼를 선택합니다. Random Access 방식에 적합합니다.

 

 

반응형