본문 바로가기
👨‍💻Computer Science/리눅스시스템프로그래밍

[UNIX] 유닉스 파일 시스템(UFS: Unix File System)

by 코푸는 개발자 2021. 9. 6.
728x90
UFS (Unix File System)

유닉스파일시스템은 tree구조로 되어 있습니다.

/dec : 특수파일(I/O장치)
/etc : 시스템 관리 프로그램과 표
/tmp : 임시파일
/usr/bin : 유닉스 유틸리티
/usr/include :유닉스 언어 처리기에서 사용하는  include 파일
/usr/lib : Archive라이브러리, 테스트-처리매크로
/usr/adm : 시스템 관리 명령과 파일
/usr/spool : 프린트, mail, uucp, cron에 대한 spool파일

*유닉스에서는 모든 것을 파일로 취급하며 계층적구조를 형성하고 있고 각각의 파일에 대해 허가사항, 아이노드(inode : 파일시스템 내부코드)를 가지고 있습니다.

 

파일의 종류

보통파일

  • 보조기억장치(디스크등)에 저장되어 있는 byte의 연속으로 저장되어 있는 파일이다. 이 파일의 마지막에는  '^d'로 그 파일의 마지막임을 알리고 있다. 파일이 다른곳으로 전송되거나 전달될 경우 이 '^d'문자가 나오면 그곳이 파일의 마지막임을 인식하게 된다. 따라서 어떤 파일을 작성할 때 파일의 내용에 '^d'문자를 포함해서는 안된다.
  • 이 파일의 종류에는 text나 binary로 구성된 일반적인 데이터파일이나 프로그램소스파일등이 있다.
  • 다음의 명령어는 현제디렉토리에 있는 모든 파일의 형식을 나타내도록 한다.
  • % file *.*


특수파일

  • 유닉스시스템은 시스템의 물리적인 장치(하드디스크, 플로피디스크, 라인프린터, 터미널, 테이프드라이버)들도 하나의 특수파일로 간주합니다. 이 파일들은 /dec 아래에 있습니다.
  • block device파일 : 입,출력때 커널 내의 특정버퍼들을  이용하는특수파일들
  • character device 파일 : 이 특정버퍼를 이용하지 않는 특수파일들
  • 모든 특수파일들은 mknod라는 명령어로 만들어지며, 모든 입,출력디바이스들을 보통파일을 사용하는 것과 같이 취급됩니다.


디렉토리파일

  • inode와 파일이름으로 구성됩니다.
  • 파일이름과 inode를 mapping시켜주며, 파일시스템의 한 그룹과 그밖의 다른 그룹사이를 연결시켜주는 역할을 합니다.
  • 한 디렉토리는 ·(현재디렉토리)와 ··(상위 디렉토리)의 2개의 디렉토리는 반드시 가집니다.

 

파일어드레싱


파일이나 디렉토리는 그에 해당하는 하나의 inode를 가지고 있으며, 이  inode는 그 파일에 대한 모든 정보를 가지고 있으며, 한 inode는 64byte로 이루어진다. 또한 이 inode를 가지고 있는 표를 시스템 inode표(i-list)라고 합니다. 어떤 한 파일이나 디렉토리가 생성되면 하나의 inode가 만들어지고 그 inode가 i-list에 등록되며, 등록되는 entry-number를 그 inode에 대한 inumber라 합니다.

 

  • inode : 한 파일이나 디렉토리의 모든 정보를 갖고 있는 64byte로 구성된 표
  • i-list : 한 파일시스템에서 파일이나 디렉토리들의 inode를 갖고 있는 표
  • imunber : inode가 i-list에 등록되는 entry number 

 

inode의 내용

inode는 파일이나 디렉토리의 모든정보를 가지고 있는 자료구조를 말하며, 64byte로 구성되는 표로서 유닉스 시스템은 각 파일에 대한 하나의 inode를 할당합니다.

  • 파일소유권과 이용할 수 있는 여부에 대한 정보
  • 파일내용이 들어있는 디스크 내의 물리적주소
  • 파일의 링크수
  • 파일의 형태
  • 파일의 크기
  • 파일의 만들어진 시간, 최근 사용시간, 최근 수정시간
  • inode의 최근 수정시간

 

