Operating System Ch 13 : File - System Interface

이정빈·2024년 1월 22일
0

OS

목록 보기
14/15

13.1 File Concept

운영체제는 컴퓨터 시스템을 편리하게 사용하기 위해 저장된 정보에 대한 일관된 논리적 관점을 제공하고 저장장치의 물리적 특성을 추상화하여 논리적 저장 단위를 파일이라고 정의한다.
파일은 비휘발성이라서 저장된 내용은 영구 보존 가능

파일은 프로그램과 자료를 나타냅니다.

텍스트 파일은 행들로 구성되는 연속된 문자들
소스 파일이란 함수들의 연속, 각 함수는 선언과 실행문의 순서로 구성
실행 파일이란 로더가 메모리로 가져와 실행시킬 수 있는 연속된 코드 부분들

13.1.1 File Attributes

파일은 이름, 식별자, 유형, 위치, 크기, 보호, 타임스탬프와 사용자 식별의 속성을 가진다.

13.1.2 File Operations

운영체제는 파일 생성, 쓰기,읽기, 위치 재설정, 삭제 등 시스템 콜을 제공한다.

파일 생성 : 파일을 저장할 수 있는 공간을 찾아야함. 새로 생성된 파일에 대한 항목이 디렉터리에 만들어져야 한다.

파일 열기 : 모든 파일 연산을 하기전에는 이름 검사, 접근 권한을 검사해야하고 생성과 삭제를 제외한 모든 연산을 하기전에는 반드시 파일을 open해야 한다.

파일 쓰기 : 파일을 쓰기 위해 여린 파일 핸들과 파일에 기록될 정보를 명시하는 시스템 콜을 실행하고, 쓰기가 일어날 위치를 가리키는 write 포인터를 유지하고 있어야 한다.

파일 읽기 : 파일을 읽기 위해서는 파일핸들과 읽혀야 할 블록의 위치를 기술하는 시스템 콜을 사용
read 포인터를 유지할 필요가 있다 .

대부분 시스템은 하나의 현재 파일 위치 포인터를 가진다.

위치 재설정 : 열린 파일의 현재 파일 위치를 주어진 값으로 설정한다.

파일 삭제 : 삭제하기로 지정된 파일을 디렉터리에서 찾는다. 다른 파일에서 사용될 수 있도록 모든 파일 공간을 해제한다. (하드 링크)

파일 절단 : 파일의 내용은 지우고, 파일의 속성은 그대로 남기기를 원할 때, 파일의 길이가 0으로 재설정되며, 파일이 가지고 있던 공간은 해제될 수 있다.

이런 연산은 같이 진행될 수 있음 .

대부분의 파일 연산들은 지명된 파일과 관련된 디렉터리를 찾는 작업을 한다.
이런 반복적인 탐색을 피하고자 open 시스템콜을 사용함
open file들은 열린 파일 테이블을 유지하고, 인덱스로 그 파일을 지정하므로 어떤 탐색도 필요없다.
open 시스템 콜을 하면, open파일 테이블로 포인터를 돌려줌

멀티 프로그래밍에서 동시에 같은 파일을 볼 수 있는데, 프로세스 별 테이블과 범 시스템 테이블을 사용한다.

프로세스 별 테이블은 각 프로세스가 연 모든 파일을 기록한다.
프로세스 별 테이블의 각 항목은 다시 범 시스템 open 파일 테이블을 가리킨다.
범 시스템 테이블은 프로세스에 독립적인 정보를 가짐( 파일 위치,접근 날짜, 파일 크기)

파일을 락킹할 수도 있음.
한 프로세스가 파일을 잠그고 다른 프로세스들이 그것에 대한 접근을 막음.

공유 락은 여러 프로세스가 동시에 락을 획들할 수 있다는 점
exclusive 락은 한번에 한 프로세스만 락을 획득할 수 있다.
mandatory, advisory 파일 락 방법을 제공하기도 함.

mandatory 락은 어떠한 프로세스가 배타적 락을 획득하면 운여체제는 다른 프로세스가 잠겨진 파일에 접근하는 것을 막을 것임.

advisory 락은 접근하는 것을 막진 않지만, 접근하기 전에 락을 획득할 수 있도록 쓰여야 한다.

13.1.3 File Types

운영체제가 파일 유형들을 인식할 줄 알아야함
잘못된 코딩을 막을 수 있음

  1. 확장자

13.1.4 File Structure

확장자를 통해 파일의 유혀을 알 수 있고, 파일 내부 구조형태를 짐작 간으
어떤 파일의 경우는 운영체제가 인식할 수 있도록 미리 정해진 구조를 따라야할 때도 있음.
(실행 파일이 메모리 상의 어느 위치에 적재되는지..)

운영체제가 여러 파일 구조를 지원한느 경우에 발생 가능한 단점은 운영체제의 크기가 커지고 관리하기 힘들어진다. 다섯가지 다른 파일구조를 지원하면, 각기 다른 코드가 있어야함.
그리고 지원하지 않는 파일 구조면 더 답이 없다.

