시스템 프로그래밍 03 파일 시스템 관련 시스템콜 이해

2021. 3. 14. 18:48Computer(인강)/시스템 프로그래밍

728x90
반응형

안녕하세요 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에 출력하도록 되어있음

 

 

예시 코드

 

 

728x90
반응형