
0. 용어 설명 및 선행 지식
@ 섹터( Sector )
HDD가 데이터를 읽고 쓰는 최소 단위로, 전통적으로 512byte가 하나의 섹터
@ FTL( Flash Translation Layer, 플래시 변환 계층 )
SSD 펌웨어 내부에 존재하는 계층으로, LBA를 PBA로 변환하는 역할을 수행
@ 블럭 번호
파일 시스템이 논리적으로 나눈 블럭의 번호
@ LBA ( Logical Block Address, 논리 블럭 주소 )
저장 장치의 논리 블럭 주소이며, 이는 PBA와 맵핑 됩니다
@ PBA ( Physical Block Address, 물리 블럭 주소 )
저장 장치 내부에서 실제로 데이터가 저장되는 물리적 위치를 나타내는 주소.
1. 보조 기억 장치의 구조 : HDD, SSD
보조 기억 장치의 구조는 대략 위와 같습니다 ( 더 복잡하겠지만 파일 시스템 이해를 위해서는 위로도 충분한 거 같습니다 )
HDD 내부에서 읽기/쓰기를 수행 할 때는 Sector 단위로 이루어지고 SSD는 Page 단위로 이루어 집니다
( SSD에서 삭제 수행 시에는 Block 단위를 사용합니다 )
중요한점은 기존 파일 시스템들은 HDD의 물리적 구조와 특성에 최적화되어 설계되었다는 점입니다
때문에 이후에 등장한 SSD와의 호환을 위해 기존 파일 시스템 전체를 바꾸는데에는 무리가 있었습니다
그래서 SSD 펌웨어 내부에 FTL을 구현하여, 기존 파일 시스템과 호환이 되게끔 하였습니다
2. 어떻게 OS와 통신하는건가 ( 간략 )
보조 기억 장치와 OS의 통신을 정확하게 이해할려면 파티션, 포맷, 파일 시스템을 이해해야합니다
하지만 해당 내용은 다음 게시물에서 더 자세히 다루도록 하고, 이번 포스트에서는 전체적인 구조만 다루겠습니다
파일 시스템은 기억 장치의 데이터를 읽어와 논리적인 블럭 단위로 나누어 관리 및 I/O 합니다
일반적으로 한 블럭은 4byte( 4096 byte )이고, 각 블럭마다 블럭 번호가 부여되며
각 블럭에는 LBA가 맵핑되어 있습니다 ( 예: LBA101 ~ LBA 103 ) 이는 위에 그림을 참고하면 이해가 쉽습니다
파일 시스템이 저장 장치를 컨트롤하는 디바이스 드라이버에게 LBA를 전달하면
디바이스 드라이버는 이것을 저장 장치의 펌웨어에게 전달합니다
저장 장치의 펌웨어는 전달 받은 LBA와 맵핑된 PBA로 변환하여 데이터를 읽어 옵니다
그리고 읽은 데이터를 다시 디바이스 드라이버에게 전달합니다
핵심은 파일 시스템은 저장 장치의 데이터를 블럭 단위로 관리 및 I/O 하고
해당 블럭들을 모아 파일 / 디렉토리로 추상화하여 사용자 레벨에서 쉽게 접근 할 수 있도록 한다는 점입니다
반대로 접근해보면 User레벨에서 다루는 파일들은 Kernel 레벨에서 여러 블럭들로 나뉘어져 관리 되고 있고
해당 블럭들은 다시 LBA와 맵핑되어 있으며 이러한 LBA는 또 Hardware 레벨의 PBA와 맵핑되어 있으며
해당 PBA에 데이터가 있다는 점입니다
3. 마치며
별거 없는 내용이지만 다음 포스트에서 다룰 파일 시스템을 이해하기 위해서는 반드시 이해가 필요한 내용입니다
또한 해당 포스트만으로는 전체적인 맥락 이해가 어려울 수 있습니다
다음 포스트와 현재 포스트를 번갈아가며 읽어보기를 추천드립니다
'Fundamental > CS' 카테고리의 다른 글
CS - 파티션, 파일 시스템, 마운트, OverlayFS까지 이해하기 (0) | 2025.04.10 |
---|---|
[붉은외계인] CS - 목적 파일, 실행파일 그리고 ELF, PE 포멧까지 (1) | 2024.02.07 |
[붉은외계인] CS - 컴퓨터구조와 작동 원리 4 - 운영체제의 자원 접근 및 할당(CPU 스케줄링, 스와핑, 페이징) (1) | 2024.01.16 |
[붉은외계인] CS - 컴퓨터구조와 작동 원리 3 - 운영체제의 프로세스 관리 (0) | 2024.01.16 |
[붉은외계인] CS - 컴퓨터구조와 작동 원리 2 - 주변 장치 (0) | 2024.01.05 |
IT / Android
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!