유닉스는 파일을 단순히 8비트 바이트들의 단순한 집합으로 보기때문에 자유로음
그대신 파일들에 대한 적절한 해석과 운용을 책임져야한다.

13.1.5 Internal File Structure

내부적으로 한 파일 내의 어떤 위치를 찾는 것은 복잡함.
모든 디스크 입출력은 한 블록 단위로 수행되므로 모든 디스크 블록들은 동일한 크기를 가진다.

유닉스에서는 오프셋에 의해 특정 위치 지정이 가능함.
파일은 블록 단위로 구성되는데, 모든 파일 시스템은 내부 단편화 문제를 가지고, 블록 크기가 클수록 내부 단편화가 커진다.

13.2 Access Methods

파일은 정보를 저장함.
파일이 사용될 때는 이 정보가 반드시 접근되어 컴퓨터 메모리로 읽혀야 한다.

13.2.1 Sequential Access

저장되어 있는 레코드 순서로 접근

13.2.2 Direct Access

파일은 고정 길이의 논리 레코드의 집합으로 정의되고, 직접 접근 파일은 어떠한 블록이라도 직접 액세스 할수 있다.
디스크가 임의의 파일 블록에 접근을 허용함.

13.2.3 Other Access Methods

찾고자 하는 레코드가 있으면 먼저 이 색인부터 찾아 그에 대응하는 포인터를 얻는다.
그런 다음 그 포인터를 이용하여 파일을 직접 접근 후 원하는 레코드를 찾는다.

색인 파일이 너무 커지면 그것에 대해서도 또 색인을 만들 수 잇음.

13.3 Directory Structure

디텍터리에 대한 연산

파일 찾기, 파일 생성, 파일 삭제, 디렉터리 나열, 파일 재명명

13.3.1 Single Level Directory

가장 간단한 디렉터리 구조가 1단계 디렉터리이다.
모든 파일이 다같이 한 개의 디렉터리 밑에 있음.

대신, 파일이 많아지거나 다수의 사용자가 사용하는 시스템에서는 단점이 많음

13.3.2 Two Level Directory


자신만의 UFD를 가짐, 각 디렉터리에는 오직 한 사람의 파일만을 저장한다.
첫 시작은 MFD에서 시작후, 자신의 UFD로 가게됨

새로운 UFD 추가는 시스템 관리자만 가능

서로다른 UFD에서 파일 공유를 사용할 때 문제가 발생
접근 허용
사용자 이름과 파일 이름을 둘 다 사용 (경로명)

13.3.3 Tree Structured Directories

제일 위인 루트 디렉터리가 있음.
통상적으로 각 프로세스는 현재 디렉터리를 가지고 있음.
파일의 참조가 일어나면 현재 디렉터리를 먼저 검색
만약에 없다면, 탐색 경로를 다시 지정해야함
(절대경로명, 상대경로명)

트리 구조에서는 디렉터리내에 파일이 있을 때 삭제를 할때 문제가 생김
디렉터리 밑이 완전히 비워져 있어야함

13.3.4 Acyclic-Graph Directories


공통 서브디렉터리가 공유되어야함

트리구조는 파일 또는 디렉터리의 공유를 허용하지 않음
비순환 그래프는 디렉터리들이 서브 디렉터리들과 파일을 공유할 수 있도록 허용함

공유를 위해 디렉터리나 파일을 복사하면 안됨
삭제나, 변경해도 둘 다 자동으로 바뀜

단독 사용자인 경우에도 디렉터리가 여러개 일수도 있다.

link, 복사

13.3.5 General Graph Directory

13.4 Protection

13.4.1 Types of Access

읽기, 쓰기, 실행, 추가, 삭제, 리스트, 속성 변경을 보호할 수 있음.

13.4.2 Access Control

사용자의 신원에 따라 특정 파일에 대한 접근 허용 여부를 결정
각 파일과 접근 제어 리스트 ACL을 연관

이 리스트는 이 파일을 누가 어떠한 연산을 위해 사용할 수 있는지를 기술
누가 파일에 접근할 때 이 리스트를 참조

사용자의 리스트를 미리 알 수 없음.
리스트의 길이를 파악해야하므로 더욱 복잡

소유자, 그룹 , 기타

13.4.3 다른 보호 방법

암호를 요구 하는 것
각 파일마다, 각 디렉터리마다

13.5 Memory-Mapped Files

open, read, write를 사용하면 디스크에 있는 파일을 순차적으로 읽음
파일이 매번 액세스 될 때마다 시스템 콜을 해야하고, 디스크에 접근해야한다

메모리 사상 기법은 프로세스의 가상 주소 공간 중 일부를 관련된 파일에 할애하는 것

13.5.1 Basic Mechanism

파일 메모리 사상은 프로세스의 페이지 중 일부분을 디스크에 있는 파일의 블록에 사상함

첫 번째 접근은 일반적인 요구 페이징 과정에 따라 페이지 폴트가 발생한다.
파일 내용 중 페이지 크기만큼의 해당 부분이 파일 시스템으로부터 메모리 페이지로 읽혀 들어오게 된다.

0개의 댓글