OS - File System Interface

Bomin Seo·2022년 8월 8일
0

Requirements for long-term information storage

  • 매우 큰 데이터에 대해서도 저장할 수 있어야 한다.
  • 프로세스가 끝나더라도 정보는 유지되어야 한다.
  • Multi-processes가 concurrently하게 정보에 접근할 수 있어야 한다.

File system

  • Secondary storage를 위하여 abstraction하게 구현 (file)
  • File을 논리적으로 조직한다 (directories, folder)
  • 사람/프로세스/기계 간에 공유를 허용한다 (sharing)
  • 데이터를 원치 않은 접근으로부터 보호한다 (protection)

File (file + directories)

  • Secondary storage에 저장된 연관된 데이터들의 모음
  • OS는 files를 통하여 information storage에 대한 일관된 논리적 관점을 제공한다.

File structures

  • Flat : byte sequence
  • Structured : Lines, Fixed length record, variable length records
  • Text file : 각 언어별로 unified된 코드의 형태로 저장 (.txt / .cpp / 헤더파일etc.)
    • 원하는 데이터를 코드화하여 전달
  • Binary file : 데이터를 코드화하는 것이 아닌 데이터 자체가 의미가 있다. (.exe / .dll etc.)
  • 아래한글이나 ppt파일 같은 경우 헤더에 일부의 text file이 존재하지만, 그림과 같은 데이터도 포함하기 때문에 전체적으로 binary file로 볼 수 있다.

File operations

int creat (const char *pathname, mode_t mode);
int open (const char *pathname, int flags, mode_t mode);
int close (int fd);
ssize_t read (int fd, void *buf, size_t count);
ssize_t write (int fd, const void *buf, size_t count);
off_t lseek (int fd, off_t offset, int whence);
int stat (const char *pathname, struct stat *buf);
int chmod (const char *pathname, mode_t mode);
int chown (const char *pathname, uid_t owner, gid_t grp);
int flock (int fd, int operation);
int fcntl (int fd, int cmd, long arg);

File types

Understood by file systems

  • File system의 종류에 따른 유형 : device, directory, symbolic link etc.

Understood by other parts of OS or runtime libraries

  • Executable, dll, source code, object code, text etc.

Understood by application programs

  • Jpg / mpg / avi / mp3 etc.

Encoding file types

Windows encodes type in name (extension : .앞에 이름을 붙일 수 있다)

  • .com, .exe, .bat, .dll, .jpg, .avi, .mp3, etc.

Unix encodes type in contents (extension이 존재하지 않는다)

  • magic numbers (e.g., 0xcafebabe for Java class files)
  • initial characters (e.g., #! for shell scripts)

file access

Sequential access (제일 많이 사용한다)

  • read bytes one at a time, in order
  • 실행 파일을 메모리에 올려서 순차적으로 읽어서 사용하며, 일반적으로 많이 사용하는 방식

Direct access

  • random access given block/byte number
  • 원하는 위치의 데이터만을 읽게 한다.

Record access

  • File is an array of fixed- or variable-length records, read/written sequentially or randomly by record #
  • Direct access같은 경우 record단위로 읽고 쓰는 등의 작업을 수행한다.

Index access

  • File system contains an index to a particular field of each record in a file, reads specify a value for that field and the system finds the records via the index (DBs)
  • Record access의 경우 파일은 탐색하는 것이 잦기 때문에 키를 기반으로 한 인덱스를 정의한 후 탐색을 진행한다.

Directories (folder in Windows)

  • 유저를 위해서 구조화된 파일 형식을 제공한다.
  • File system을 위해서 disk에 물리적인 파일의 위치 정보와 logical file 조직의 구현을 구분하는 편리한 naming interface를 제공한다.
  • 특별한 metadata를 가지고 있는 파일이다. List of (file name, file attributes)
  • Attributes : size, protection, creation time, access time, location on disk
  • 보통 정렬되어 있지 않다

Operations

  • Directory는 file안에 구현되어 있기 때문에 파일 operation으로 조작할 수 있다.
  • C runtime 라이브러리는 directories를 읽기 위하 높은 추상화 수준을 제공한다.
    • Opendir / readdir / seekdir / closedir etc.

Pathname translation

File system mounting

Windows의 경우

  • 용량이 부족한 경우 C drive, D drive 등 drive를 사서 부착한다.

UNIX / LINUX의 경우

  • Drive의 개념 없이 root directory에서 시작한다.
  • Drive를 부착하기 위해서는 파일 시스템을 만들고 OS가 사용할 수 있도록 Mount해야한다.

File sharing

  • Network로 연결된 다른 컴퓨터의 파일을 local의 파일처럼 사용할 수 있게 한다.
  • Windows의 경우에는G drive처럼 drive를 별도로 만들어서 network drive로 사용하며(CIFS) UNIX의 경우에는 NFS 표준을 따른다.

Protection

  • 다른 사용자나 프로세스가 내 파일을 마음대로 읽고, 변경하는 등의 작업을 하지 못하도록 한다.

Access control lists(ACLs) – 주로 사용

  • 파일이나 directory같은 각각의 object 별로 허용된 작업을 리스트로 관리한다.
  • 사용자가 많아지면 복잡해진다.

Capabilities

  • 사용자 별로 허용된 작업을 리스트로 관리한다.
  • 파일이 하나 생길 때마다 파일별로 모든 사용자에게 작업을 해야 하기 때문에 복잡도가 높다.

Access lists in UNIX/LINUX

  • 사용자를 그룹별로 나누어 3mode(read/write/execute) 별로 관리한다.

  • 8진수로 표현

    • 파일 하나당 9bit가 필요하다

  • -의 의미 : regular file

  • D의 의미 : directory

  • directory에서 x의 의미

    • 그 directory로 change directory를 할 수 있다
    • X가 없으면 change directory 불가
profile
KHU, SWCON

0개의 댓글