리눅스와 파일 정리
* 모든 것은 파일이라는 철학을 따름
- 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있음
- 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐
- 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용
가상 파일 시스템
* 파일 네임스페이스
- A 드라이브 (A:/), C 드라이브 (C:/windows) (X)
- 전역 네임스페이스 사용
/media/floofy/dave.jpg
예: cat tty
슈퍼블록, inode와 파일
* 슈퍼블록 : 파일 시스템의 정보
* 파일 : inode 고유값과 자료구조에 의해 주요 정보 관리
- '파일이름:inode'로 파일이름은 inode 번호와 매칭
- 파일 시스템에서는 inode를 기반으로 파일 엑세스
- inode 기반 메타 데이터 저장
리눅스 파일 시스템 (ext file system)과 inode
* inode 기반 메타 데이터
(파일 권한, 소유자 정보, 파일 사이즈, 생성시간 등 시간 관련 정보, 제이터 저장 위치 등)
파일과 inode
* 리눅스 파일 탐색: 예 - /home/ubuntu/link.txt
1. 각 디렉토리 엔트리 (dentry)를 탐색
각 엔트리는 해당 디렉토리 파일/디렉토리 정보를 가지고 있음
2. '/' dentry에서 'home'을 찾고, 'home'에서 'ubuntu'를 찾고, 'ubuntu'에서 link.txt 파일이름에 해당하는 inode를 얻음
리눅스 파일 구조
하드 링크와 소프트 링크
* cp (copy) 명령 : 파일 복사
- 10MB 사이즈를 가지고 있는 A 파일을 B 파일로 복사
- cp A B -> A와 B는 각각 물리적으로 10MB 파일로 저장
* 하드 링크 : ln A B
- A 와 B는 동일한 10MB 파일을 가리킴
- 즉, 동일한 파일을 가진 이름을 하나 더 만든 것일 뿐
inode는 동일하다!!
전체 파일 용량은 달라지지 않는다!!
- ls -i (파일 inode 확인하기)
- ls -al (완전 동일한 파일)
- rm A로 A를 삭제하면? B는 그래도 해당 파일 접근 가능
'A:해당 inode' 이 정보만 삭제 되고, inode를 가진 실제 파일은 그대로 남는다
* 소프트 (심볼릭) 링크 : ln -s A B
- Windows OS의 바로가기와 동일
- ls -al 하면, 소프트 링크 확인 가능
- rm A로 A를 삭제하면? B는 해당 파일 접근 불가
* 하드 링크 / 소프트 링크 둘 다 어느 하나 파일을 수정하면, 각 파일이름으로 동일한 내용 접근 가능하다
하드 링크와 inode
소프트 링크와 inode
특수 파일
* 디바이스
- 블록 디바이스 (Block Device)
: HDD, CD/DVD와 같이 블록 또는 섹터 등 정해진 단위로 데이터 전송, IO 송수신 속도가 높다
- 캐릭터 디바이스 (Character Device)
: 키보드, 마우스등 byte 단위 데이터 전송, IO 송수신 속도가 낮음
- cd /dev, cat tty
※ 정리
* 파일 추상화 인터페이스를 활용 다양한 데이터/디바이스 접근
* 파일 네임스페이스는 전역 네임스페이스 활용 (/media/floofy/dave.jpg)
* '파일이름:inode'로 매칭, 파일 시스템은 inode 기반 접근
* 하드 링크: 동일 inode 가리키는 파일 이름만 하나 더 만듬
* 소프트 링크: 특정 파일 바로가기 파일을 만듬
* ln 명령 알아두기
* 특수 파일: 블록/캐릭터 디바이스
출처 : 제로베이스
'공부 Note > 시스템 프로그래밍' 카테고리의 다른 글
Chapter 04 시스템 프로그래밍 (2) (0) | 2022.02.07 |
---|---|
Chapter 04 시스템 프로그래밍 (1) (0) | 2022.02.07 |
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (4) (0) | 2022.02.07 |
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (3) (0) | 2022.02.07 |
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (2) (0) | 2022.02.07 |