Operating System(OS)에 이어서 Part2에는 다음과 같은 순서*로 알아보겠습니다.
*공룡책 기반
[프로세스 관리]
1. 프로세스
2. 스레드와 병행성
3. CPU 스케줄링
[프로세스 동기화]
4. 프로세스동기화
5. 동기화 예제
6. 교착상태
[메모리 관리]
7. 메인 메모리
8. 가상 메모리
[저장장치 관리]
9. 대용량 저장장치 구조
10. 입출력 시스템
[파일시스템]
11. 파일시스템
12. 파일시스템 구현
Operating System(OS) Part2 - 12. 파일시스템 구현
1. 파일시스템 기본 개념
1) 파일과 디렉토리
파일은 데이터를 저장하기 위한 기본 단위이며, 디렉토리는 파일을 체계적으로 관리하기 위한 구조입니다. 파일은 이름과 데이터를 가지며, 디렉토리는 파일과 다른 디렉토리를 포함할 수 있습니다.
2) 파일 속성 및 메타데이터
파일 속성은 파일의 크기, 생성 시간, 수정 시간, 접근 권한 등을 포함합니다. 메타데이터는 파일의 데이터 외에 파일에 대한 추가 정보를 제공하여 파일 관리 및 검색을 용이하게 합니다.
3) 파일 연산
파일 연산에는 파일 생성, 삭제, 읽기, 쓰기, 열기, 닫기 등이 있습니다. 이러한 연산은 파일시스템 API를 통해 수행되며, 운영체제는 이를 효율적으로 처리하기 위해 다양한 최적화 기법을 사용합니다.
4) 디렉토리 구조
디렉토리 구조는 파일을 체계적으로 관리하는 방식입니다. 일반적으로 트리 구조로 되어 있으며, 루트 디렉토리에서 시작하여 하위 디렉토리와 파일들이 계층적으로 연결됩니다.
* 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
2. 디스크 구조와 저장 장치
1) 하드 디스크 드라이브 (HDD)
HDD는 회전하는 자기 디스크에 데이터를 저장하는 방식입니다. 저장 용량이 크고 가격이 저렴하지만, 기계적인 움직임 때문에 속도가 상대적으로 느립니다.
2) 솔리드 스테이트 드라이브 (SSD)
SSD는 플래시 메모리를 사용하여 데이터를 저장합니다. 기계적인 움직임이 없어서 속도가 빠르고 신뢰성이 높지만, 가격이 비쌉니다.
3) 기타 저장 매체
광디스크(CD, DVD), 테이프 드라이브 등 다양한 저장 매체가 존재하며, 각 매체는 용도와 성능이 다릅니다. 예를 들어, 광디스크는 데이터 보관 용도로 많이 사용되고, 테이프 드라이브는 대량의 데이터를 장기 보관하는 데 사용됩니다.
4) 디스크 성능 및 최적화
디스크 성능은 데이터 접근 시간과 전송 속도에 의해 결정됩니다. 운영체제는 캐싱, 버퍼링, 디스크 스케줄링 등의 기법을 사용하여 디스크 성능을 최적화합니다.
3. 파일시스템 인터페이스
1) 파일시스템 API
파일시스템 API는 파일 및 디렉토리에 접근하기 위한 함수들의 집합입니다. 일반적으로 fopen, fread, fwrite, fclose와 같은 함수들이 포함됩니다.
2) 시스템 콜
시스템 콜은 운영체제의 커널이 제공하는 서비스에 접근하기 위한 인터페이스입니다. 파일시스템 관련 시스템 콜로는 open, read, write, close 등이 있습니다.
3) 파일시스템 인터페이스 구현 방법
파일시스템 인터페이스는 사용자와 커널 간의 원활한 통신을 위해 설계됩니다. 인터페이스의 효율성과 사용 편의성은 파일시스템의 성능에 큰 영향을 미칩니다.
4. 파일시스템의 내부 구조
1) 파일시스템 레이아웃
파일시스템 레이아웃은 디스크에 파일 및 디렉토리를 배치하는 방식을 정의합니다. 일반적으로 슈퍼블록, 인덱스 노드, 데이터 블록 등으로 구성됩니다.
2) 데이터 블록, 인덱스 노드 (inode), 슈퍼블록
- 데이터 블록: 실제 데이터가 저장되는 단위.
- 인덱스 노드 (inode): 파일의 메타데이터와 데이터 블록의 위치 정보를 저장.
- 슈퍼블록: 파일시스템의 전체 구조와 상태를 관리하는 정보.
3)파일 할당 방법
- 연속 할당: 파일을 연속된 블록에 저장.
- 연결 할당: 파일을 불연속적인 블록에 연결 리스트 형태로 저장.
- 인덱스 할당: 인덱스 블록을 사용하여 파일 블록을 관리.
4) 디렉토리 구현
디렉토리는 파일의 이름과 인덱스 노드 번호를 매핑하는 구조로 구현됩니다. 이는 파일 검색을 효율적으로 할 수 있게 합니다.
5. 파일시스템의 관리 및 운영
1) 공간 관리
공간 관리는 디스크 공간을 효율적으로 사용하는 방법을 포함합니다. 프리 리스트와 비트맵을 사용하여 사용 가능한 공간을 추적합니다.
2) 디스크 쿼터 관리
디스크 쿼터 관리는 사용자별로 사용할 수 있는 디스크 공간을 제한하여 시스템 자원의 남용을 방지합니다.
3) 파일 시스템 백업 및 복구
백업은 파일시스템의 데이터를 안전하게 보관하는 방법이며, 복구는 손상된 데이터를 원래 상태로 되돌리는 과정입니다.
4) 로그 구조 파일시스템
로그 구조 파일시스템은 데이터를 로그 형태로 저장하여 쓰기 성능을 향상시키고, 시스템 충돌 시 데이터 일관성을 유지합니다.
6. 파일시스템의 성능 및 최적화
1) 캐싱과 버퍼링
캐싱과 버퍼링은 디스크 접근 시간을 줄이기 위한 기법입니다. 캐시는 자주 사용되는 데이터를 메모리에 저장하고, 버퍼는 데이터를 일괄 처리하여 효율성을 높입니다.
2) 파일시스템 캐시
파일시스템 캐시는 파일의 메타데이터와 데이터 블록을 메모리에 저장하여 빠른 접근을 가능하게 합니다.
3) 쓰기 성능 향상 기법
- 저널링: 파일 시스템 변경 사항을 저널에 기록하여 시스템 충돌 시 복구를 용이하게 합니다.
- 로그 구조 파일시스템: 데이터를 연속적으로 기록하여 디스크 쓰기 성능을 향상시킵니다.
4) 읽기 성능 향상 기법
- 프리패칭: 예상되는 데이터 접근을 미리 읽어오는 기법.
- 읽기 예측: 과거의 데이터 접근 패턴을 분석하여 미래의 접근을 예측하고 데이터를 미리 로드.
7. 저널링 파일시스템
1) 저널링의 개념과 필요성
저널링은 파일시스템의 일관성을 유지하기 위해 변경 사항을 기록하는 방식입니다. 시스템 충돌이나 정전 시 데이터를 복구하는 데 유용합니다.
2) 저널링 파일시스템의 구조
저널링 파일시스템은 메인 파일 시스템과 별도로 저널 영역을 가지고 있으며, 변경 사항은 먼저 저널에 기록된 후 메인 파일 시스템에 반영됩니다.
3) 대표적인 저널링 파일시스템
- ext3: Linux의 저널링 파일시스템으로 데이터 일관성 보장.
- ext4: ext3의 확장 버전으로 성능 향상.
- NTFS: Windows의 파일시스템으로 강력한 저널링 기능 제공.
9. 최신 파일시스템 기술
1) 플래시 메모리 기반 파일시스템
플래시 메모리는 빠른 접근 속도와 낮은 전력 소모가 특징입니다. 이를 최적화한 파일시스템으로는 F2FS가 있습니다.
2) 오브젝트 기반 스토리지
오브젝트 기반 스토리지는 데이터를 오브젝트 단위로 관리하여 확장성과 관리 효율성을 높입니다. 아마존 S3가 대표적인 예입니다.
3) 클라우드 스토리지와 파일시스템
클라우드 스토리지는 인터넷을 통해 데이터를 저장하고 접근하는 방식입니다. 클라우드 파일시스템은 확장성과 접근성을 보장합니다.
4) 파일시스템의 보안
파일시스템 보안은 데이터 접근 제어, 암호화, 무결성 검증 등을 포함합니다. 중요한 파일시스템 보안 기법으로는 ACL(액세스 제어 리스트)과 SELinux가 있습니다.
10. 파일시스템 구현 사례 연구
1) Unix 파일시스템 (UFS)
UFS는 Unix 운영체제에서 사용되는 파일시스템으로, 안정성과 성능이 뛰어납니다.
2) Windows NT 파일시스템 (NTFS)
NTFS는 Windows 운영체제에서 사용되는 파일시스템으로, 저널링과 강력한 보안 기능을 제공합니다.
3) Linux 파일시스템 (ext 시리즈)
- ext2: 기본적인 파일시스템으로 안정성 제공.
- ext3: 저널링 기능 추가.
'IT Auditor Study > 운영체제' 카테고리의 다른 글
[Part2-공룡책] 11. 2. 분산파일시스템 - Operating System(OS) (0) | 2024.06.16 |
---|---|
[Part2-공룡책] 11.1.파일시스템 - Operating System(OS) (0) | 2024.06.13 |
[Part2-공룡책] 10. 입출력 시스템(2/2) - Operating System(OS) (2) | 2024.06.11 |
[Part2-공룡책] 10. 입출력 시스템(1/2) - Operating System(OS) (0) | 2024.06.09 |
[Part2-공룡책] 9. 대용량 저장장치 구조 - Operating System(OS) (2) | 2024.06.08 |