1. inode 자료구조
1. inode란?
- 파일 시스템 내에서 파일을 관리하는 자료구조
- ‘index-node’라고도 한다.
2. inode에 포함된 정보
- 파일 크기(Bytes) 정보
- 파일 주소 정보(39Bytes)
- 링크 수: 이 아이노드에 대한 디렉터리 참조 수
- 사용자 식별번호(UID): 파일 소유자
- 그룹 식별번호(GID): 파일 소유자의 그룹
- 파일 모드: Permission 등 파일 접근 관련 정보(16bit)
- 파일을 생성한 날짜/시각
- 마지막으로 파일에 접근한 날짜/시각
- 마지막으로 파일을 수정한 날짜/시각
- 마지막으로 아이노드를 수정한 날짜/시각
3. 파일 모드
- Permission 등 파일 접근 관련 정보를 저장하는 16bit 플래그
- 파일 모드의 구조
비트 | 내용 |
12~15 | 파일 형식: 일반 파일(-), 디렉터리(d), 블록 특수 파일(b), 문자 특수 파일(c) |
9~11 | 실행 플래그 |
8 | 소유자(User) 읽기(Read) 허가 |
7 | 소유자(User) 쓰기(Write) 허가 |
6 | 소유자(User) 실행(Execute) 허가 |
5 | 그룹(Group) 읽기(Read) 허가 |
4 | 그룹(Group) 쓰기(Write) 허가 |
3 | 그룹(Group) 실행(Execute) 허가 |
2 | 다른 사용자(Other) 읽기(Read) 허가 |
1 | 다른 사용자(Other) 쓰기(Write) 허가 |
0 | 다른 사용자(Other) 실행(Execute) 허가 |
2. stat 구조체
1) stat 구조체란?
inode가 가지고 있는 정보 중 필요한 정보를 사용자에게 읽어주는 역할을 하는 구조체
2) stat 구조체 및 멤버
struct stat {
dev_t st_dev; // 장치 정보(major number, minor number 등)
ino_t st_ino; // 파일의 inode 정보
mode_t st_mode; // 파일 허가권 모드
nlink_t st_nlink; // 파일 링크의 수
uid_t st_uid; // 파일 소유자의 사용자 식별번호(UID)
gid_t st_gid; // 파일 소유자가 속한 그룹 식별번호(GID)
dev_t st_rdev; // raw 장치의 정보(major num, minor num 등)
off_t st_size; // 파일 크기(Bytes 단위)
time_t st_atime; // 마지막으로 파일을 읽거나 실행한 시간 정보
time_t st_mtime; // 마지막으로 파일을 쓰기(변경)한 시간 정보
time_t st_xtime; // 마지막으로 inode 내용을 변경한 시간 정보
long st_blksize; // I/O 파일 시스템 블록의 크기 정보
long st_blocks; // 파일에 할당된 블록 수
};
3) stat() 함수
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *file_name, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *file_name, struct stat *buf);
- stat(): 파일의 상태를 알아오는 함수, file_name(1번째 인자)의 상태를 얻어와서 buf(2번째 인자)에 채워진다.
- fstat(): open 등을 통해 만들어진 파일 지시자를 인자로 받아들이는 stat() 함수
- lstat(): 링크 파일에 연결된 원본 파일의 상태를 얻어오는 stat() 함수
'UNIX 이론 정리' 카테고리의 다른 글
UNIX 파일 시스템, 원격 파일 시스템(NFS) (1) | 2022.10.03 |
---|---|
UNIX 프로세스 동작 - foreground 프로세스, background 프로세스 (0) | 2022.10.03 |
UNIX 입출력 장치 관리 - 특수 파일(디바이스 파일) (0) | 2022.10.03 |
UNIX 커널 내부 구조 (0) | 2022.10.03 |
UNIX 시스템의 특징, UNIX 가상 메모리 관리 (0) | 2022.10.03 |