부트로더

컴퓨터(또는 MCU)의 전원이 켜질 때 일반적으로 램(RAM)에 운영 체제가 없습니다. 그래서 컴퓨터는 적은 양의 필요한 데이터와 함께 롬(ROM)에 저장된 작은 프로그램을 실행하여 운영체제를 보조 기억 장치에서 RAM에 로드합니다.

이 작업을 하는 작은 프로그램 부트 로더라고 합니다.

 

기능

1. 직렬 통신, 인터럽트, 타이머, 콘솔, 메모리, 각종 입출력 장치 등을 점검하여 실행 가능 상태로 만들어 줍니다.

2. 화면에 내용을 출력해서 사용자 인터페이스 기능을 합니다.

3. 커널을 메모리(RAM)에 로드시켜서 사용자 명령 처리를 준비하는 역할을 합니다.

 

부트로더의 종류

  • U-Boot(Universal Bootloader)
    • PPCBoot와 ARMBoot 프로젝트 기반
  • LILO(Linux Loader)
  • GRUB(Grand Unfied Bootloader)
  • Loadlin
  • EtherBoot
  • Blob
    • ARM용 부트로더
  • PMON(PROM Monitor)
    • MIPS 보드용
  • RedBoot
    • RedHat에서 개발 및 배포
    • eCos 기반

 

커널

운영체제의 핵심으로 하드웨어와 응용프로그램 사이에서 보안, 자원관리, 추상화를 해줍니다.

파일 시스템

운영체제에서 파일이나 자료를 쉽게 접근할 수 있도록 보관 또는 조직하는 체계

 

아이노드(inode): UFS와 같은 유닉스 계통 파일 시스템에서 사용하는 자료구조이며, 정규 파일, 디렉터리  파일 시스템에 관한 정보를 가지고 있습니다.

 

파일 시스템 내에서 파일이나 디렉토리는 고유한 inode 를 가지고 있으며, inode 번호를 통해 구분이 가능합니다.

 

컴퓨터에서 파일을 저장할 때 하드디스크에 연속적으로 저장하는것이 아닌 파일들을 조각으로 나눠서 저장하게 되는데, 그 파일들이 어디있는지를 기록해 둬야 합니다.

파일 시스템 종류

FAT(File Allocation Table)

볼륨의 맨 위에 FAT 이라는 테이블이 있고 그 테이블에 파일의 할당 정보를 저장합니다.

파일을 섹터 단위로 나누면 파일이 너무 작게 나눠지기 때문에 적당히 작게 나누기 위해서 클러스터를 사용합니다.

FAT 뒤에 숫자는 클러스터 ID를 저장하는데 사용하는 비트 수 입니다. 그래서 최대 표현 가능한 클러스터 수와 연관이 되어 있습니다.

 

NTFS(New Technology File System)

윈도우 NT부터 기본적으로 사용되는 파일 시스템으로, 클러스터 ID를 저장하는데 64비트를 사용합니다.

FAT과 달리 테이블을 사용하지 않고 B+ tree를 사용하여 탐색 속도가 빨라졌습니다.

그리고 아래에 나오는 저널링 파일 시스템을 사용하여 안정성이 높아졌습니다.

파일을 압축하여 보관하거나, 접근 권한을 제어하는 등 여러가지 기능이 생겼습니다.

하지만 윈도우만 생각하고 만들어서 호환성이 좋진 않습니다.

 

exFAT(EXtended File Allocation Table)

NTFS의 호환성 문제를 해결하기 위해서 만들어진 파일 시스템입니다.

FAT 에서 클러스터 ID를 저장하는데 사용하는 비트 수가 64비트로 바뀌었습니다.

 

EXT(EXTended file system)

리눅스 운영 체제를 위해서 만들어진 파일 시스템입니다.

Extended File System을 줄여 extfs 또는 ext로 씁니다.

부트섹터와 여러개의 블록 그룹으로 이루어져 있습니다.

부트섹터에는 부팅에 필요한 정보들이 담겨있고, 블록은 클러스터와 비슷한 역할을 수행합니다.

블록 그룹은 Super Block, Group Descript Table(GDT), Block Bitmap, Inode Bitmap, Inode Table, Data의 구조로 구성되어 있습니다.

 

EXT2, 정식 이름은 Second Extended File System입니다. 이 파일 시스템은 ext의 문제를 해결하기 위해 나온 파일 시스템입니다.

ext2 파일 시스템은 255자까지의 긴 파일 이름을 지원합니다. ext2 파일 시스템은 세 타임스탬프를 지원하며, 확장이 쉽습니다. 그리고 ext에 있었던 여러 단점(분리 접근, 아이노트 수정 등 지원 안 함)도 개선되었습니다. 파일 시스템의 최대 크기는 블록 사이즈에 따라 2 TiB ~ 32 TiB이며, 서브 디렉터리 개수 제한은 32768개입니다.

EXT3ext2에 저널링 파일 시스템, 큰 디렉터리를 위한 HTree 인덱싱 등의 기능이 추가되었습니다. ext3는 ext2를 바탕으로 만들었기 때문에, ext2 파일 시스템을 자료 손실 없이 ext3 파일 시스템으로 바꿀 수 있습니다.

 

EXT4

64비트 기억 공간 제한을 없애고 ext3의 성능을 향상하며, 하위 호환성이 있는 확장 버전으로서, 많은 부분이 본래, 러스터 파일 시스템을 위해 클러스터 파일 시스템스사에서 개발되었습니다. 여러가지 장점이 있지만 너무 길기 때문에 작성하지 않겠습니다.

 

JFFS(Journalling Flash File System)

파일 시스템에 반영될 변경 사항을 주기적으로 로그로 남겨 비정상 종료가 발생하면 저널은 저장되지 않은 정보를 복구하기 위한 검사 지점으로 사용되어 파일 시스템 메타자료 손상을 막아줍니다.

즉, 일정부분을 기록을 위해 남겨두고, 그 부분에 기록을 남겨 백업 및 복구 능력이 있는 파일 시스템을 말하며,

시스템 충돌 후에 파일시스템 복구에 드는 시간이 획기적으로 줄어듭니다.

 

JFFS2

이름부터 JFFS2 인 만큼 JFFS에서 여러가지 새로운 점이 추가가 되었습니다.

1. NAND 플래시 지원

2. zlib, rubin, rtime 이 세 종류 압축 알고리즘 지원

3. 성능 향상

 

YAFFS(Yet Another Flash File System)

NAND 플래시를 위해서 설계된 파일시스템 입니다.

JFFS가 모든 페이지에 대해서 데이터를 읽어야 한다는 초기화 알고리즘의 단점을 극복하기 위해 파일의 메타데이터인 아이노드를 한 페이지에 저장하는 방법을 사용하고 있습니다.

 

UBIFS(UBI File System)

F2FS(Flash-Friendly File System)

LogFS

등이 있습니다.

728x90

+ Recent posts