반응형
Notice
Recent Posts
«   2024/12   »
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 31
Today
Total
관리 메뉴

오식랜드

[운영체제] 파일 시스템 본문

dev-log/cs

[운영체제] 파일 시스템

개발하는 오식이 2023. 10. 1. 14:33
반응형

파일 시스템 ( = 윈도우 탐색기)

  • 파일 관리자가 저장장치 전체 관리
  • 파일 테이블을 사용하여 관리 (만든 시간, 수정 시간, 용량, 위치 등… 내용은 없음!!)
  • 파일 접근 권한 등을 관리 (파일 디스크럽터 관리)

파일 테이블

  • 블록 : 저장장치에서 사용하는 가장 작은 단위
  • 어떤 파일이 어떤 블록에 있는지 기록

파일 이름과 확장자

  • 과거에는 이름과 확장자의 글자수 제한이 있었음 → 현재는 완화 (최대 길이는 255자)
  • 파일 이름에 마침표 여러번 사용 가능 → 마지막 마침표 뒤를 확장자로 인식
  • 윈도우보다 유닉스 규칙이 더 빡셈 (특수문자는 아예 안됨)

파일 작업

  1. 파일 내용 변경
  • 편집기를 통해 변경
  • 작업명에 괄호가 있음 (함수인듯)
  1. 파일 자체 변경
  • 윈도우 탐색기에서 하는 일 (생성, 삭제, 이동, 복사, 검색 등)

파일 헤더

  • 파일의 버전, 크기 정보 등 응용프로그램에 필요한 정보 담김
  • 파일 속성은 파일 테이블에 위치
  • 파일 헤더는 파일의 맨 앞 위치

파티션

  • 저장장치를 2개 이상의 묶음으로 나누는 것
  • 논리적 분할
  • 디스크 1개를 2n개 처럼 사용할 수 있음

포맷

  • 파일 시스템 초기화
  • 빠른 포맷 ⇒ 데이터는 그대로. 파일 테이블만 초기화
  • 느린 포맷 ⇒ 블록의 모든 데이터를 0 으로, 파일 테이블도 초기화
  • 포맷 시 블록 크기 지정 가

조각모음

  • 하드디스크 내의 단편화/조각화 해결
  • 주기적으로 필요
  • USB, SSD같은 반도체 저장장치는 조각모음 필요가 없음

파일 구조

  1. 순차 파일 구조 : 하나의 긴 줄로 저장
    • 장점
      • 저장공간에 낭비공간이 없음
      • 구조가 단순 → 테이프, 플로피디스크, 저장장치
      • 데이터를 읽거나 저장할 때 빠르게 처리
    • 단점
      • 새로운 데이터 삽입하거나 삭제할 때 시간이 걸림
      • 데이터 검색에 부적합함
  2. 직접 파일 구조 : 물리적 주소로 바로 변환
    • 특정 함수를 통해 접근 가능 → 해시함수
  3. 인덱스 파일 구조 : 인덱스 테이블 사용 (현대에도 사용)
    • 장점
      • 검색이 빨라짐
      • 순차접근, 직접접근 둘 다 가능

디렉토리 구조

  • 계층구조를 갖고있음
  • 디렉토리도 하나의 파일임 (일반 파일 → 데이터 / 디렉토리 → 파일정보 담김)
  • 최상위 : 루트 디렉토리
  • 최하위 : 파일
  • 1단계 디렉토리 구조
    • 루트 디렉토리에서는 디렉토리 생성 가능
    • 그 안에서는 디렉토리 생성 불가능 (파일만 존재)
  • 다단계 디렉토리 구조
    • 트리 디렉토리 구조라고도 함
    • 단계 확장에 제약이 없음
  • 바로가기 링크 포함한 구조
    • 그래프 구조로 바뀜 (사이클이 있음)
    • 현대의 구조

경로

  • 파일이 “전체 디렉토리” 중 어디에 있는지 (C:/user/바탕화면/~~)
  • 한 디렉토리 안에는 동명 파일 불가능
  • 절대경로 : 루트 디렉토리 기준으로 파일 위치 표시
  • 상대경로 : 현재 위치를 기준으로 파일 위치 표시

마운트

  • 프린터나 클라우드 등을 파일 구조 중에 추가 (계층 시스템에 추가)
  • 파티션 두개를 연결하는 것

할당 방식

  1. 연속 할당
    • 파일을 구성하는 데이터를 디스크상에 연속 배열
    • 간단한 방식
    • 파일 삭제 시 빈 공간 생김 + 새 파일에 맞는 공간이 없으면 연속할당이 불가능
    • → 실제 사용 못함
  2. 불연속 할당
    • 데이터를 분산 저장
    • 파일 시스템이 관리
    • 연결리스트를 이용한 연결 할당 / 인덱스를 이용한 인덱스 할당이 대표적

2-1. 연결 할당

  • 불연속할당 중 1개
  • 연결리스트로 관리
  • 파일 테이블에는 시작블록에 대한 정보만 저장
  • 나머지는 블록에서 블록으로 연결
  • 체인할당이라고도 함

2-2. 인덱스 할당

  • 데이터의 인덱스를 담고있는 인덱스 블록은 연결
  • 인덱스 블록 → 실제 데이터의 위치에 관한 정보를 순서대로 보관
  • 테이블이 꽉 차서 연결할 수 없을 때에는 → 간접 인덱스 블록으로 무한확장 가능
  • 파일 사이즈에 영향이 없도록 되어있음 (커질수록 이중, 삼중 간접 포인터 사용)

빈 공간 관리

  • 빈 공간 리스트
    • 빈 블록의 정보를 모아두는 빈 공간 리스트 유지
    • 파일 테이블의 헤더 삭제 → 빈 공간 리스트에 등록 ⇒ 사용자는 파일 삭제로 간주 (데이터는 그대로 남아있음!!!) (ex. 휴지통)
    • FIFO 방식으로 할당

유닉스의 파일 시스템

  • 접근 패턴의 맨 앞자리는 파일인지 디렉토리인지 구분 (0→ 파일, 1→ 디렉토리)
  • 나머지 9자리는 rwx 세덩이로 구성
    • 첫번째 덩어리 : 파일의 소유자 권한
    • 두번째 덩어리 : 소유자가 속한 그룹 권한
    • 세번째 덩어리 : 제삼자 권한
  • 총 10bit의 패턴
  • 과거 유닉스는 메인컴퓨터가 있고 그와 연결된 개인 컴퓨터가 있어서 서로에 대한 제한이 필요했음

반응형

'dev-log > cs' 카테고리의 다른 글

[알고리즘] 알고리즘이란  (0) 2023.10.20
[운영체제] 네트워크  (0) 2023.10.01
[운영체제] 포트 (port)  (0) 2023.10.01
[운영체제] 하드디스크  (0) 2023.10.01
[운영체제] 입출력장치  (0) 2023.10.01
Comments