11-1.[os] 파일과 파일 시스템

파일 시스템의 개요


파일 시스템의 개념

파일 시스템

  • 파일 관리자가 파일을 보관하고 관리하는 등 저장장치의 전체 관리를 맡는 것

파일 관리자

  • 사용자의 요청에 따라 파일을 저장하거나 파일의 내용을 읽어옴
  • 파일 테이블을 사용하여 파일을 관리
  • 생성, 수정, 삭제
  • 읽기, 쓰기, 실행

파일 디스크립터(file descriptor)

  • 파일 접근 권한
  • 파일 관리자로부터 파일에 접근할 수 있는 권한(키)을 획득해야 함

파일 시스템의 기능

파일테이블

  • 파일 생성
  • 편하게 쓰기 위해 디렉터리 구조 제공
  • 구분용 파일 이름과 확장자
  • 파일 헤더 : 파일 이름, 파일 크기, 생성 날짜

image.png


블록과 파일 테이블

  • 메인 메모리 -> 기가바이트
  • 하드디스크 -> 테라바이트 (더 큼)

  • 메모리바이트 단위로 저장됨

  • 섹터: 하드 디스크의 물리적인 구조상 가장 작은 저장 단위

  • 데이터는 운영체제와 저장장치 간에 블록 단위로 전송됨

  • 블록: 저장장치에서 사용하는 가장 작은 단위
  • 한 블록에 주소 하나가 할당됨
  • 섹터마다 주소를 부여하면 너무 많이 필요함 -> 여러 섹터를 블록으로 묶고 주소 배정
  • 블록 크기는 시스템 마다 다름
  • 정할 수 있음
  • 블록 크기를 작게 설정: 내부 단편화 현상이 줄어듦 -> 저장장치 공간 효율적 -> 파일이 여러 블록으로 나뉘어 파일 입출력 속도가 느려짐

image.png

  • 포맷을 하면 각 블록에 번호가 매겨짐
  • 파일 테이블에는 파일이 어떤 블록에 있는지 명시됨 image.png

파일 분류와 확장자

파일

  • 논리적인 데이터의 집합
  • 하드디스크나 CD 같은 제2저장장치에 저장됨
  • 0과 1의 비트 패턴(bit pattern)으로 이루어짐
  • 실행 파일 + 데이터 파일

실행 파일

  • 운영체제가 메모리로 가져와 CPU를 이용하여 작업을 하는 파일
  • 사용자의 요청으로 프로세스가 된 파일

데이터 파일

  • 실행파일이 작업하는데 필요한 데이터를 모아놓은 파일
  • ex) 이미지 뷰어 프로그램의 사진파일, 뮤직 플레이어의 음악파일, 워드프로세서의 문서 파일
  • 데이터 파일은 스스로 프로세스가 될 수 없고, 운영체제가 전송하거나 보관만 할뿐 특별하게 다루지 않음
  • 운영체제가 바라보는 모든 데이터 파일은 0과 1로 이루어진 데이터의 덩어리
  • 파일 헤더 = 파일의 이름, 버전, 크기, 만든 날짜, 접근 권한
  • 파일 = 헤더부분 + 데이터부분 image.png

  • 확장자

  • 실행 파일을 제외한 나머지는 모두 데이터 파일의 확장자

image.png


파일 이름과 연결 프로그램

  • '파일이름.확장자' 형태
  • 확장자는 전통적으로는 3자 이하
  • 마침표 여러개 찍을 수 있음, 마지막 마침표 다음 글자가 확장자
  • 경로+파일이름 -> 최대 255자
  • 영문자, 숫자, 붙임표(-), 밑줄(_), 마침표(.)
  • 대소문자 구분 안함
  • 윈도우에서 실행 파일을 더블클릭하면 프로세스가 생성되어 실행됨
  • 데이터 파일을 더블클릭하면 해당파일을 사용하는 응용 프로그램이 실행됨(이러한 프로그램을 연결 프로그램이라고함)
  • -> 둘다 더블 클릭하면 실행됨
  • -> 데이터 파일을 쓰는 응용 프로그램이 실행되는 것
  • 데이터 파일 자체가 실행 x

  • 데이터 파일에 연결된 응용 프로그램을 바꾸고 싶을 때 -> 연결 프로그램을 변 경

  • 확장자를 바꾼다고 해서 내용이 바뀌지는 않음, 그냥 인식못할 뿐

image.png


파일 속성

  • 파일은 속성을 갖고 있음
  • 파일 속성은 각 파일 헤더에 기록됨, 운영체제는 파일 헤더를 파일 테이블에서 관리

image.png

  • name: 확장자를 포함한 전체 이름
  • type: 실행 파일, 동영상 파일, 사진 파일, 음악 파일
  • size: 파일의 용량
  • time: 만든 시간, 변경 시간, 접근 시간
  • location: 이름과 확장자가 같은 두 파일은 한 디렉터리에 존재할 수 없음. 파일의 위치가 다르면 운영체제는 서로 다른 파일이라고 여김
  • accessibility, owner: 윈도우-(읽기, 쓰기,숨김), 유닉스-(소유자, 그룹, 제삼자)

image.png

image.png

