✅ inode

Inode란 파일을 기술하는 디스크 상의 데이터 구조로서 파일의 데이터 블록이 디스크 상의 어느 주소에 위치하고 있는가와 같은 파일에 대한 중요한 정보를 갖고 있습니다.
모든 파일이나 디렉토리는 1개의 inode를 가지고 있고(1개의 inode는 64byte로 이루어져있다.)
이렇게 inode가 모여있는 공간이 inode블록이라고 합니다. (전체 디스크의 1%정도를 차지한다.)
Inode 확인 방법은 ls -I 명령어를 통해 확인 가능합니다.

1️⃣ 파일 시스템 기본구조

  • 수퍼 블록 : 파일 시스템 정보 및 파티션 정보를 가지고 있는 블록입니다.
    • 예시: window로 보면 C드라이브, D드라이브 이런식으로 파티션을 나눠서 사용하는 것
  • 아이노드 블록 : 파일 상세 정보를 가지고 있는 블록입니다.
  • 데이터 블록 : 실제 데이터를 가지고 있는 블록입니다.

2️⃣ inode와 파일

  • 파일 inode 고유값과 자료 구조에 의해 주요 정보를 관리합니다.
    • '파일이름:inode'로 파일이름은 inode 번호와 매칭 됩니다.
    • 파일 시스템에서는 inode를 기반으로 파일 엑세스를 합니다.
    • inode 기반 메타 데이터를 저장합니다.

3️⃣ inode 구조

inode 기반 메타 데이터(파일 권한, 소유자 정보, 파일 사이즈, 생성시간 등 시간 관련 정보, 데이터 저장위티 등)를 가지고 있습니다.

4️⃣ 디렉토리 엔트리

디렉토리를 표현하는 데에 쓰이는 자료구조를 의미합니다.
파일 시스템에 따라서 이를 구성하는 항목이 달라지는데 일반적으로는 파일이름, 파일속성 등 파일에 대한 여러가지 정보가 저장되어 있습니다.

  • 리눅스 파일 탐색 예 : /home/ubuntu/link.txt
    • 각 디렉토리 엔트리를 탐색
    • 각 엔트리는 디렉토리 파일/디렉토리 정보를 가지고 있습니다.
  • '/'dentry 에서 'home'을 찾고, 'home'에서 'ubuntu'를 찾고, 'ubuntu'에서 link.txt파일 이름에 해당하는 inode를 얻음

5️⃣ 가상 파일 시스템(Virtual File System) - 리눅스 운영체제

읽기/쓰기와 같은 시스템 호출 발생 시, 해당 파일이 속한 파일 시스템에 맞는 동작이 수행될 수 있도록 매핑해주는 것입니다.
Network등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리 가능합니다.

예: read/write 시스템콜 사용, 각 기기별 read_spec/write_spec 코드 구현(운영체제)
예: 드라이브 설치(마우스, 키보드)

💡 알아두기

  • 디바이스
    • 블록 디바이스(Block Device) : HDD, CD/DVD와 같이 블록 또는 섹터 등 정해진 단위로 데이터 전송, IO 송수신 속도가 높음
    • 캐릭터 디바이스(Character Device) : 키보드, 마우스 등 byte 단위 데이터 전송, IO 송수신 속도가 낮음

✅ 가상 머신(Virtual Machine)

하나의 하드웨어(CPU, Memory 등)에 다수의 운영체제를 설치하고, 개별 컴퓨터처럼 동작하도록 하는 프로그램입니다.

1️⃣ Type 1 (native or bare metal)

하이퍼 바이저 : 운영 체제와 응용 프로그램을 물리적 하드웨어에서 분리하는 프로세스
하이퍼 바이저 또는 버추얼 머신 모니터라고 하는 소프트 웨어가 Hardware에서 직접 구동합니다.

프로그램 예시 : Xen, KVM

2️⃣ Type 2

하이퍼 바이저 또는 버추얼 머신 모니터라고 하는 소프트웨어가 Host OS 상위에 설치

프로그램 예시 : VMWare, VirtualBox


✅ 부팅

컴퓨터를 켜서 동작시키는 절차입니다.

  • Boot 프로그램
    • 운영체제 커널을 Storage에서 특정 주소의 물리 메모리로 복사하고 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램입니다.

1. BIOS
BIOS 데이터를 읽어 옵니다,.
2. POST
BIOS는 POST를 진행하여 하드웨어의 정상적인 작동을 검사합니다.
3. Bootstrap
POST에 이상이 없으면 BIOS는 부트스트랩을 실행하여 부팅 정보를 메모리에 읽어옵니다.
4. Bootloader
운영체제 코드를 메모리로 읽어옵니다. 3에 있는 부팅정보는 Bootloader
5. 운영체제 실행
읽어 온 운영체제 명령에 의해 CPU는 첫 프로세스를 즉시 실행합니다.

profile
#UXUI #코린이

0개의 댓글