주제
-Disk System
-File System Overview
-Directory Structure
-File Protection
-File System Implementation
아래 두 사진은 하드디스크 구조.
-사용자들이 사용하는 파일들을 관리하는 운영체제의 한 부분.
보조기억장치에 저장된 연관된 정보들의 집합
-보조 기억 장치 할당의 최소 단위
-Sequence of bytes(물리적 정의)
<내용에 따른 분류>
-Program file(Source program, object program, executable files)
-Data file
<형태에 따른 분류>
-Text file
-Binary file
-Name
-Identifier
-Type
-Location
-Size
-Protection(access control information)
-User identification(owner)
-Time, date(creation, late reference, last modification)
-create
-write
-read
-reposition
-delete
-Etc
여기서 중요한 것!
->OS는 file operation들에 대한 system call(사용자가 사용할 수 있는 기능들의 집합)제공해야 함.
-파일을 record(or bytes)단위로 순서대로 접근
-원하는 block을 직접 접근
index참조 하여, 원하는 블럭 찾은 후 데이터 접근
-File 분류, 보관하기 위한 개념
<Operations on directory>
-search for a file
-create a file
-delete a file
-list a directory
-rename a file
-traverse the file system
(minidisks, volumes)
-virtual disk
-예)하나의 disk를 c,d드라이브로 나누는 것
-논리적 분류
-현재 FS(File System)에 다른 FS를 붙이는 것
-Flat(single-level) directory structure
-2-level directory structure
-Hierarchical(tree-structure)directory structure
-Acyclic graph directory structure
-General graph directory structure
File naming(같은이름)
File protection(덮어씌어짐)
File management
다중 사용자 환경에서 문제가 더욱 커짐
-MFD(Master File Directory)
-UFD(User File Directory)
-Sub-directory생성 불가능(File naming issue)
-사용자간 파일 공유 불가
파일 하나 보여줄라면 폴더 전체 다 보여줘야 함.
오늘날 우리가 쓰는 형태
-system call이 제공되야 함
-Home directory, current directory
-absolute pathname, relative pathname
-싸이클 허용하지 않음
-싸이클 허용함(위로 갈 수 있음)
-Acyclic Graph Directory Structure의 일반화(Cycle 허용)
-문제: File탐색 시, Infinite loop를 고려해야 함.
-다중 사용자 시스템에서 더욱 필요
Read
Write
Ececute
Append
-각 파일에 PW부여
-비현실적이다(모든 파일의 비번 기억해야 함)
-Domain(유저)과 object(file)사이의 접근 권한을 명시
Object
-접근 대상(file, device등 HW/SW objects)
Domain(protection domain)
-접근 건한의 집합
-같은 권한을 가지는 그룹(사용자, 프로세스)
*Access right
-object-name, rights-set
-Global table
-Access list
-Capability list
-Lock-key mechanism
-권한 없으면 안쓰면 되서, 용량 줄음
단점: 매 번 접근할 때마다 권한 확인해야 하니 overhead가 큼. 이를 해결하는게 Capability List(부페 도장 꽝 찍듯)
-Access list와 Capability list를 혼합한 개념
-Object는 Lock을, Domain은 Key를 가짐(Unique bit patterns)
-Domain내 프로세스가 object접근 시, keydhk lock짝이 맞아야 함.
-시스템은 key list를 관리해야 함.
simple but large
-object 별 권한 관리가 용이
-모든 접근 마다 권한을 검새햐아 함(느림)
-List내 object들(localized Info.)에 대한 접근에 유리
-object별 권한 관리(권한 취소 등)가 어려움
Allocation methods와 free space management에 관한 강의
-Allocation methods: File저장을 위한 디스크 공간 할당 방법
-free space management: 디스크의 빈 공간 관리
-linked allocation
-indexed allocation
-한 file을 디스크의 연속된 block에 저장
-장점: 효율적 file접근(순차, 직접 접근)
-단점
:새로운 file 공간확보 어려움
:External fragmentation
:File 공간 크기 결정 어려움(파일 커져야 하는 경우. ex) append
-File이 저장된 block들을 linked list로 연결(비연속 할당 가능)
-Directory는 각 file에 대한 첫 번째 block에 대한 포인터를 가짐
-Simple, No external fragmentation
-단점
:직접 접근에 비효율적
:포인터 저장을 위한 공간 필요
:신뢰성 문제(사용자가 포인터를 실수로 건드리는 문제 등)
실제 이 방법은 많이 쓰인다.
File Allocation Table(FAT)
-각 block의 시작 부분에 당므 블록의 번호를 기록하는 방법
-MS-DOS, Windows등에 사용
"목차를 보고 찾아가겠다"
-File이 저장된 block의 정보(pointer)를 index block에 모아 둠
-직접 접근에 효율적
-순차 접근에 비효율적
-File당 index block을 유지
-space overhead
-index block크기에 따라 파일의 최대 크기 제한 됨
-Unix등에서 사용됨.
-Bit vector
-Linked list
-Grouping
-Counting
빈공간은 0, 차 있으면 1로 표시
-시스템 내 모든 block들에 대한 사용 여부를 1 bit flag로 표시
-simple and eficient
단점
:bit vector전체를 메모리에 보관 해야 함 ->대형 시스템에 부적합
-빈 block을 linked list로 연결
-비효율적
n개의 빈 block을 그룹으로 묶고, 그룹 단위로 linked list로 연결
-연속된 빈 block을 쉽게 찾을 수 있음
-연속된 빈 block들 중 첫 번째 block의 주소와 연속된 block의 수를 table로 유지
-Continuous allocation시스템에 유리한 기법