컴퓨터공학 공부

컴퓨터공학 공부 다시 시작하기 14주차 - 파일 시스템 개념 이해, inode 파일 시스템 개념 이해, 부팅과 현대 운영체제 구조 이해

개발학생 2025. 2. 10. 19:42
반응형

파일 시스템 개념 이해

- 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘

파일 시스템이 만들어진 이유

- 블록: 0과 1의 데이터를 저장매체에 저장할 때, 비트로 관리하기에는 오버헤드가 너무 커서 블록 단위로 관리(보통 4KB)
  -> 각 블록별로 고유 번호를 부여하여 관리

- 파일: 사용자가 각 블록을 고유 번호로 관리하기는 어려우므로 '파일'이라는 추상적(논리적) 객체 필요

  -> 사용자는 파일 단위로 관리하며, 각 파일은 블록 단위로 관리

- 저장 방법: 저장매체에 효율적으로 파일을 저장하려면 가능한 연속적인 공간에 파일을 저장하는 게 좋은데,

                   외부 단편화/파일 사이즈 변경 문제로, 불연속 공간 파일 저장 기능 지원이 필요해짐
  -> 블록 체인: 블록을 링크드 리스트로 연결하며 끝의 블록을 찾으려면 처음 블록부터 주소를 따라가야 함
  -> 인덱스 블록 기법: 각 블록의 위치 정보를 기록하여, 한번에 끝 블록을 찾아갈 수 있도록 함

 

다양한 파일 시스템

- Windows: FAT, FAT32, NTFS(블록 위치를 FAT이라는 자료 구조에 기록함)

- 리눅스(UNIX 계열): ext2, ext3, ext4(일종의 인덱스 블록 기법인 inode 방식을 사용함) 

파일 시스템/파일 관련 함수 및 시스템 콜

- 동일한 시스템 콜을 사용하여 다양한 파일 시스템 지원이 가능하도록 구현함

- read/write 시스템 콜 호출 시, 각 기기와 파일 시스템에 따른 실질적 처리를 담당하는 함수를 호출

  (예: read_spec/write_spec)

- 운영체제가 제공하는 시스템 콜을 기반으로, 각 언어에서 해당 시스템 콜을 호출하도록 라이브러리 등을 제공

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

inode 파일 시스템 개념 이해 - 가장 기본이 되는 파일 시스템 방식 

파일 시스템 기본 구조

- 수퍼 블록: 파일 시스템 정보

- 아이노드 블록: 파일 상세 정보

- 데이터 블록: 실제 데이터 

inode 파일 시스템(수퍼 블록)

- 파일 시스템 정보 및 파티션 정보 포함 

- inode 고유값과 자료구조를 통해 파일의 주요 정보를 관리

- '파일이름:inode'와 같이 파일 이름이 inode 번호와 매칭

- inode를 기반으로 파일 엑세스 및 메타 데이터 저장을 진행

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0
출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

inode 구조

- inode 기반 메타 데이터(파일 권한, 소유자 정보, 파일 사이즈, 생성시간등 시간 관련 정보, 데이터 저장 위치등)

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

inode 구조와 파일

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

inode 구조와 파일 데이터

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

 

디렉토리 엔트리

- 리눅스 파일 탐색 시 각 디렉토리 엔트리(dentry)를 탐색하며, 각 엔트리는 해당 파일/디렉토리의 정보를 가지고 있음
  => 예시: /home/ubuntu/link.txt 

       '/' dentry 에서 'home'을 찾은 다음 'ubuntu'를 찾고, 'ubuntu'에서 link.txt의 파일이름에 해당하는 inode 얻음

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

가상 파일 시스템(Virtual File System)

- Network등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리 가능
  (예: read/write 시스템콜 사용, 각 기기별 read_spec/write_spec 코드 구현)

출처-https://www.fun-coding.org/post/filesystem.html#gsc.tab=0

리눅스(유닉스) 운영체제와 가상 파일 시스템

- 모든 것은 파일이라는 철학을 따르기에, 모든 인터렉션은 파일을 읽고 쓰는 것처럼 이루어져있음
- 마우스, 키보드와 같은 모든 디바이스 관련된 기술이 파일과 같이 다루어짐
- 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스 활용

특수 파일(디바이스)

- 블록 다바이스(Block Device) : HDD, CD/DVD와 같이 블록/섹터 등 정해진 단위로 데이터 전송, IO 송수신 속도가 높음

- 캐릭터 디바이스(Character Device) : 키보드/마우스 등으로 byte 단위 데이터 전송, IO 송수신 속도가 낮음

- cd /dev, cat tty

출처-온라인 강의

부팅과 현대 운영체제 구조 이해(운영체제 이론 기반)

부팅(Booting)

- 컴퓨터를 켜서 동작시키는 절차
- Boot 프로그램: Storage에서 특정 주소의 물리 메모리로 운영체제 커널을 복사하고, 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램
- 과정: 컴퓨터를 켜면 BIOS가 특정 Storage 읽어와 bootstrap loader를 메모리에 올리고 실행함
  (bootstrap loader 프로그램이 있는 곳을 찾아서 실행시킴)

출처-https://www.fun-coding.org/post/boot.html#gsc.tab=0

현대 운영체제 구조 이해

- 리눅스 운영체제: 리눅스 커널(운영체제) + 시스템 프로그램(쉘) + 응용 프로그램

출처-https://www.fun-coding.org/post/boot.html#gsc.tab=0

- 안드로이드 스마트폰 (Android): Linux Kernel + (Shell + Some basic programs) + Andorid Framework

출처-https://www.fun-coding.org/post/boot.html#gsc.tab=0

 

반응형