파일 헤더:

  • 파일 테이블에서 관리
  • 일반적인 내용 - 파일의 이름, 종류, 크기, 시간, 접근권한 등
  • 파일이 저장장치의 몇 번째 블록에 있는지에 대한 정보도 가짐 고유 헤더:
  • 데이터 파일에는 응용 프로그램이 필요로 하는 고유헤더가 따로 달려 있음
  • 고유 헤더에는 파일의 버전 번호, 크기, 특수 정보등 응용 프로그램이 필요로 하는 정보가 담겨 있다.
  • 고유 헤더는 파일을 복구할 때 유용하게 사용
  • 빠른 포맷을 했다면 파일 테이블에 있던 파일 헤더가 사라짐
  • 빠른 포맷, 휴지통에 버리기 -> 파일 테이블만 지우고, 실제 데이터를 지우지 않음
  • 파일 복구 프로그램: 모든 블록을 찾아다니면서 고유 헤더에 있는 정보를 이용하여 파일을 원래 상태로 복원
  • 잘 알려진 JPG, MP3 같은 파일은 헤더에 어떤 정보를 넣을지 전 세계적으로 규격을 정했기 때문에 헤더만 찾는다면 복구가능

파일 작업의 유형

파일 작업

  • = 파일 연산
  • file operation
  • 파일 자체를 변경하는 작업 + 파일 내용을 변경하는 작업

파일 자체를 변경하는 작업

image.png

파일 내용을 변경하는 작업

image.png


파일 구조

  • 파일: 하나의 데이터 덩어리

순차 파일 구조

  • sequential file structure
  • 파일은 기본적으로 순차 파일 구조
  • 예) 카세트 테이프 - 파일 내용이 하나의 긴 줄로 늘어선 형태

    • 순서대로 음악이 흘러 나옴
  • 초기의 컴퓨터 - 카세트테이프를 저장장치로 사용

  • (대형 컴퓨터, 최초의 개인용 컴퓨터도 마찬가지)
  • 원반형 저장장치(플로피 디스크, 하드디스크)는 테이프 저장장치가 개발되고 나서 한참 후에야 보급됨

image.png

사용자가 파일 작업을 하려면:

  • open() 또는 create() 명령을 사용하여 운영체제로부터 이용 권한을 얻음
  • 운영체제는 파일 이용 허가를 내리면서 파일 디스크립터를 사용자에게 줌
  • 파일 디스크립터는 파일의 맨 앞에 위치함
  • 재생, 녹음, 읽기, 쓰기 - 앞으로 전진함
  • lseek() : 특정 위치로 파일 디스크립터 옮김

순차 파일 구조의 장점

  • 모든 데이터가 순서대로 기록되기 때문에 저장공간에 낭비되는 부분이 없음
  • 구조가 단순하여 테이프는 물론 플로피디스크나 메모리를 이용한 저장장치에도 적용할 수 있음
  • 순서대로 데이터를 읽거나 저장할 때 매우 빠르게 처리됨

순차 파일 구조의 단점

  • 파일에 새로운 데이터를 삽입하거나 삭제할 때 시간이 많이 걸림
    • 중간에 데이터를 삽입하려면 -> 그 뒤에 있는 데이터를 뒤로 밀어 빈공간을 만듦
    • 중간의 데이터를 삭제했을 때 -> 남은 빈공간을 메우기 위해 그 뒤에 있는 데이터를 앞으로 당겨야함
  • -> 순차파일 구조는 데이터의 변경이 잦은 경우에 적당하지 않음

  • 데이터로 이동할때 직접 접근이 어렵기 때문에 앞에서부터 순서대로 움직여야한다.

  • -> 순차파일 구조는 데이터 검색에 적당하지 않다

인덱스 파일 구조

  • index file structure
  • 순차 파일 구조에서는 특정 데이터에 접근하기 위해 앞에서부터 순차적으로 이동해야함
  • -> 단점을 해결한 파일 구조
  • 순차 파일 구조 + 인덱스 테이블을 추가 -> 순차 접근직접 접근
  • 플로피디스크, CD-ROM, 하드디스크에 쓰임
  • 인덱스 순차 접근
    • index sequential access
    • 순차 파일 구조를 유지 + 디스크를 이용한 저장장치의 장점
  • 예) 음악 CD
    • 음악 CD를 처음부터 재생하면 순서대로 노래가 흘러나오고(순차0, 3번 곡을 선택하면 3번 곡의 처음부터 노래가 흘러나옴(인덱스)
  • ISAM(Index Sequential Access Method) 파일: 인덱스 순차 접근으로 구성된 파일

image.png

  • 파일을 저장할 때는 순차 파일 구조로 저장
  • 파일에 접근할 때는 인덱스 테이블을 보고 원하는 파일에 직접 접근
  • 데이터베이스의 인덱스 구축에는 다양한 알고리즘이 사용됨
  • 인덱스 구성 방법에 따라 데이터의 접근 속도가 달라짐
  • 보통 B 트리 씀

직접 파일 구조

  • direct file structure
  • 데이터 -> 해시함수 -> 해시 데이터

해시 함수

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

image.png

장점:

  • 데이터 접근이 매우 빠르다

단점:

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

  • 저장 공간이 낭비되는 문제

  • 모든 주소에 일정량의 데이터가 고르게 저장되지 않고 들쑥날쑥하게 저장됨

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!