유닉스의 inode
유닉스에서 디스크는 일정한 크기의 블록으로 나누어져 있으며, 각 파일이 디스크의 공간에 할당될 때도 정해진 크기의 블록으로 할당되어 사용됩니다. inode는 파일의 구성블럭에 대한 물리적 위치가 포함되어 있습니다. 블록들의 물리적위치를 기록하기 위하여 직접어드레싱방법 및 간접어드레싱방법이 사용되고 있습니다. inode에 있는 블록위치에 대한 정보는 13개의 필드로 되어 있는데, 필드 0부터 필드 9까지는 직접적으로 블록을 어드레싱하는 부분인데, 다시 말해서 각 필드 내에 있는 내용은 디스크의 주소를 포함하고 있습니다. 처음 10개의 블록은 이러한 방식으로 어드레싱 되며, 유닉스 내에 있는 파일의 대부분이 작기 때문에 10개의 블록으로도 충분하지만, 방대한 파일인 경우에는 필드 10, 11 또는 12가 사용됩니다. 각각은 1,2,3차 간접어드레싱방법을 사용하게 됩니다. 필드 10은 실제의 어드레스가 있는 블록의 어드레스 즉, 주소의 주소를 가지고 있으며 어드레스 수는 통산 2,3백개의 주소를 기록할 수 있습니다. 그러므로 필드 10은 실제주소가 있는 곳을 가리키고, 필드 11은 이중간접어드레스 필드를, 12는 삼중 어드레스를 각각 저장하고 있습니다. 이러한 방법에 의해 어떠한 크기의 파일이라도 유닉스에서 모두 다루어 질 수 있습니다. 

파일의 생성

  • 새로운 파일이 만들어지면 그에 해당하는 inode가 I-list안에 만들어지며, 그 inode의 inumber와 파일이름이 디렉토리에 등록됩니다.

파일의 링크

  • 이미존재하고 있는 파일을 링크시킬 경우는 디렉토리에 그 파일에 대한 새로운 이름이 등록되고, inumber는 본래 있던 파일의 inumber가 복사됩니다. 이때 복사되는 파일의 inode에서 파일의 링크수는 하나증가하게 됩니다.

 

파일의 삭제

  • 파일을 삭제하면 그 파일에 대한 inode의 파일 링크수가 하나 감소되고 디렉토리 entry에서는 해당 파일의 inumber가 zero로 변합니다. inode의 파일링크수가 zero가 되면 파일의 디스크 블록은 free가 되며 inode는 deallocate됩니다.

 

파일시스템의 구조

파일시스템은 하나의 디스크속에서 다수로 존재할수있고 super block, I-list, data의 3부분으로 구성됩니다.

파일시스템은 newfs 또는 mkfs명령을 사용하여 만들어 집니다. 수퍼블럭은 파일시스템 전체를 제어하며, 그 내용은 다음과 같습니다.

  • i-list의 블록 수
  • 파일시스템 전체의 블록수
  • free block이 등록된 표
  • free inumber가 등록된 표

파일시스템은 mount명령으로 마운트되면 그 파일 시스템의 수퍼블럭이 core super block에 존재하고 그 내용은 sync명령으로 디스크에 기록됩니다. 시스템에서는 update라는 프로그램이 30초마다 시스템호출(system call)을 수행하여 sync명령을 실행시켜 수퍼 블록이 디스크에 갱신됩니다.

 

 마운트블 파일시스템


파일시스템이 일단 형성되면 그곳에 다른 파일시스템을 첨가 시킬 수 있습니다. 유닉스 파일시스템에서는 디스켓과 같은 제거가능한 매개물은 사용하기 전에 반드시 적절한 방법으로 기존의 파일 시스템에 마운트(mount)되어야 합니다. 그리고 플로피 디스크를 드라이브로부터 제거하기 위해서는 제거하기전에 반드시 언마운트(unmount)되어야 합니다.
한마디로, 마운트블 파일시스템은 매개물(디스크/테이프)에 저장되어 있는 파일시스템입니다.

파일시스템이 마운트되고 나면 마운트된 파일시스템의 내용은 일반 디렉토리를 사용하는 방법과 같이 사용할 수 있다.

% mount /dev/dsk1 /usr


위의 명령에 따라 운영체제는 /dev/dsk1을 보고 디스크에 있는 파일시스템의 루트와 현재 컴퓨터 시스템에 존재하는 /usr 디렉토리와 연결시켜줍니다. 여기서 usr은 마운트점이 됩니다.

관련명령어

 

728x90

'👨‍💻Computer Science > 리눅스시스템프로그래밍' 카테고리의 다른 글

[Linux] 리눅스 단축키 및 명령어 정리  (0) 2022.03.28
[Linux] vim/vi 명령어  (0) 2022.03.25
[Linux] 리눅스  (0) 2022.03.24
[Linux] 01-intro  (0) 2021.09.06
[UNIX] 유닉스  (0) 2021.09.06

댓글