728x90
반응형
1) 파일과 디렉터리
1-1) 파일
1-2) 디렉터리
1-3) 상대 경로를 나타내는 또 다른 방법
2) 파일 시스템
2-1) 파티셔닝과 포매팅
2-2) 파일 할당 방법
2-3) 파일 시스템 살펴보기
2-4) 저널링 파일 시스템
2-5) 마운트
1) 파일과 디렉터리
1-1) 파일
- 파일(file) : 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합을 의미함(즉, 파일은 의미 있고 관련 있는 정보를 모은 논리적 단위를 의미함)
- 모든 파일에는 이름과 파일을 실행하기 위한 정보, 그리고 파일 관련 부가 정보가 있는데 이 부가 정보를 속성(attribute) 또는 메타데이터(metadata)라고 부름
- 파일 속성
- 유형 : 운영체제가 인지하는 파일의 종류를 나타냄
- 크기 : 파일의 현재 크기와 허용 가능한 최대 크기를 나타냄
- 보호 : 어떤 사용자가 해당 파일을 읽고, 쓰고, 실행할 수 있는지를 나타냄
- 생성 날짜 : 파일이 생성된 날짜를 나타냄
- 마지막 접근 날짜 : 파일에 마지막으로 접근한 날짜를 나타냄
- 마지막 수정 날짜 : 파일이 마지막으로 수정된 날짜를 나타냄
- 생성자 : 파일을 생성한 사용자를 나타냄
- 소유자 : 파일을 소유한 사용자를 나타냄
- 위치 : 파일의 보조기억장치상의 현재 위치를 나타냄
- 운영체제는 파일의 확장자를 통해 파일의 유형을 파악할 수 있음
- 파일 유형 및 대표적인 확장자
- 실행 파일 : 없는 경우, exe, com, bin
- 목적 파일 : obj, o
- 소스 코드 파일 : c, cpp, cc, java, asm, py
- 워드 프로세서 파일 : xml, rtf, doc, docx
- 라이브러리 파일 : lib, a, so, dll
- 멀티미디어 파일 : mpeg, mov, mp3, mp4, avi
- 백업/보관 파일 : rar, zip, tar
- 파일 연산을 위한 시스템 호출
- 파일을 다루는 모든 작업은 운영체제에 의해 이뤄짐(즉, 어떤 응용 프로그램도 임의로 파일을 조작할 수 없으며 파일을 다루려면 운영체제에 부탁해야 함)
- 파일 생성
- 파일 삭제
- 파일 열기
- 파일 닫기
- 파일 읽기
- 파일 쓰기
- 파일을 다루는 모든 작업은 운영체제에 의해 이뤄짐(즉, 어떤 응용 프로그램도 임의로 파일을 조작할 수 없으며 파일을 다루려면 운영체제에 부탁해야 함)
1-2) 디렉터리
- 디렉터리(directory) : 윈도우 운영체제에서는 디렉터리를 폴더(folder)라고 부르며, 디렉터리를 이용하면 여러 개의 파일 또는 디렉터리를 묶어 관리할 수 있음
- 1단계 디렉터리(single-level directory) : 모든 파일이 하나의 디렉터리 아래에 있는 디렉터리 구조
- 트리 구조 디렉터리(tree-structured directory) : 최상위 디렉터리(루트 디렉터리; root directory)가 있고, 그 아래에 여러 서브 디렉터리(자식 디렉터리)가 있을 수 있으며, 서브 디렉터리도 또 다른 서브 디렉터리를 가질 수 있는, 이처럼 여러 계층을 가진 디렉터리 구조
- 경로 : 디렉터리를 이용해 위치를 특정 짓는 정보
- 절대 경로와 상대 경로
- 절대 경로(absolute path) : 루트 디렉터리부터 시작하는 경로
- 상대 경로(relative path) : 현재 디렉터리부터 시작하는 경로
- 디렉터리 연산을 위한 시스템 호출
- 디렉터리 생성
- 디렉터리 삭제
- 디렉터리 열기
- 디렉터리 닫기
- 디렉터리 읽기
- 디렉터리 엔트리
- 많은 운영체제에서는 디렉터리를 그저 '특별한 형태의 파일'로 간주함(즉, 디렉터리도 파일인데 단지 포함된 정보가 조금 특별할 뿐임)
- 파일이 내부에 해당 파일과 관련된 정보를 담고 있다면, 디렉터리는 내부에 해당 디렉터리에 담겨 있는 대상과 관련된 정보를 담고 있음(이러한 정보는 보통 테이블 형태로 구성되기에, 디렉터리는 보조기억장치에 테이블 형태의 정보로 저장됨)
- '..'은 상위 디렉터리, '.'은 현재 디렉터리를 가리킴
1-3) 상대 경로를 나타내는 또 다른 방법
- 윈도우, 리눅스, 유닉스, macOS 등 대부분의 운영체제에서는 cd(change directory) 명령을 통해 현재 작업 디렉터리를 이동할 수 있음
- 윈도우의 루트 디렉터리는 'C:₩'로 표현함
- 루트 디렉터리는 부모 디렉터리가 없기 때문에 루드 디렉터리의 '..'은 자기 자신을 의미함(따라서 루드 디렉터리에서 'cd ..'을 입력해도 현재 작업 디렉터리는 변하지 않음)
2) 파일 시스템
2-1) 파티셔닝과 포매팅
- 보조기억장치를 사용하려면 파티션을 나누는 작업(파티셔닝)과 포맷 작업(포매팅)을 거쳐야 함
- 파티셔닝(partitioning) : 하드 디스크나 SSD처럼 용량이 큰 저장 장치를 하나 이상의 논리적인 여러 단위로 구획하는 작업을 의미함(즉, 칸막이로 영역을 나누는 작업을 뜻함)
- 파티션(partition) : 파티셔닝 작업을 통해 나누어진 영역 하나하나를 의미함
- 포매팅(formatting) : 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 수 있게 하는 작업을 의미함
- 포매팅의 종류에는 엄밀히 말하면 저수준 포매팅(저장 장치를 생성할 당시 공장에서 수행되는 물리적인 포매팅)과 논리적 포매팅(파일 시스템을 생성하는 포매팅)이 있음
- 포매팅할 때 파일 시스템이 결정됨
- 파일 시스템에는 여러 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수도 있음
2-2) 파일 할당 방법
- 운영체제는 파일과 디렉터리를 블록(block) 단위로 읽고 씀(즉, 하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장됨)
- 하드 디스크의 가장 작은 저장 단위는 섹터이지만, 운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 단위로 파일과 디렉터리를 관리함(이는 파일 시스템이 모든 섹터를 관리하기에는 개수가 너무 많고 크기도 작기 때문임)
- 파일을 보조기억장치에 할당하는 방법
- 연속 할당(contiguous allocation) : 파일이 저장 장치 내에서 연속적인 공간을 차지하도록 블록을 할당하는 방법(즉, 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식임)
- 연속 할당은 외부 단편화를 야기한다는 치명적인 문제가 있음
- 불연속 할당 : 연결 할당과 색인 할당이 있음
- 연결 할당(linked allocation) : 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당(블록들을 연결 리스트 형태로 관리)하는 방법
- 연결 할당의 단점
- 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 함
- 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없음
- 연결 할당의 단점
- 색인 할당(indexed allocation) : 파일의 모든 주소를 색인 블록(index block)이라는 하나의 블록에 모아 관리하는 방식
- 색인 할당은 연결 할당과는 달리 파일 내 임의의 위치에 접근하기 쉬움(파일의 i번째 데이터 블록에 접근하고 싶다면 색인 블록의 i번째 항목이 가리키는 블록에 접근하면 되기 때문임)
- 색인 블록 안에 파일을 구성하는 데이터 블록 주소가 있으므로 색인 블록만 알면 해당 파일 데이터에 접근할 수 있음
- 색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시함
- 색인 할당을 기반으로 만든 파일 시스템이 유닉스 파일 시스템임
- 연결 할당(linked allocation) : 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당(블록들을 연결 리스트 형태로 관리)하는 방법
- 연속 할당(contiguous allocation) : 파일이 저장 장치 내에서 연속적인 공간을 차지하도록 블록을 할당하는 방법(즉, 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식임)
2-3) 파일 시스템 살펴보기
- 파일 시스템 종류
- FAT 파일 시스템 : 파일 할당 테이블(FAT; File Allocation Table - 각 블록의 주소들을 한데 모아 테이블 형태로 관리하는 것)을 이용하는 연결 할당 기반의 파일 시스템
- 유닉스 파일 시스템 : i-node를 이용하는 색인 할당 기반의 파일 시스템(유닉스 파일 시스템에서는 이 색인 블록을 i-node라고 부름)
- 유닉스 파일 시스템의 문제를 해결하기 위한 방법
- 블록 주소 중 열두 개에는 직접 블록(direct block: 파일 데이터가 저장된 블록을 의미함) 주소를 저장함
- '첫째' 내용으로 충분하지 않다면 열세 번째 주소에 단일 간접 블록(single indirect block: 파일 데이터가 저장된 블록이 아닌 파일 데이터를 저장한 블록 주소가 저장된 블록을 의미함) 주소를 저장함
- '둘째' 내용으로 충분하지 않다면 열네 번째 주소에 이중 간접 블록(double indirect block: 데이터 블록 주소를 저장하는 블록 주소가 저장된 블록을 의미하는데 즉, 단일 간접 블록들의 주소를 저장하는 블록을 뜻함) 주소를 저장함
- '셋째' 내용으로 충분하지 않다면 열다섯 번째 주소에 삼중 간접 블록(triple indirect block: 이중 간접 블록 주소가 저장된 블록을 의미함) 주소를 저장함
- 유닉스 파일 시스템의 문제를 해결하기 위한 방법
2-4) 저널링 파일 시스템
- 저널링 파일 시스템 : 저널링 기법을 사용하는 파일 시스템
- 저널링(journaling) 기법 : 작업 로그를 통해 시스템 크래시가 발생했을 때 빠르게 복구하기 위한 방법
- 저널링 기법을 사용하는 파일 시스템에서 파일 시스템을 변경하는 작업 순서
- 작업 직전 파티션의 로그 영역에 수행하는 작업(변경 사항)에 대한 로그를 남김
- 로그를 남긴 후 작업을 수행함
- 작업이 끝났다면 로그를 삭제함
- 마이크로소프트의 NT 파일 시스템, 리눅스의 ext3, ext4 파일 시스템을 포함하여 현대 대부분의 파일 시스템은 이러한 저널링 기능을 지원함
2-5) 마운트
- '저장 장치를 마운트한다'라는 표현은 한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 작업을 의미함
- 유닉스, 리눅스와 같은 운영체제에서 다양한 저장 장치를 컴퓨터에 연결할 때 mount 명령어로 빈번하게 마운트함
'Computer Structure & Operating System > 2025 version' 카테고리의 다른 글
Computer Structure & OS(14) - 가상 메모리 (0) | 2025.03.16 |
---|---|
Computer Structure & OS(13) - 교착 상태 (0) | 2025.03.12 |
Computer Structure & OS(12) - 프로세스 동기화 (0) | 2025.03.11 |
Computer Structure & OS(11) - CPU 스케줄링 (0) | 2025.03.10 |
Computer Structure & OS(10) - 프로세스와 스레드 (0) | 2025.03.08 |