파일과 파일 시스템
파일 시스템의 개요
- 파일 시스템
- 대신 파일을 보관하고, 관리하는 파일 관리자를 두어 저장장치의 전체 관리를 하는 시스템
- 사용자가 직접 저장장치 내부를 조작 한다면, 문제가 있을 수 있음
- 파일 관리자
- 사용자가 직접 파일을 보관하거나, 접근하지 못하도록 하고, 대신 해주는 역할
- 가상 메모리에서, 메모리 매핑 테이블을 사용하여 가상 주소를 물리 주소로 변환해주는 것과 같이, 파일 관리자가 파일 테이블을 사용하여 파일을 관리
- 파일 테이블을 활용하여, 파일의 생성 / 수정 / 삭제 등을 수행
- 파일을 사용 하고자 할 때, 읽기 / 쓰기 / 실행 등 다양한 접근 방법 제공
- 파일 디스크립터
- 사용자가 특정 파일에 접근 하기 위한 파일 관리자로부터 받은 권한
- 파일 시스템의 기능
- OS마다 파일 테이블을 가지고 있음
- Window → FAT / NTFS, Unix → I-node
- 사용자가 파일을 생성하고, 파일을 편리하게 관리할 수 있도록 디렉터리 구조를 제공
- 파일 구분 위해 파일 이름, 확장자를 만들어 관리
- 파일 구성
- 파일 관리
- 파일 수정 / 삭제 등의 관리를 하고, 수시로 조각 모음을 하여 속도 향상
- 접근 권한 관리
- 다른 사용자로부터 파일을 보호하기 위해 접근 권한 관리
- 접근 방법 제공
- 파일 읽기 / 쓰기 / 실행 할 수 있도록 접근 방법 제공
- 무결성 보장
- 백업과 복구
- 사고로 부터 파일을 보호하기 위해 백업 / 복구 작업
- 암호화
- 파일을 암호화 하여 악의적인 접근으로 부터 파일 보호
- 블록과 파일 테이블
- 데이터는 운영체제와 저장 장치 간에 블록 단위로 전송 됨
- 블록 하나에 주소 하나가 할당 됨
- 섹터 마다 주소 부여시 메모리에 다 넣을수 없기 때문
- OS에서 사용할 블록 크기를 설정 할 수 있는데, 너무 작게 설정하면 단편화 현상이 줄어들지만, 입출력 속도가 늦어짐
- 크기가 큰 파일을 많이 저장하는 경우, 블록 크기를 크게 잡는것이 좋음
- 파일 분류와 확장자
- 파일 → 논리적인 데이터의 집합
- 실행 파일
- 운영체제가 메모리로 가져와 CPU를 이용하여 작업을 하는 파일
- 사용자의 요청으로 프로세스가 된 파일
- 데이터 파일
- 실행파일이 작업하는데 필요한 데이터를 모아놓은 파일
- 사진 / 음악 / 문서파일 등
- 스스로 프로세스가 될 수 없음
- 데이터 파일을 실행하면, 데이터파일에 맞는 실행 파일을 OS가 실행 시켜 주기 때문에, 사용자는 데이터 파일을 실행 했을 때 실행 되는 것 처럼 인지 하는 것
- 파일을 구분하기 위해, 파일에는 헤더가 달려 있음
- 모든 종류의 파일은 각각 고유한 헤더를 가지고 있음
- 모든 파일에 이름에는 확장자가 붙는데, 파일에 확장자를 붙이면 파일의 성격을 알 수 있음
- 파일 이름과 연결 프로그램
- 대부분은, 파일 이름이
파일 이름.확장자 로 구성 됨
- 초창기엔 확장자명의 길이가 3글자로 제한되었지만, 최근엔 아님 ( 3글자가 규칙처럼 굳어 졌을 뿐 )
- 마침표 여러개 일시, 마지막 마침표의 뒤가 확장자로 인식 됨
- 파일 이름에
* / ? 를 넣을 수 없는 경우가 많은데, 이는 파일을 검색 할 떄 사용되는 특수 기호이기 때문이다
- 파일을 더블 클릭하면, 파일에 연결된 응용 프로그램이 실행 됨
- 데이터 파일을 더블 클릭하면 연결된 응용 프로그램이 실행 되는것
- 확장자를 바꾼다고 해서 파일 내용이 바뀌지는 않음
- 파일 속성
- 파일의 고유한 속성들이 파일 헤더에 기록 됨
- 이름 / 타입 / 크기 / 접근 권한 등이 기록 됨
- 파일 헤더
- 파일 테이블에서 관리하며, 파일의 이름, 종류, 크기 등 일반적인 내용이 담김
- 저장장치의 몇번쨰 블록에 있는지도 담겨 있음
- 고유 헤더
- 응용프로그램이 필요로 하는 고유 헤더가 따로 달려 있음
- 파일의 버전 번호, 특수 정보 등 응용 프로그램이 필요로 하는 정보가 담겨 있음
- 파일을 복구할 때 유용하게 사용 됨
- 빠른 포맷 / 휴지통에서 삭제 시, 실제 데이터가 삭제되는것이 아니라 파일 테이블이 삭제 되거나, 파일 테이블에 있던 파일 헤더가 사라짐
- 이때, 데이터 파일의 고유 헤더는 저장 장치에 남아 있음
- 따라서, 파일 복구 프로그램이 모든 블록을 찾아다니면서 고유 헤더에 있는 정보를 이용하여 파일을 원래 상태로 복원 할 수 있음
파일 구조
- 파일을 어떻게 구성하느냐에 대한 구조
- 순차 파일 구조
- 카세트 테이프 처럼, 파일 내용이 하나의 긴 줄로 늘어선 형태
- 파일을 작업 할 때, 앞에서 부터 뒤까지 순차적인 접근만 가능
- 사용자가 파일 작업을 하려면, open() / create() 명령을 사용하여 운영체제로 부터 권한 ( 파일 디스크립터 )를 얻어야 함
- 순차적인 접근 방식에서는, 파일 디스크립터가 앞에서 부터 뒤로 계속 전진하며, 작업을 하다가 특정 위치로 파일 디스크립터를 옮겨야 할때는 beek() 명령어를 사용하여 뒤로 전진
- 장점
- 순서대로 기록 되기 때문에, 저장 공간에 낭비되는 부분이 없고 구조가 단순
- 순서대로 데이터를 읽거나 저장 할 때, 속도가 빠름
- 단점
- 새로운 데이터를 삽입하거나, 삭제할 때 시간이 많이 걸림 ( 옆으로 밀고 삽입 / 삭제 후 빈공간 매꿈 )
- 특정 데이터로 직접 접근이 어렵다
- 인덱스 파일 구조
- 음악 CD 처럼, 순차 파일 구조에 인덱스 테이블을 추가 하여 순차 접근 / 직접 접근이 가능 한 형태
- 음악 CD는 처음부터 끝까지 순차적으로 재생 할 수도, 특정 곡으로 바로 이동 할 수도 있음
- 이러한 방식을 인덱스 순차 접근 이라고 함
- 인덱스 테이블에는, 파일의 인덱스와, 파일이 존재하고 있는 블록이 기입되어 있음
- 특정 인덱스로 접근 시, 해당 파일이 존재하고있는 블록에 직접 접근을 할 수 있도록 해 줌
- 현대의 파일 시스템에서 많이 사용 됨
- 인덱스 파일 테이블을 여러개 만들어 다양한 접근이 가능 하기도 함 ( 재생 목록을 여러개 ㅏ만들 듯 )
- 직접 파일 구조
디렉터리의 구조
디스크 파일 할당
연속 할당, 불연속 할당