티스토리 뷰

반응형

파일과 파일 시스템

파일 시스템의 개요

파일 시스템

 - 사용자가 직접 파일을 보관하는 대신 파일 관리자를 두어 저장 장치의 관리를 맡기는 시스템

 - 파일 관리자가 파일 테이블을 사용하여 파일을 관리

 - 사용자가 특정 파일에 접근하려면 파일 관리자로부터 파일에 접근할 수 있는 권한을 획득해야함(key)

파일 시스템의 기능

블록과 파일 테이블

 - 블록은 저장장치에서 사용하는 가장 작은단위로, 한 블록에 주소 하나가 할당

 - 블록은 여러 개의 섹터로 구성되면 블록의 크기는 시스템마다 다름

 - 블록 크기를 작게 설정하면 내부 단편화 현상이 줄어들어 저장장치를 효율적으로 쓸 수 있지만, 파일이 여러 블록으로 나뉘어 파일 입출력 속도가 느려짐

 - 큰 파일을 많이 사용할 때는 블록 크기를 크게 잡는 것이 좋음

 

파일 분류

 - 실행파일 : 운영체제가 메모리로 가져와 CPU를 이용하여 작업을 하는 파일

 - 데이터파일 : 실행 파일이 작업하는데 필요한 데이터를 모아놓은 파일

 

파일 이름과 연결 프로그램

파일 이름

 - 사용자 입장에서 어떤 응용 프로그램이 사용하는 데이터인지 구분할 필요가 있음, 예를들어 같은 문서파일 이라고 한글용 문서 파일인지 MS워드용 문서 파일인지 구분할 필요가 있음

 - 데이터의 종류를 구분하기 위해 확장자 사용

 - 파일 확장자는 3자 이하가 대부분이지만 4자나 5자로 된 확장자도 있음

 - 파일 이름에 마침표(.)를 여러 번 사용할 수 있는데, 이떄는 마지막 마침표 다음 글자를 확장자로 인식

 - 파일 이름은 현재 경로 이름을 포함하여 최대 255자

 - 파일 이름에는 영문자, 숫자, 하이픈(-),언더바(_), 마침표(.)를 주로 사용

 

연결 프로그램

 - 데이터 파일을 더블클릭하면 해당 파일을 사용하는 응용 프로그램이 실행되는데 이러한 프로그램을 연결 프로그램이라고함

 - 윈도우에서 데이터 파일에 연결된 응용 프로그램을 바꾸고 싶을 때는 연결 프로그램을 변경하면 됨

 - 확장자를 바꾼다고 해서 내용이 바뀌지 않음

 

파일 속성의 종류

파일 헤더와 고유 헤더

 - 파일 헤더 : 파일 테이블에서 관리하며 파일의 이름, 종류, 크기, 시간, 접근권한 등과 같은 일반적인 내용과 파일이 저장장치의 몇 번째 블록에 있는지에 대한 정보를 가지고 있음

 - 고유 해더 : 데이터 파일에는 응용 프로그램이 필요로 하는 고유 헤더가 따로 달려있는데 파일의 버전 번호, 크기, 특수 정보 등 응용 프로그램이 필요로 하는 정보가 있음

 

파일 작업의 유형

 

파일 구조

순차 파일 구조

 - 파일 내용이 하나의 긴 줄로 늘어선 상태

 - 장점

   - 모든 데이터가 순서대로 기록되기 때문에 저장 공간에 낭비되는 부분이 없음

   - 구조 가 단순하여 테이프는 물론 플로피디스크나 메모리를 이용한 저장장치에도 적용할 수 있음

   - 순서대로 데이터를 읽거나 저장할 때 매우 빠르게 처리됨

 - 단점

   - 파일에 새로운 데이터를 삽입하거나 삭제할 때 시간이 많이걸림

   - 특정 데이터로 이동할 때 직접 접근이 어렵기 때문에 앞에서부터 순서대로 움직여야 하기 때문에 데이터 검색에 적당하지 않음

 

인덱스 파일 구조

 - 순차 파일 구조에 인덱스 테이블을 추가하여 순차 접근과 직접 접근이 가능

 - 현대의 파일 시스템은 인덱스 파일 구조로, 파일을 저장할 때는 순차 파일 구조로 저장하고 파일에 접근할 때는 인덱스 테이블을 보고 원하는 파일에 직접 접근

 

직접 파일 구조

 - 저장하려는 데이터의 특정 값에 어떤 관계를 정의하여 물리적인 주소로 바로 변환하는 파일 구조

 - 특정 함수를 이용하여 직접 접근이 가능한 파일구조

 - 이때 사용하는 함수를 해시 함수라고 함

 

직접 파일 구조의 장점

 - 해시 함수를 이용하여 주소를 변환하기 때문에 데이터 접근이 매우 빠름

 

직접 파일 구조의 단점

 - 직접 파일 구조를 제대로 작성하려면 해시 함수의 선정이 매우 중요한데, 전체 데이터가 고르게 저장될 수 있는 해시 함수를 찾기가 어려움

 - 해시함수를 잘 찾았다고 하더라도 저장 공간이 낭비되는 문제도 있음

디렉토리의 구조

디렉토리의 개념

