File System

파일 시스템이란 파일들을 잘 관리하기 위한 도구이다. 여러 사람이 공유할 수도 있고 반대로 다른 사람은 볼 수 없도록 프로텍션 기능도 필요하다.

Files

파일은 텍스트 파일과 바이너리 파일로 나눌 수 있다.

  • 텍스트 파일 : 아스키코드, 한글 코드로 저장된 파일로, 우리에게는 변환해서 보여주는 것이다.
  • 바이너리 파일 : 데이터 자체로 의미가 있는 파일들로, 실행파일 등이 있다.

파일의 확장자, Extention 은 파일 이름에 들어가는 . 을 이용한 파일 관리법이다. 리눅스에서는 파일에 따로 확장자가 존재하지 않는다.

File Access

  • Sequential access : 프로그램을 실행하면 코드를 메모리에 올리는데 처음부터 끝까지 쭉 읽는 것
  • Direct access : 원하는 위치에 있는 부분을 읽을 수 있는 것
  • Record access : record라는 단위로 읽고 쓴다
  • Index access : record 단위로 존재하는 파일에서 원하는 파일을 찾을 때 index를 활용

Directories

윈도우에서 흔히 폴더라고 부른다. 사용자에게는 파일들의 묶음을 제공하며, 파일 시스템에게는 실제 파일들을 논리적으로 묶는 인터페이스를 제공한다. 각 디렉토리는 메타데이터를 가지고 있으며, 대게 정렬되지 않는다.

Directory Operation

디렉토리 내에 어떤 파일들이 있는지 프로그램으로 읽을 수 있다. 그 떄 사용하는 라이브러리들. opendir, dirent, seekdir, closedir 등 시스템 콜을 이용!

File System Mounting

윈도우에는 새로운 드라이브를 단다고 하면 독립적 드라이브로 존재한다. 하지만 리눅스에서는 모두 Root 하위에 존재한다. 따라서 기존 파일 시스템에 새로운 드라이브를 붙인다면 트리 구조의 자식노드에 붙으며 이를 마운팅이라 한다.

image

File Sharing

네트워크 연결된 Remot File System 이 존재한다. 윈도우는 드라이브로 CIFS, 리눅스는 NFS 프로토콜을 사용한다.

Protection

다른 사용자, 다른 프로세스가 내가 사용하는 파일들을 마음대로 변경, 삭제, 업데이트 하지 못하도록 보호하는 것이다.

ACL(Access control lists)로 권한을 관리한다.

Object 별로 권한을 나눌 수 있다. 예를 들어 /etc/passwd 파일은 Root는 rw 할 수 있고, 개인 사용자는 r, 그룹은 - 이다.

또한 Subjects 별로 권한을 나눌 수 있다. Capability 사용자별로 각 파일에 대해서 1번파일 r, 2번파일 rw 의 권한을 생성한다. 파일이 하나 생길 때마다 모든 사용자들을 수정해야하기 때문에 오버헤드가 크다.

image

Access Lists in Unix/Linux

3가지 클래스로 나눠 사용자를 표시한다. 파일 하나 당 3/3/3 총 9비트로 권한을 표시한다. 110/111/100 -> 674

  • Owner access RWX : 파일을 만든 사람이 Read/Write/Excute 할 수 있는 지. 확장자가 따로 없기 때문에 Excute로 실행파일인지 표시한다.
  • Group access RWX : 각자 속한 그룹이 존재한다. 그 그룹에 모든 사용자들이 뭘 할 수 있는지 표시한다.
  • Public access RWX : 모든 사람이 뭘 할 수 있는지 표시한다.

image

실제 예시를 살펴보면 가장 오른쪽에 9비트로 모두 권한이 나타나있는 것을 확인할 수 있다. 추가로 가장 앞에 -/d 가 존재하는데, 이것은 디렉토리인데 파일인지를 나타낸다.

업데이트:

댓글남기기