리눅스는 모든 것은 파일이라는 철학을 따릅니다. 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있습니다. 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어집니다. 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용합니다. 또한 리눅스는 전역 네임스페이스를 사용한다고 공부했습니다. (ex. /media/floofy/geumyong/jpg.)
슈퍼블록, inode와 파일
슈퍼블록: 파일 시스템의 정보입니다.
파일: inode 고유값과 자료구조에 의해 주요 정보를 관리합니다. '파일이름:inode'로 파일이름은 inode 번호와 매칭됩니다. 파일 시스템에서는 inode를 기반으로 파일에 접근합니다. inode 기반 메타 데이터를 저장합니다.
inode 기반 메타 데이터는 위와 같이 구성됩니다.
파일 권한, 소유자 정보, 파일 사이즈, 생성시간 등 시간관련 정보, 데이터 저장 위치 등으로 구성됩니다.
파일과 inode
리눅스는 파일 탐색을 할 때, 각 디렉토리 엔트리(dentry)를 탐색합니다. 각 엔트리는 해당 디렉토리 파일/디렉토리 정보를 가지고 있습니다.
파일과 서브 디렉토리 모두 inode를 갖고 있습니다. '/home/ubuntu/link.txt'를 예로 들면, '/'dentry에서 'home'을 찾고, 'home'에서 'ubuntu'를 찾고, 'ubuntu'에서 link.txt 파일 이름에 해당하는 inode를 얻습니다.
리눅스 파일 구조
home 디렉토리 안에 사용자 아이디 디렉토리 안을 default로 하고 있습니다.
media, mnt 디렉토리에는 새로운 디바이스와 연결됐을 때 연결됩니다.
etc 디렉토리 안에 여러 설정 파일이 있습니다.
dev 디렉토리에는 각각의 디바이스들과 매핑된 파일들이 있습니다.
bin과 sbin 디렉토리에는 쉘 명령어들의 실행파일들이 있습니다. PATH 설정할 수 있습니다.
boot 디렉토리는 부팅과 관련된 파일이 들어있습니다.
log 디렉토리에는 서버가 오류를 확인할 수 있는 기록이 들어있습니다.
'시스템 프로그래밍' 카테고리의 다른 글
시스템콜, API, ABI, 표준 (0) | 2021.04.30 |
---|---|
쉘(shell) 사용법 - 리눅스 파일 시스템 (0) | 2021.04.30 |
쉘 사용법 - 리눅스 프로세스 (0) | 2021.04.30 |
쉘 (shell) 사용법 - 리다이렉션(redirection)과 파이프(pipe) (0) | 2021.04.30 |
쉘 (shell) 명령어 (0) | 2021.04.29 |