티스토리 뷰

SoftWare/OS

OS - 10. File-System

White Whale 2016. 6. 7. 19:52
728x90

1. File Concept

  

  • 운영체제는 컴퓨터 시스템을 편리하게 사용하기 위해 저장된 정보에 대한 일과된 논리적 관점을 제공하고 저장 장치의 물리적 특성을 추상화하여 논리적 저장 단위, 파일을 정의한다.

  • 파일의 속성에는 이름, 식별자, 타입, 위치, 크기, 시간 등 이 있다.

  • 파일 명령어에는 생성, 쓰기, 읽기, 재설정, 삭제, 절단(내용만 지우고 속성은 남김)이 있다.

  • 파일 연산을 하기 위해 open() 시스템 호출로 파일을 접근한다. 최초 파일 접근시 재접근에 대한 낭비를 줄이기 위해 open-file table에 모든 열린 파일에 대한 정보가 저장된다.

  • 파일이 더이상 사용되지 않으면 프로세스에 의해 닫히고 open-file table에서 제거된다. - close()

  • 파일 포일터 : 읽기와 쓰기 시스템 호출의 일부분으로 파일을 어디까지 읽었다는 것을 나타낸다.

  • File-open count : 파일에 대해 몇개의 프로세스가 접근했는지 나타낸다.

  • Open File Locking : Shared lock 여러 프로세스가 잠금을 할 수 있다. writer lock 한번에 한 프로세스만 잠금을 할수있다.



2. File Structure & Internal File Structure

  

  • 각각의 파일들은 그 파일을 다루는 프로그램에 의해 인식 가능한 내부 구조를 일정한 형태로 가진다.

  • 특정 파일들은 운영체제가 인식할 수 있도록 미리 정해진 구조를 따른다.

  • 파일은 일련의 블록으로 간주된며 디스크 입출력은 한 블록 단위로 수행되고 모든 디스크 블록들은 동일한 크기를 가진다.



3. Access Methods

  

1. Sequential Access : 순차 접근으로 Tape Model과 비슷하다.

2. Direct Access : 직접 접근을 위해서는 파일은 고정 길이의 논리 레코드의 집합으로 정의되야한다. 그리고 레코드의 번호로 접근한다.

3. IBM의 ISAM : 크기가 작은 마스터 색인을 메모리에 유지하고 우선 메모리에서 색인 블록 번호를 찾고 레코드로 가서 순차적으로 데이터를 찾는다.



4. Directory and Disk Structure

  

디렉토리는 그 볼륨에 있는 모든 파일에 대한 이름, 위치, 크기, 유형과 같은 정보를 기록한다.

아래 그림에서의 directory는 root directory라 생각하면 되고 하나의 disk가 파티션의로 복수의 directory로 나뉘어 질 수 있으며, 복수의 disk가 하나의 directory를 구성할 수있다.

포맷이란 해당 디스크의 데이터를 모두 지우는 것이 아니라 directory를 재설정하는 것이다.



5. Directory Overview

  

Directory는 파일 이름을 그위치로 바꾸어 주는 심볼 테이블로 볼 수 있다. 즉 naming hierarchy이다. 디렉토리의 연산은 다음과 같다.

      • 파일 찾기

      • 파일 생성

      • 파일 삭제

      • 디렉토리 나열

      • 파일의 재명명

      • 파일 시스템의 순회(traverse)



6. Single-Level Directory

 

가장 간단한 구조로 모든 파일이 다 같이 한개의 디렉토리 밑에 있다. 파일이 많아지면 파일에 이름에 대한 문제가 발새하며 그룹핑도 할수가 없다.



7. Two-Level Directory

  

2단계 구조에서는 마스터 파일 디렉토리 밑에 유저 파일 디렉토리가 있다. 각각의 유저의 동일한 이름을 가진 파일을 가지고 있으며 해당 파일은 경로명을 써서 찾아가야한다.


8. Tree-Structure Directories

  

운영체제는 하위 directory 역시 하나의 file로 본다. 비트를 두어 0이면 file 1이면 subdirectory이다. 이 구조에서는 아래로는 계속해서 나아갈 수 있지만 싸이클은 만들수가 없다. 이는 파일을 공유할 수 없다는 이야기이다.

리눅스에서 directory 삭제시 rm -r <dir-name>을 주는데 여기서 r의 recursive의 r이다.



9. Acyclic-Graph Directories

  

그래프 구조로 사이클이 허용된다. 링크는 다른 파일이나 서브디렉터리는 가리키는 포인터인데 하나의 파일로 취급된다. 하나의 파일에 복수의 링크가 있을 수 있다.

복수의 링크가 있는 파일에 대해서는 해당 파일에 대한 삭제 정책을 정해야한다. 운영체제마다 다르지만 대부분 원본 파일을 지워도 링크파일은 남아있다. 다만 이때 발생한 링크(Pointer)를 Dangling pointer라고 한다.



10. General Graph Directory

  

파일을 검색할 때 마스터 디렉토리부터 경로를 따라 탐색을 한다. 만약 서브 디렉터리를 지시하는 링크가 사이클을 만들면 똑같은 경로를 재탐색하거나 무한 루프에 빠진다. 이는 한번에 탐색할 수 있는 디렉토리 개수를 제한하면 된다.

 

또 다른 문제점은 파일 삭제에도 발생한다. 파일에 대한 카운터가 0이면 해당 파일은 삭제 된다. 그러나 삭제될 애들끼리 사이클을 만들면 모두 카운터가 1이고 메모리상 낭비가 발생한다. 여기에서는 garbage collection기법을 사용하여 전체 시스템을 검색하고 외부에서 가르키는 지시 포인터가 없으면 삭제한다. 



11. File-System Mounting

  

파일 시스템의 디렉토리 구조에 접근을 하기위해서는 마운트 되어야 한다. 운영체제는 디바이스 이름과 파일 시스템을 부착할 수 있는 마운트 포인트가 있고 파일 시스템을 연결할 수 있다.



12. File Sharing

  

시스템에 복수의 사용자가 있다면 파일을 공유할 수 있다. 단 파일을 보호하기 위해 해당 파일에 대한 권한이 사용자 마다 정해진다.

파일 시스템을 네트워크상으로 연결시 파일에 대한 보안을 생각해야한다. 네트워크상 연결이 위에서 봤을 땐 마운트되어 있기 때문에 똑같이 경로로 접근된다.

파일에 대한 권한은 하나의 파일에 모든 유저에 대한 권한을 저장해 두는 것이 소유자, 그룹, 모든사람으로 나누어 권한을 준다.


'SoftWare > OS' 카테고리의 다른 글

OS - 12. Mass-Storage System  (2) 2016.06.11
OS - 11. File-System implementation  (0) 2016.06.10
OS - 9. Virtual Memory(2)  (0) 2016.06.03
OS - 9. Virtual Memory(1)  (1) 2016.06.02
OS - 8. Memory Management  (0) 2016.06.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함