File

  • 컴퓨터 시스템을 편리하게 사용하기 위해 저장된 정보에 대한 일과된 논리적 관점을 제공하고 저장장치의 물리적 특성을 추상화하여 논리적 저장 단위, File을 정의
  • 속성 : 이름, 식별자, 타입, 위치, 크기, 시간 등
  • 명령어 : 생성, 쓰기, 읽기, 재설정, 삭제, 절단
  • open() 시스템 호출로 파일에 접근
  • 재접근에 대한 낭비를 줄이기 위해 open-file table에 모든 열린 파일에 대한 정보가 저장됨
  • close()로 닫으면 open-file table에서 제거됨
  • file pointer : 읽기와 쓰기 시스템 호출의 일부분, 파일을 어디까지 읽었다는 것을 나타냄
  • Open File Locking : Shared lock 여러 프로세스가 잠금 가능, writer lock 한 번에 한 프로세스만 잠금

 

File Structure & Internal File Structure

  • 각각의 파일들은 그 파일을 다루는 프로그램에 의해 인식 가능한 내부 구조를 일정한 형태로 가짐
  • 특정 파일들은 os가 인식할 수 있도록 미리 정해진 구조를 따름
  • 파일은 일련의 블록으로 간주, 디스크 입출력은 한 블록 단위로 수행되고 모든 디스크 블록들은 동일한 크기를 가짐

 

Access Methods

  • Sequentail Access : 순차 접근, Tape Model과 비슷
  • Direct Access : 고정길이의 논리 레코드의 집합으로 정의되어야함, 레코드 번호로 접근
  • IBM의 ISAM : 크기가 작은 마스터 색인을 메모리에 유지, 우선 메모리에서 색인 블록 번호를 찾고 레코드로 가서 순차적으로 데이터를 찾음.

 

Directory and Disk Structure

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

  • 위 그림에서 directory는 root라 생각하면 되고 하나의 disk가 파티션의 복수의 directory로 나누어질 수 있다.
  • format : 해당 디스크의 데이터를 모두 지우는 것이 아닌 directory를 재설정

Directory 종류

Single-Level Directory

  • 모든 파일이 한개의 디렉터리 밑에 있다. (1:1)

 

Two-Level Directory

  • master file directory 밑에 user file directory 존재, 경로명을 써서 파일을 찾아가야 함

 

Tree-Structure Directories

  • os는 하위 디렉터리 역시 하나의 file로 본다. 비트를 설정해 0이면 file, 1이면 subdirectory
  • 아래로 계속해서 나아갈 수 있지만 cycle은 안된다. 즉, 파일공유 안됨!
  • rm -r <dir-name>에서 r의 recursive..

 

Acyclic-Graph Directories

  • 그래프 구조로 cycle 허용
  • 링크는 다른 파일이나 서브 디렉터리를 가리키는 포인터(하나의 파일로 취급)
  • 하나의 파일에 복수의 링크가 존재 가능
  • 원본 파일을 지워도 링크 파일은 존재 → Dangling pointer

 

General Graph Directory

  • 파일을 검색할 때 마스터 디렉터리부터 경로를 따라 탐색
  • 서브 디렉터리를 지시하는 링크가 사이클 만들면 똑같은 경로를 재탐색하거나 무한루프
  • 한 번에 탐색할 수 있는 디렉터리 개수를 제한!
  • garbage collection 기법을 사용해 외부에서 가리키는 지시 포인터 없으면 삭제

 

File-System Mounting

  • 파일 시스템의 디렉터리 구조에 접근을 하기 위해서는 마운트가 되어야 한다.
  • os는 디바이스 이름과 파일 시스템을 부착할 수 있는 mount-point가 있고 파일 시스템 연결 가능

 

File Sharing

  • 시스템에 복수의 사용자가 있다면 파일 공유 가능
  • 단 파일을 보호하기 위해 해당 파일에 대한 권한이 사용자마다 정해짐
  • 소유자, 그룹, 모든 사람 (리눅스 명령어 chmod로 권한 설정 가능)

+ Recent posts