2021. 3. 14. 18:48ㆍComputer(인강)/시스템 프로그래밍
안녕하세요 bannavi입니다^ㅅ^
오늘은 파일시스템 관련 시스템콜에 대해 이해해보는 시간을 가져볼게요
바로 시작하겠습니다^ㅅ^
파일시스템은 운영체제에서 배울 때 이 inode아이노드 구조체가 중요하다고 말씀드렸었습니다.
아이노드 방식은 이 구조체만 제대로 이해하셔도 큰 도움이 되실거라 생각합니다.
프로세스마다 pid가 존재하고, pid별로 상태 데이터를 관리하는 자료구조 pcb가 존재한다.
이와 마찬가지로
파일도 inode라고 하는 unique한 숫자값을 가지고 있고, 이 각각의 inode번호에 대응하는 inode구조체를 가지고 있다.
왼쪽에 있는것들이 inode 구조체이다.
아이노드 구조체
inode구조체
1. Mode : 파일종류, 권한
2. Owner Info : 소유자, 소유그룹
3. Size : 파일사이즈
4. Timestamps : 생성, 수정 정보
5. Direct blocks(12개) : 직접적으로 블록에 주소를 가리키는 데이터
6. Single indirect : 간접적으로 주소를 가리키는 데이터
7. Double indirect : 간접적으로 주소를 가리키는 데이터
8. Triple indirect : 간접적으로 주소를 가리키는 데이터
직접적으로 주소를 가리키냐, 간접적으로 가리키냐, 더더더 간접적으로 가리키냐에 따라서 data가 분리되고 있음.
그러면 이런 inode정보를 한번에 가져올 수 있는 시스템콜이 있지않을까요?
바로, stat()함수 입니다.
st_dev
하드링크는 원본이 사라져도 하드링크된 파일이 사라지지 않는다.
바라보고 있기 때문에.
inode 메타데이터 - stat구조체
예시 코드
Standard Stream(표준 입출력)과 파일 시스템콜
# command로 실행되는 프로세스는 세가지 스트림을 가지고 있음
1. 표준 입력 스트림(Standard Input Stream) - stdin
2. 표준 출력 스트림(Standard Output Stream) - stdout
3. 오류 출력 스트림(Standard Error Stream) - stderr
# 모든 스트림은 일반적인 plain text로 console에 출력하도록 되어있음
예시 코드
'Computer(인강) > 시스템 프로그래밍' 카테고리의 다른 글
시스템 프로그래밍 02 mmap 예제 및 활용 (0) | 2021.03.13 |
---|---|
시스템 프로그래밍 01. 메모리와 mmap (0) | 2021.03.12 |
스레드 02 - 기본과 동기화 (0) | 2021.03.12 |
스레드 01 기본 (0) | 2021.03.12 |
쉘스크립트 - 04 협업 예제 및 정리 (0) | 2021.03.12 |