10 장. 파일시스템인터페이스
목표 파일시스템의기능설명 파일시스템인터페이스의특징기술 파일시스템설계절충안 (tradeoff) 논의 파일접근방법, 파일공유, 파일잠금, 디렉토리구조등 파일시스템보호방법소개 2
10.1 파일개념 정보저장장치 자기디스크, 자기테이프, 광디스크, 플래시메모리 파일 (file) 운영체제가정보저장장치의물리적특성을추상화한논리적저장단위 정보저장장치에대한일관된논리적관점 (unique logical view) 을제공 보조저장장치에저장된관련된정보의집합 이름이부여됨 파일구조 운영체제가물리적저장장치로맵핑하여정보접근 없음 바이트또는워드의연속 단순레코드구조 줄, 고정길이, 가변길이레코드의연속 복잡한구조 formatted 문서, relocatable load file 운영체제에서는파일구조는 byte 의연속으로다룸 대단히일반적 파일구조의의미는생성한응용프로그램과사용자에의해서정의됨 이진실행파일 : 운영체제 대부분의파일 : 관련된응용프로그램 3
파일속성및연산 파일속성 (attributes) 이름, 식별자 (identidier), 유형, 위치, 크기, 보호, 날짜시간, 사용자등 디렉토리구조 보조저장장치에저장되어모든파일에대한정보를유지함 디렉토리항목 파일이름, 다른파일속성을찾기위한식별자로구성 파일연산 기본연산 - 생성 (create), 쓰기 (write), 읽기 (read), 위치재설정 (reposition, seek), 삭제 (delete), 절단 (truncate 길이 0 인파일로만듦 ) 기타연산 - 추가 (append), 복사, 이름변경, 속성획득 / 설정등 open 연산 - 메모리에있는 open file table에파일에대한정보를등록하고인덱스를반환 파일이름 ( 인수 ) 디렉토리검색 파일에대한디렉토리항목을 open file table로복사 요청한접근모드 ( 인수 ) 과파일의접근모드비교 허용되면 open file table에대한index를반환 close 연산 open file table 에있는항목을제거 4
open file 테이블및 open 파일잠금 2단계 open file 테이블 - 다수의프로세스가동시 open 지원 프로세스단위테이블 (per-process table) 프로세스종속정보 - 현재 file position pointer, access right 등 system-wide table에대한포인터 전체시스템테이블 (system-wide table) 프로세스독립정보 - file open count, disk location, file size 등 file open count가 0이되면파일테이블에서제거됨 오픈파일잠금 (lock) 여러프로세스가공유하는파일에대해사용 shared lock reader lock과유사 ( 여러프로세스가동시획득가능 ) exclusive lock writer lock과유사 ( 한번에한프로세스만획득가능 ) 강제적잠금 (mandatory lock) 과권고적잠금 (advisory lock) 강제적잠금 : 운영체제가 locked file에대한접근을막음 windows에서사용, deadlock이발생하지않도록동기화에유의 권고적잠금 : 운영체제는잠금상태를알려주고, 잠금은개발자몫임 unix에서사용 5
파일유형 파일유형구분 DOS, Windows - 확장자 Mac OS 생성한응용프로그램속성 UNIX magic number( 파일앞부분내용 ), 확장자를 OS 가강요하지않음. 확장자사용은응용프로그램몫 ELF executable:.elf UNIX script : #! PDF: %PDF Postscript(PS): %! JPG: ff d8 ff e0 (hex) magic number 확장자 6
10.2 접근방법 (Access Methods) 순차접근 (sequential access) tape 모델 순서대로접근 연산 : read next, write next, position to n 직접접근 (direct access) disk 모델 임의순서로접근허용 (random access) 연산 : read n, write n 블록번호 n은파일의시작을 0으로보고계산한상대블록번호임 직접접근방법을상대접근 (relative access) 이라고도함 인덱스순차접근 (indexed sequential access) - ISAM (key, data) 형식의레코드들을순서대로정렬 파일에대한 index 파일생성 메모리에유지할수있음 1 차로 index 검색, 2 차로 pointer 를사용하여파일을직접접근 index 가메모리에저장할수없을정도로파일이커지면 2 차 index 파일 (index 파일의 index) 생성 7
인덱스순차접근 - 색인파일과상대파일 8
10.3 디렉터리와디스크구조 시스템은매우많은수의파일을디스크에저장함 저장된파일을관리하기위해서체계적인구성 (organization) 이필요 저장장치와파일시스템 디스크를여러부분으로분할 파티션 (partition) 각파티션에 file system 을생성 file system 은 directory 구조를사용하여 directory 들을생성 directory 는디렉토리에있는파일에대한정보를저장 디렉터리 파일이름을파일위치로변환하는정보를갖는심볼테이블 각디렉터리항목은파일속성을저장함 directory f1 f2 f3 f4 files 9
디스크구조 디스크구조 disk는여러개의partition으로분할가능 disk / partition은다음두형태로사용 raw (unformatted) without a file system ( 예 ) swap 공간등 formatted with a file system 볼륨 (volume) file system을포함한개체 (entity) 전체장치, 장치의부분집합또는 RAID로연결된다수장치일수있음 각 volume은논리적가상디스크 (virtual disk) 로취급될수있음 special purpose 파일시스템 보통파일이아닌특수용도로사용 Solaris 예 objfs 커널심볼값제공하는가상파일시스템 procfs 프로세스에대한정보를제공하는가상파일시스템 tmpfs 메모리에생성되는임시파일시스템 lofs 다른파일시스템에접근할수있게하는 loopback 파일시스템 10
전형적인파일시스템구성 각 partition 에디렉토리구조와파일이저장됨 several partitions within on disk a partition larger than a disk 11
디렉터리의논리적구조 디렉터리구조 파일시스템은디렉터리들의조직하기위해디렉터리구조사용 디렉터리구조구성시고려사항 효율 (efficiency) 파일위치를신속하게검색 명명 (naming) 사용자가편리하게 여러사용자가다른파일에대해같은이름을사용가능 같은파일이여러개의다른이름사용가능 그룹핑 (grouping) 파일특성에따른논리적그룹핑 디렉터리의논리적구조 1단계디렉터리 (single-level directory) 2단계디렉터리 (two-level directory) 트리구조디렉터리 (tree-structured directory) 비순환그래프디렉터리 (acyclic-graph directory) 12
Single-Level Directory 모든사용자가한개의디렉터리사용 단점 naming problem grouping problem 13
Two-Level Directory 각사용자가분리된디렉토리를사용 (MFD) (UFD) 특징 경로이름 : / 사용자이름 / 파일이름 (ex) /user1/test 다른사용자가같은이름사용가능 효율적파일검색 no grouping capability 14
Tree-Structured Directories (ex) MULTICS, MS-DOS 15
Tree-Structured Directories ( 계속 ) 특징 효율적파일검색 Grouping capability 경로이름 (Path name) absolute path name (ex) /spell/mail/prt/first relative path name (ex) prt/first,../dist 현재디렉터리 ( 작업디렉터리 ) 프로세스는현재 ( 작업 ) 디렉터리를가짐 파일을참조할때에파일이름만사용하면현재디렉터리를검색 작업디렉터리를변경할수있음 cd 명령어 사용자가로그인을할때에초기작업디렉터리 ( 홈디렉터리 ) 에위치 16
Acyclic-Graph Directories 트리구조의일반화 디렉토리간의파일과서브디렉토리공유를허용. (cf) Acyclic graph: a graph with no cycle (ex) UNIX symbolic link hard link hard link hard link 17
Acyclic-Graph Directories ( 계속 ) Symbolic link 와 hard link symbolic link 다른파일 / 디렉터리에대한포인터저장 indirect link hard link 저장장치의파일위치를직접저장 direct link 같은파일이여러개의경로이름가질수있음 (aliasing) 백업등의목적으로전체파일시스템순회시에중복탐색문제가발생 ( 예 - 그림 ) /spell/word/list, /dict/all (hard link), /dict/w (symbolic link) 공유파일의삭제 hard link: 직접링크삭제, reference count 유지 count=0 이되면파일삭제 symbolic link: 심볼릭링크만삭제 링크된원본 file 이삭제되면링크는존재하지않는파일을가리킴 reference count=2 18
General Graph Directory 19
10.4 File-System Mounting 파일시스템 mounting 보조기억장치에설치된파일시스템을접근할수있도록현재파일시스템의특정디렉터리에연결하는것 mount 절차 디바이스이름과 mount point( 빈디렉터리 ) 를운영체제에게제공 운영체제는디바이스가유효한파일시스템을포함하고있는지검증함 파일시스템은지정된 mount point 에마운트됨. root mount the name of device mount point the location within the directory structure file system to be mounted 20
10.5 File 공유 다수의사용자의파일공유 다수의사용자에대한파일공유기능이바람직함. 공유는보호방식을통하여이루어질수있음 owner (user), group 원격파일시스템 (Remote File Systems) 분산시스템에서파일은네트워크를경유하여공유가능 Network File System (NFS) 또는 Distributed File System(DFS) root remote system 21
File 공유 원격파일공유구현 - Client-server 모델을사용하여구현 Server 는여러개의 client 에게서비스제공가능 NFS 표준 UNIX client-server 파일공유프로토콜 CIFS (Common Internet file system) 표준윈도우파일공유프로토콜 표준운영체제의파일에대한호출은원격파일에대한호출로변환 분산정보시스템 (Distributed Information Systems) 원격컴퓨팅에필요한정보의통합된접근을구현 (ex) LDAP (light-weight directory access protocol), DNS(domain name system), NIS (network information service), Domain, Active Directory Windows 22
10.6 보호 접근제어 파일소유자 / 생성자의접근권한제어 what can be done ( 무엇을?) by whom ( 누가?) 접근유형 Read Write Execute Append Delete List 23
접근리스트 (Access Lists) 와그룹 (UNIX) 접근모드 : read, write, execute 세종류의사용자클래스 r w x a) owner access 1 1 1 (7) b) groups access 1 1 0 (6) c) public access 0 0 1 (1) 파일이나디렉터리에대한접근권한정의 owner group public % chmod 761 game 24
( 예 ) UNIX Directory Listing 과파일허가권 25
Windows 7 Access-Control List 26