ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OS - File System(파일시스템)
    운영체제 2022. 3. 27. 00:20

    File System???

    운영체제와 모든 데이터, 프로그램의 저장과 접근을 위한 기법을 제공한다. 

    사용자의 응용프로그램을 실행하면서 생기는 정보를 파일이라는 단위로 저장하고 관리하는 운영체제의 서브 시스템이다. 파일은 일반적으로 레코드(record) 혹은 블록(block)단위로 비휘발성 보조기억장치에 저장된다.

    시스템 내의 모든 파일에 관한 정보를 제공하는 계층적 디렉터리 구조이며, 파일과 파일의 메타데이터, 디렉토리 정보 등을 관리한다.

     

    파일 시스템의 목적

    • 하드디스크와 메인 메모리 속도 차를 줄일 수 있다.
    • 파일 관리
    • 하드디스크 용량을 효율적으로 이용할 수 있다.

    메타데이터 : 파일을 관리하기 위해 필요한 정보들을 말한다. 단, 파일 속 내용을 말하는 것은 아니다. 파일 이름, 유형, 저장된 위치, 파일 사이즈, 접근 권한, 소유자, 생성/변경/사용 시간 등 파일에 관련된 전반적인 정보를 말한다.

     

    파일 시스템의 기능 및 역할

    1. 사용자가 파일을 생성, 삭제, 수정 할 수 있게 한다.

    2. 여러 사용자가 파일을 공유할 수 있도록 한다.

    3. 주기억장치와 보조기억장치 간의 파일 전송을 담당한다.

    4. 파일에 대한 백업과 복구를 할 수 있다.

    5. 각 응용에 적합한 구조로 파일을 구성할 수 있도록 한다.

    6. 접근 방법을 제공한다.

     

    파일 디스크립터(File Descriptor)

    파일을 관리하기 위한 메타데이터를 보관하는 파일제어블록(File Control Block, FCB)이다.

    보조기억장치(HDD 등)에 있다가 파일이 오픈되면 주기억장치(RAM  등)로 이동한다.

    파일시스템이 관리하고 있으며 사용자가 직접 참조할 수 없다. 또한 파일마다 독립적으로 파일 디스크립터를 가지고 있고, 그 내용이 다 다르다.

    구성 요소

     

    파일 시스템의 구조

    파일 시스템은 디스크에 저장되어 있으며, 여러 레벨로 구성되어 있다.

    1. Logical File System : 메타데이터 정보를 관리한다. 디렉토리 구조를 관히라며 FCB를 가지고 있다.

    2. File-Organization Module : 물리 블럭과 논리 블럭을 알고 있어서 논리 주소를 물리 주소로 변경해 준다.

    3. Basic File System : 장치 드라이버에게 물리 블록을 읽고 쓰도록 명령한다.

    4. I/O Control : device driver와 interrupt handler로 이루어져 있고, 고수준 언어의 명령을 device에 맞는 저수준 언어로 변경해준다.

     

     

    Access Methods

    시스템이 제공하는 파일 정보의 접근 방식은 순차접근, 직접 접근, 색인 접근으로 나뉜다.

     

    1. 순차 접근(sequential Access)

    파일의 정보가 레코드 순서대로 처리된다. 현재 위치에서 읽거나 쓰면 offset이 자동으로 증가하고, 뒤로 돌아가기 위해선 되감기가 필요하다.

    이 접근 방식은 가장 일반적이고, 편집기나 컴파일러가 사용한다.

    읽기와 쓰기가 파일 연상의 대부분을 차지하고 있다.

    읽기 연산은 파일의 다음 부분부터 읽어 나가며 자동적으로 입출력 위치를 추적하는 파일 포인터를 증가시킨다. 

    쓰기 연산은 파일의 끝 부분에 내용을 추가하며 새로운 파일의 끝으로 파일 포인터가 이동한다. 오프셋을 시작점이나 마지막 점으로 이동시킬 수 있고, n 정수만큼 건너 뛸 수도 있다.

    순차접근

     

    2. 직접 접근(Random Access)

    파일의 레코드를 임의의 순서로 접근할 수 있다.  디스크 모델에 기반을 두고 있고, 이는 무작위 파일 블럭에 대한 임의 접근을 허용하기 때문이다. 파일을 번호를 가지고 있는 블록 또는 레코드로 간주한다고 보면 된다.

    읽기나 쓰기의 순서와 제약이 없고, 현재 위치(변수 cp)를 유지할 수 있으면 이를 통해 순차 접근 기능도 구현할 수 있다.

    대규모 정보를 즉각적으로 접근하는 데에 유용하기 때문에 데이터베이스에 이용된다.

     

    직접 접근 방법을 위해 파일 연산이 블록 번호 매개변수를 포함할 수 있도록 수정되어야 한다.

    사용자가 운영체제에 제공하는 블록 번호는 통상적으로 상대 블럭 번호이다. 

    파일의 시작을 0으로 보고 계산한 레코드의 위치이며, 예를 들어 실제로 첫번째 블럭에 대한 절대적인 디스크의 주소가 12383이고, 두번째 블럭은 42312이더라도 파일의 첫번째 상대 블럭은 0이고 다음 블럭은 1이다.

    이러한 상대적 블럭번호의 사용은 운영체제로 하여금 파일이 어디에 저장되어야 하는지 결정하게 하고, 사용자가 자신의 파일이 아닌 곳에 접근하는 것을 미리 막는다.

    3. 색인 접근(Index Access)

    파일에서 레코드를 찾기 위해 색인을 먼저 찾고 그에 대응되는 포인터를 얻는다. 이 포인터로 파일에 직접 접근하여 원하는 데이터를 얻을 수 있다.

    크기가 큰 파일을 입출력 탐색할 수 있게 도와준다.

    대용량 파일에 경우 색인 파일 자체도 매우 크고 메모리를 많이 잡아먹게 된다. 이에 대한 해결책으로 색인파일에 대한 또 다른 색인 파일을 생성하는 것이다. 

    '운영체제' 카테고리의 다른 글

    OS - Context Switching 이론 공부  (0) 2022.03.17
JackCokebb dev blog