혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다.
현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다.
파일
파일은 보조기억장치에 저장된 관련 정보의 집합이며, 의미있고 관련있는 정보를 모은 논리적 단위이다.
파일을 이루는 정보
- 속성(메타데이터), 유형, 크기 등의 부가 정보
- 이름
- 실행하기 위한 정보
파일 생성, 삭제 등의 연산을 위해서는 운영체제에 요청(시스템 호출)해야한다.
디렉터리
파일을 일목요연하게 관리하기 위해 이용
현재는 경로의 필요성으로 트리구조 디렉토리를 이용한다.
절대 경로는 루트 디렉터리에서 자기 자신(파일)까지의 고유한 경로
상대 경로는 현재 디렉터리부터 시작하는 경로
디렉터리 연산 또한 시스템 호출이 필요하다.
디렉터리 엔트리
디렉터리 또한 약간 특별한 파일이다.
디렉터리는 그에 담긴 대상에 관련된 정보를 표 형태로 갖고 있으며 이를 디렉터리 엔트리라 한다.
디렉터리 엔트리에는 디렉터리 내 파일 이름과 위치를 유추할 수 있는 정보가 담겨있다.
※ cd .. 등에 사용되는 .이나 .. 또한 디렉터리 엔트리에 담긴다.
파일 시스템
파일 시스템은 파일과 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램이다.
저장장치에 논리적인 영역을 구획하는 작업을 파티셔닝이라 한다.
포매팅은 흔히 완전히 삭제로 알고 있지만, 파일 시스템을 설정하고 새로운 데이터를 쓸 준비를 하는 것을 의미한다.
파일 할당 방법
운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다.
보조기억장치의 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 관리한다.
파일 하나는 여러 개의 블록에 걸쳐질 수 있다.
※ 윈도우에서는 블록을 클러스터라고 부른다.
할당 방법에는 크게 두 가지가 있다.
- 연속 할당
- 불연속 할당
- 연결 할당
- 색인 할당
연속 할당
연속적인 블럭에 파일을 할당한다.
디렉터리 엔트리에 파일 이름과 첫 번째 블록 주소, 길이를 명시한다.
외부 단편화가 발생할 수 있다.
연결 할당
각 블록 일부에 다음 블록의 주소를 저장하여, 각 블록이 다음 블록을 가리키는 형태로 할당한다.
단점은 반드시 첫 번째 블록부터 읽어야 하여 임의 접근이 느리고, 하드웨어 고장이나 오류 발생 시 해당 블록의 이후 블록은 접근할 수 없다.
색인 할당
모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리한다.
디렉터리 엔트리에는 색인 블록 주소를 명시한다.
유닉스 파일 시스템은 색인 할당을 기반으로 개발되었다.
FAT 파일 시스템
USB 메모리, SD 카드 등에서 사용된다.
연결 할당의 단점을 보완했다.
다음 블록의 주소들을 파일 할당 테이블(File Allocation Table)에 저장한다.
FAT12, FAT16 등이 있으며 숫자는 블록을 표현하는 비트 수를 의미한다.
유닉스 파일 시스템
색인 할당 기반으로, 색인 블록을 i-node(index-node)라고 부른다.
i-node는 유한한 크기를 가지기 때문에, 15개의 블록을 차지하는 파일까지만 가리킬 수 있다.
위 단점을 보완하기 위해 아래 방법을 사용한다.
- 첫 12개 블록은 직접 블록 주소를 저장한다.
- 12개로 부족하다면 13번째에는 단일 간접 블록(파일 데이터를 저장한 블록 주소가 저장된 블록)을 저장한다.
- 13개로 부족하다면 14번째에 이중 간접 블록(단일 간접 블록의 주소를 저장한 블록)을 저장한다.
- 14개로 부족하다면 15번째에 삼중 간접 블록(이중 간접 블록의 주소를 저장한 블록)을 저장한다.
위 방법으로 웬만한 크기의 파일은 모두 표현할 수 있다.
이외의 흥미로운 파일 시스템
윈도우에서 사용하는 NTFS, 리눅스의 extFS 등
저널링 파일 시스템
작업 직전 로그를 남긴 후 크래시 발생 시 로그 확인 후 복구하는 저널링 기법을 이용한 파일 시스템.
마운트
다른 저장 장치를 편입시키는 기능
'~ 2024.03 > 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[컴퓨터 구조] 가상 메모리 (0) | 2024.01.05 |
---|---|
[컴퓨터 구조] 교착상태 (0) | 2024.01.05 |
[컴퓨터 구조] 프로세스 동기화 (1) | 2024.01.04 |
[컴퓨터 구조] CPU 스케줄링 (1) | 2024.01.04 |
[컴퓨터 구조] 프로세스와 스레드 (2) | 2024.01.04 |