반응형
더보기
목차
- File Concept
- File Attributes
- File Operations
- File Access Method
- Directory Structure Concept
- 전형적인 File System 구성
- Directory Structures
- File 의 구현
- Directory 의 구현
- Protection
- Acess Lists and Groups
File Concept
File as Abstraction
- 정의
- 파일은 연관된 정보의 집합(Array of Bytes) 이다.
- 무언가를 영구적으로 저장하기 위해서 쓰는 추상화된 개념
- 운영 체제에서 파일은 Persistent Storage를 담당하며, 주소 공간(Address Space)과는 다르다.
File System
- 역할:
- 파일과 Physical Disk Block 사이의 매핑을 제공.
- Disk 위치 배치를 담당 : File Blocks -> Disk Blocks
- 사용자는 파일의 물리적 저장 위치를 알 필요가 없도록 독립성 제공.
- 파일과 Physical Disk Block 사이의 매핑을 제공.
- 특징:
- 디스크에 저장된 파일의 전체 구성을 추상화하여 관리.
- 운영 체제마다 파일 시스템 구조가 다를 수 있음.
File Attributes
- 파일의 속성 정보(Metadata):
- Name: 파일 이름.
- Type: 파일 유형 (실행 파일, 텍스트, 라이브러리 등).
- Location: 파일의 저장 위치 (물리적 주소).
- Size: 파일 크기.
- Protection: 파일 접근 권한 (읽기, 쓰기, 실행).
- 추가적으로 시간(Time), 사용자 정보(User Information) 등이 포함됨.
- 파일 정보 저장 위치: 파일 관련 Metadata는 디렉토리 구조(Directory Structure)에 저장됨.
File Operations
- 파일과 관련된 기본 작업:
- Create:
- 파일을 새로 생성.
- 메타데이터가 함께 생성되서 Directory Structure 에 저장됨
- 새로운 파일에 대한 entry 정보를 만듦
- Write: 파일에 데이터를 기록.
- Read: 파일에서 데이터를 읽음.
- File Seek: Current-File-Position Pointer를 이동하여 파일의 읽기/쓰기 위치 변경.
- Delete: 파일을 삭제하고 메타데이터 및 디스크 블록 할당 해제.
- Open/Close: 파일의 디렉토리 엔트리를 열거나 닫음.
- Create:
- Current-File-Position Pointer란?
- 파일을 읽거나 쓸 때 현재 위치를 가리키는 포인터.
- 읽기/쓰기 작업이 수행되면 포인터가 자동으로 갱신됨.
Open / Close Semantics
- Open/Close 작업:
- 여러 Process가 파일을 공유하는 경우, 파일의 상태(State)를 유지하기 위해 두 개의 Open File Table을 관리.
- Per-Process Table:
- 각 프로세스에서 독립적으로 유지되는 정보.
- 예: 파일 디스크립터, 접근 모드(Read/Write) 등.
- System-wide Table:
- 시스템 차원에서 파일 관련 정보를 공유.
- 예: 파일의 위치, 접근 날짜, Open Count 등.
- Per-Process Table:
- 여러 Process가 파일을 공유하는 경우, 파일의 상태(State)를 유지하기 위해 두 개의 Open File Table을 관리.
- Open Count:
- 파일이 Open될 때마다 System-wide Table에서 Open Count를 증가시키고, Close 시 감소한다.
- 파일 삭제(Delete)는 Open Count가 0인 경우에만 수행 가능하다
File Access Method
- 순차 접근(Sequential Access):
- 파일의 데이터를 처음부터 끝까지 순서대로 읽거나 쓰는 방식.
- Operation:
- Read Next: 다음 데이터를 읽음.
- Write Next: 다음 위치에 데이터를 기록.
- Reset: 파일의 읽기/쓰기 포인터를 처음으로 이동.
- 예시:
- rewind: 포인터를 처음으로 이동.
- read/write: 현재 위치에서 데이터 읽기/쓰기 후 포인터 이동.
- 임의 접근(Direct Access):
- File 의 어떠한 위치라도 바로 접근하여 Read 나 Write 수행
- Operation:
- Read n: 특정 위치(n번 블록)의 데이터를 읽음.
- Write n: 특정 위치(n번 블록)에 데이터를 기록.
- Sequential Access와 Direct Access의 차이:
- Sequential Access는 데이터를 순차적으로 처리.
- Direct Access는 인덱스를 사용해 특정 데이터에 직접 접근 가능.
전형적인 File System 의 구성
File System 의 계층화
- 계층화의 목적:
- 유연성(Flexibility): 시스템이 다양한 장치와 사용자의 요구를 효율적으로 지원.
- 모듈화(Modularity): 각 계층이 독립적으로 동작하며, 특정 계층을 변경하거나 업데이트할 때 다른 계층에 영향을 최소화.
- 표준화: 여러 File System이 하나의 시스템에서 작동 가능.
- 계층 구조:
- Virtual File System (VFS): 응용 프로그램과 하드웨어 간 인터페이스 역할.
- File-organization module: 파일의 논리적 구조를 관리.
- Basic file system: 파일의 물리적 저장과 접근을 담당.
- I/O control: 하드웨어 장치와 통신.
- Devices: 실제 디스크 드라이브 등.
Mount
- Mount의 정의:
- Directory와 Device를 연결하는 작업.
- File System을 사용할 수 있도록 Mount를 수행해야 함.
ex) /home 디렉토리에 /a/b/c 디렉토리를 마운트하면 /home/a/b/c 경로를 통해 접근 가능.
- Distributed FS: 네트워크를 통해 분산된 파일 시스템으로 확장 가능.
- Mount 과정:
- Disk1과 Disk2가 있다고 가정:
- Disk1에 /usr 디렉토리가 존재.
- Disk2의 File System을 /usr 디렉토리에 마운트하면 /usr의 하위 디렉토리처럼 동작.
ex) mount disk2 /usr 실행 시 /usr 디렉토리가 Disk2의 파일 시스템으로 연결됨
- Disk1과 Disk2가 있다고 가정:
Directory Structure Concept
- Directory:
- 모든 File 들에 대한 정보를 가지는 Node 들의 집합.
- Directory Structure 와 File 은 모두 Disk 상에 있음
Single-level Directory
- 정의 : 모든 사용자에 대해서 하나의 단일한 Directory 를 관리
Two-level Directory
- 정의 : 사용자 구분하기 위해 Directory 분리
- 문제점 : file 이 늘어날수록 Directory 사이즈가 무수히 커짐
Tree-Structured Directories
- 특징:
- 계층적 구조로 디렉토리가 조직화됨.
- 각 디렉토리는 서브 디렉토리를 포함할 수 있음.
- 장점:
- 효율적인 탐색 및 관리 가능.
- 파일을 그룹화하여 조직화 가능.
- 단점: 깊게 중첩된 디렉토리로 인해 탐색 경로가 길어질 수 있음.
Acyclic-Graph Directories
- 특징:
- 파일이나 서브 디렉토리를 공유 가능.
- Alias를 이용하여 동일한 파일을 여러 디렉토리에서 참조.
- 문제점: Dangling Pointer: 파일이나 디렉토리가 삭제될 경우 포인터가 유효하지 않게 되는 문제 발생 가능.
- 장점: 파일 및 디렉토리의 공유로 공간 절약.
General Graph Directory
- 특징:
- 일반 그래프 구조로 디렉토리를 조직화.
- Cycle 문제를 방지해야 함:
- Cycle Detection Algorithm을 통해 새로운 링크 생성 시 사이클이 발생하지 않도록 제어.
- 장점: 유연성이 높아 다양한 디렉토리 관계를 표현 가능.
- 단점: Cycle 처리 비용 증가.
File 구현
- Disk Block : File System 의 입출력 단위
- File 의 내용을 담고 있는 Disk Block 의 위치 정보를 어떻게 저장할지를 고려해야 한다.
- 운영체제마다 각기 다른 방식으로 File 의 Data Block 정보를 관리하고 있다.
- Contiguous Allocation
- Linked List Allocation
- Linked List Allocation using an Index
- I-Nodes
Contiguous Allocation
- 설명:
- 파일을 저장할 때, 디스크 상에서 연속된 블록에 데이터를 저장하는 방식
- 디렉토리는 파일의 시작 블록(start)과 파일 길이(length)를 기록하여 파일 데이터를 관리한다.
- 장점:
- 구현이 간단: 파일의 시작 위치와 길이만 저장하면 되기 때문에 디스크의 검색 속도가 빠르다.
- 연속된 읽기 성능이 우수: 파일 데이터가 물리적으로 연속 저장되어 있어 I/O 연산 시 효율적이다.
- 단점:
- File 은 반드시 한번에 끝까지 기록 되어야 한다.
- 중간에 작성하다가 실패하면 처음부터 다시 해야 한다.
- OS 에서 File 끝에 예비용 Block 을 두거나, Fragmentation 같은 경우에는 Disk 공간을 낭비
- File 은 반드시 한번에 끝까지 기록 되어야 한다.
Linked List Allocation
- 설명:
- 파일의 각 데이터 블록이 다음 데이터 블록에 대한 포인터를 포함하여 체인 형태로 연결된다.
- 디렉토리는 파일의 시작 블록 번호만 저장한다.
- 장점:
- 공간 낭비가 없음: 파일 데이터가 연속적일 필요가 없어, 빈 공간에 자유롭게 저장할 수 있다.
- 유연성: 파일 크기 조정이 용이하며, 블록을 재배치할 필요가 없다.
- Random Access가 불가능: 파일의 중간 데이터를 읽으려면 처음 블록부터 순차적으로 접근해야 한다.
- 포인터 저장 공간의 추가 비용: 각 데이터 블록에 포인터를 저장해야 하므로 디스크 공간의 일부가 포인터로 사용된다.
- 포인터 손실 문제: 포인터가 손상되면 파일의 일부 또는 전체 데이터를 잃을 수 있다.
- 다음 Data Block 에 대한 Pointer 로 인해, Data Block 에서 Data 를 저장하는 공간이 반드시 2의 배수가 아닐 수 있다.
- 대부분의 Program 은 Read / Write 하는 Data 의 크기가 2의 배수이기 때문에, 성능 측면에서 뒤쳐질 수 있음
Linked List Allocation using an Index
- 개선된 방식:
- Random Access 를 하도록 하기 위함
- 파일에 관련된 모든 블록의 포인터를 Index Block에 저장한다.
- Index Block은 파일의 데이터 블록 위치를 모두 기록한 테이블 형태로, 디렉토리에서 Index Block의 위치를 참조하여 데이터를 관리
- 단점
- 최대 File 의 크기가 고정됨
- Index Block 의 크기가 고정되어 있기 떄문에, Index Block 에서 수용할 수 있는 Disk Block 에 대한 Pointer 수가 한정되어 있기 때문이다.
- 최대 File 의 크기가 고정됨
- 동작
- jeep 파일의 데이터 블록은 Index Block (블록 19)에 저장됨.
- Index Block에서 각 데이터 블록의 번호를 확인하여 접근할 수 있다.
ex) 블록 9, 16, 25, 5, 22 순으로 파일 데이터가 저장됨.
I-nodes
- 설명:
- 파일에 대한 모든 블록 정보를 하나의 I-node Table로 관리하는 방식.
- I-node는 파일의 메타데이터와 데이터 블록의 포인터를 저장하는 구조다.
- 멀티 레벨 페이징 구조와 유사하여, 작은 파일은 Direct Blocks로 처리하고 큰 파일은 Indirect Blocks를 활용.
- 구성 요소
- Field : File 에 대한 속성
- Direct Block: 소형 파일의 데이터 블록을 바로 가리킴.
- Single Indirect Block: 간접적으로 데이터 블록을 가리키는 포인터.
- Double/Triple Indirect Block: 대형 파일을 지원하기 위한 계층적 포인터 구조.
Directory 구현
- Directory Entry
- 정의 : 파일 시스템에서 파일과 디렉토리 정보를 관리하기 위한 데이터 구조다.
- 역할:
- 파일 이름과 메타데이터(크기, 속성 등)를 포함.
- 파일 시스템 구조에 따라 Directory Entry의 구현 방식이 다름.
ex) I-node 를 사용하는 File System 에서는 File Name 과 I-node Number 만이 저장됨
- 2가지 구현 방법
- Directories in MS-DOS
- Directories in UNIX
Directories in MS-DOS
- MS-DOS에서는 Linked List Allocation 방식으로 디렉토리를 구성한다.
- 구조:
- 파일 이름(8 bytes)과 확장자(3 bytes), 속성, 크기, 데이터 블록 번호 등으로 구성.
- 파일의 첫 번째 데이터 블록 번호를 통해 데이터 블록 체인을 추적 가능.
Directories in UNIX
- UNIX 시스템에서는 I-node를 사용하여 디렉토리를 관리합니다.
- 구조:
- 파일 이름(최대 14 bytes)과 I-node 번호를 포함.
- I-node 번호는 파일의 메타데이터와 데이터 블록 위치를 가리킵니다.
- 특징
- 파일 시스템이 효율적이고 확장 가능.
- 파일 이름을 통해 I-node를 찾아 필요한 데이터에 빠르게 접근 가능.
- 구조 설명
- UNIX 파일 시스템에서 각 디렉토리는 I-node를 통해 관리.
- 디렉토리는 파일 이름과 I-node 번호의 쌍으로 이루어진 테이블을 포함.
- 예시
- Root Directory:
- Root 디렉토리는 I-node 1에 저장.
- 하위 디렉토리나 파일로 연결된다.
- I-node 참조:
- 예를 들어, /usr 디렉토리는 I-node 6을 참조하며, 이 I-node는 /usr 디렉토리의 내용을 가리킨다.
- /usr/ast는 I-node 26을 참조하며, 이는 /usr/ast의 데이터 블록에 저장된 내용을 가리킨다.
- I-node 기반 파일 관리: 각 I-node에는 파일의 크기, 데이터 블록 번호, 권한 정보 등이 저장된다.
- Root Directory:
Protection
- 목적
- 저장된 정보에 부적절한 접근을 막는 것.
- 사용자가 데이터를 안전하게 관리할 수 있도록 다양한 접근 제어 방식 제공.
- 접근 유형
- Read: 파일 내용을 읽는 권한.
- Write: 파일 내용을 수정하는 권한.
- Execute: 파일을 실행하는 권한.
- Append: 기존 데이터 뒤에 추가하는 권한.
- Delete: 파일을 삭제하는 권한.
- List: 디렉토리 내용을 보는 권한.
- 접근 모드 : Read , Write, Execute
- 사용자 범주:
- Owner Access: 파일 소유자의 권한 (e.g., RWX).
- Group Access: 같은 그룹에 속한 사용자들의 권한 (e.g., RW-).
- Public Access: 모든 사용자에 대한 권한 (e.g., R--).
- 예시:
- RWX 접근 권한:
- chmod 761 명령을 통해 설정:
- 7: Owner가 RWX 권한.
- 6: Group이 RW- 권한.
- 1: Public이 --X 권한.
- chmod 761 명령을 통해 설정:
- 그룹 설정:
- 특정 그룹(G)을 추가하거나, 파일 또는 하위 디렉토리의 접근 권한을 변경할 수 있다.
ex) 예: chgrp G file_name으로 그룹 변경.
- 특정 그룹(G)을 추가하거나, 파일 또는 하위 디렉토리의 접근 권한을 변경할 수 있다.
- RWX 접근 권한:
- 관리자에게 고유의 이름을 가지는 Group G 를 만들도록 요청하고, 그 그룹에 사용자들을 추가하게 한다.
- 특정한 File 또는 하위 Directory 에 대해 적절한 접근을 정의한다.
반응형
'3학년 2학기 학사 > 운영체제' 카테고리의 다른 글
[운영체제] #10. Memory Management (2) (0) | 2024.12.01 |
---|---|
[운영체제] #10. Memory Management (1) (0) | 2024.12.01 |
[운영체제] #9. 동기화(2) (0) | 2024.12.01 |
[운영체제] #9. 동기화 (1) (0) | 2024.11.27 |
[운영체제] #7. InterProcess Communication (IPC) (0) | 2024.11.26 |