디렉토리

 - 관련 있는 파일을 하나로 모아놓은 곳

 - 1개 이상의 자식 디렉토리를 가질 수 있고, 또한 1개 이상의 파일을 가질 수 있음

 - 하나의 디렉토리에는 여러 개의 파일과 자식 디렉토리가 존재

 

디렉토리의 계층 구조

 - 디렉토리는 여러 층으로 구성할 수 있음

 - 루트 디렉토리 : 최상위에 있는 디렉토리

 

디렉토리 파일

디렉토리 파일

 - 디렉토리도 파일임

 - 일반 파일에는 데이터가 담기고 디렉토리에는 파일 정보가 담김

 - 디렉토리 헤더에는 디렉토리의 이름, 만든 시간, 접근 권한 등의 정보가 기록됨

 

경로

경로

 - 파일이 전체 디렉토리 중 어디에 있는지를 나타내는 정보

 - 한 디렉토리에는 같은 이름을 가진 파일이 존재할 수 없지만, 서로 다른 디렉토리에는 같은 이름의 파일이 존재할 수 있음

 - 절대경로 : 루트 디렉토리를 기준으로 파일의 위치를 나타내는 방식

 - 상대경로 : 현재 있는 위치를 기준으로 파일의 위치를 표시하는 방식

 

디렉토리 구조

1단계 디렉토리 구조

 - 루트 디렉토리에 새로운 디렉토리를 만들 수 있지만 디렉토리 안에 자식 디렉토리를 만들 수는 없음

 

다단계 디렉토리 구조

 - 단계 확장에 제약이 없고 디렉토리에 파일과 디렉토리를 둘 다 저장할 수 있음

 

바로가기 링크를 포함한 디렉토리 구조

 - 원래 디렉토리 구조는 트리구조였으나 '바로가기'로 인하여 그래프 구조로 바뀜

 

마운트

마운트

 - 여러개의 파티션을 통합하는 명령어

 

2개의 파티션을 하나의 디렉토리구조로 만든 예

 

디스크 파일 할당

연속 할당과 불연속 할당

파일 내 블록을 연결하는 방식

 - 연속 할당 방식

   - 파일을 구성하는 데이터를 디스크상에 연속적으로 배열하는 간단한 방식

   - 파일을 저장하거나 삭제하다 보면 빈 공간이 생기는데 디스크에 남은 공간 중 파일의 크기와 맞는 연속된 공간이 없을 때는 연속 할당이 불가능 하기 때문에 실제로 사용되지 않음

 - 불연속 할당 방식

   - 비어있는 블록에 데이터를 분산하고 저장하고 이에 관한 정보를 파일 시스템이 관리하는 방식

   - 연결 리스트를 이용한 연결 할당과 인덱스를 이용한 인덱스 할당이 대표적

 

연결 할당

 - 파일에 속한 데이터를 연결 리스트로 관리하는 방식

 - 파일 테이블에는 시작 블록에 대한 정보만을 저장하고, 나머지 데이터는 시작 블록부터 연결하여 저장

 - 체인으로 연결한 것처럼 보여서 체인 할당이라고도 함

 - 윈도우의 FAT(File Allocation Table)이 이 방식을 사용

 

인덱스 할당

 - 테이블의 블록 포인터가 데이터 블록을 연결하는 것이 아니라, 데이터의 인덱스를 담고 있는 인덱스 블록을 연결

 - 인덱스 블록은 실제 데이터의 위치에 관한 정보를 순서대로 보관

 - 테이블이 꽉 차서 더 이상 데이터를 연결할 수 없을 떄는 인덱스 블록을 연결하는 간접 인덱스 블록을 만들면 테이블을 무한히 확장할 수 있음

 - 유닉스의 I-node가 이 방식을 사용

 

인덱스 할당 방식의 예

 

 

디스크의 빈 공간 관리

빈 공간 리스트

 - 파일 시스템은 디스크의 내부 단편화를 줄이고 빈 공간을 효율적으로 관리하기 위해 빈 블록의 정보만 모아놓은 빈 공간 리스트를 유지

 - 파일 시스템에서는 파일 테이블의 헤더를 삭제하고 사용했던 블록을 빈 공간 리스트에 등록하는 것을 파일이 삭제된 것으로 간주

 - 어떤 데이터를 지우고 새로운 데이터를 디스크에 넣을 때 방금 지워진 블록에 할당되는 것이 아니라 리스트에 있던 블록 중 맨 앞에 있는 블록에 할당

 

 

 

유닉스 파일의 특징

유닉스의 실행 파일

유닉스 파일 시스템의 접근 패턴

 - 맨 앞자리는 파일의 종류를 나타냄

 - 나머지 아홉 자리는 rwx라는 세 덩어리로 구성

 - rwx 덩어리 중

   - 첫 번째 덩어리 : 파일의 소유자 권한 부여

   - 두 번째 덩어리 : 소유자가 속한 그룹의 권한 부여

   - 세 번째 덩어리 : 소유자도 아니고 같은 그룹도 아닌 제 삼자의 권한 부여

 

chmod

 - 접근 패턴을 변경할 때 사용하는 명령어

 - 접근 패턴에 숫자를 부여하여 변경(read는 4, write는 2, excute는 1이며 chmod명령을 이용하여 살리고 싶은 숫자를 모두 더하면 됨)

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함