Computer Science/파일처리
Write
Luinesse
2024. 3. 7. 16:35
반응형
디스크에 파일을 기록하게 되면, OS는 마지막으로 기록된 클러스터의 마지막 부분을 Moduler 연산으로 구하여 기록합니다. (Append Mode)
이를 위해서 OS는 I/O 하부 시스템으로 파일관리자를 두어 처리합니다.
파일관리자는 파일 관련 작업과 I/O 장치를 관리합니다.
OS는 여러 레이어의 프로시저로 구성되어 있는데, 상위 레이어로 갈 수록 파일관리에 대해 Logical하게 담당하고, 하위 레이어로 갈 수록 Physical한 면을 담당합니다.
레이어 구조는 다음 프로시저를 따릅니다.
- 기록하기로 한 파일의 파일 포인터 위치에 값을 기록하도록 OS에 요청
- OS는 파일 관리자에 해당 작업을 넘김
- 파일 관리자는 파일 식별자 테이블을 이용하여 파일의 대한 정보를 검증합니다.
- 파일의 마지막 클러스터의 물리적 위치를 파악하기 위해 FAT 검색
- 찾은 마지막 클러스터가 RAM의 I/O 버퍼에 있는지 확인하고 있다면 기록, 없다면 다음 프로시저로 이동
- 마지막 클러스터가 위치한 데이터를 I/O Processor에게 전달
- IOP는 디스크가 데이터를 저장할 준비가 될 때까지 디스크에 적합한 형태로 데이터 구성
- 해당 데이터를 디스크 제어기로 전달
- 디스크 제어기는 해당 데이터를 클러스터에 기록하도록 디스크 드라이버에 전달
위 작업으로 디스크에서 읽어온 데이터는 버퍼에 기록하게됩니다.
버퍼의 병목현상을 방지하기 위해 버퍼를 최소 2개를 두어 빈번한 DISK I/O를 방지합니다. 이를 이중 버퍼링이라고 부릅니다.
시스템이 디스크 섹터를 요청하게 된 경우, 읽을 섹터가 버퍼 공간에 없을 때 빈 버퍼를 풀에서 찾아 디스크에서 섹터를 빈 버퍼로 읽어들입니다. 이를 버퍼 풀링이라고 합니다.
버퍼 풀링 과정에서 빈 버퍼가 없는 경우, 시스템은 현재 사용중인 특정 버퍼를 희생자로 결정하고 새로운 섹터로 채웁니다. 이는 버퍼 대체 전략을 활용하여 수행하는데 대표적으로 다음 두가지가 있습니다.
- LRU (Least Recently Used)
- MRU (Most Recently Used)
LRU는 최근까지 사용하지 않은 버퍼를 선택합니다. 일반적으로 가장 많이 사용하며 순차접근에 적합한 방식입니다.
MRU는 최근까지 사용된 버퍼를 선택합니다. Random Access 방식에 적합합니다.
반응형