HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
👻
개발 기록
/
📑
강의 정리
/
🗝️
덕수의 운영체제
/
📼
Disk system
📼

Disk system

 
Disk System
File System
Directory Structure
File Protection
File System implementation
 

Disk system

 
💡
HDD의 기초! 디스크 시스템에 대해 알아보자.
 
  • 데이터는 disk에 저장.
  • disk는 어떻게 생겼을까?
원판처럼 생김.
원판처럼 생김.
notion image
  • 이 원판을 disk pack이라고 함.
    • 데이터 영구 저장 장치.
    • 비휘발성.
    • 구성
      • sector
        • 데이터, 저장 판독의 물리적 단위.
      • track
        • Platter 한 면에서 중심으로 같은 거리에 있는 sector들의 집합
      • cylinder
        • 같은 반지름을 갖는 track의 집합.
      • platter
        • 양면에 자성 물질을 입힌 원형 금속판 데이터의 기록/판독이 가능한 기록 매체.
      • surface
        • Platter의 윗면과 아랫면.
 
  • 데이터가 저장된 걸 읽는 기능(판독)도 필요함. → disk drive.
    • Disk pack에 데이터를 기록하거나 판독할 수 있도록 구성된 장치
    • 구성
      • Head
        • 디스크 표면에 데이터를 기록/판독.
      • Arm
        • Head를 고정/지탱.
      • Positioner
        • (boom) Arm을 지탱 Head를 원하는 원하는 track으로 이동.
      • Spindle
        • Disk pack을 고정
        • (회전축) 분당 회전 수 (RPM, Revolutions Per Minute). 높을수록 빨리 돌아 정보를 빨리 읽을 수 있음.
        •  
🤔
디스크 드라이브에 원하는 정보를 찾으려면?
 

Disk Address

  • Physical disk address (물리 주소)
    • Sector (물리적 데이터 전송 단위)를 지정
    • disk drive에 원하는 sector를 찾아가려면 이 표의 정보들이 필요함.
순서는 여러가지 형태로 쓸 수 있지만 기본적으로 3가지 정보를 알아야 원하는 정보를 찾을 수 있음.
      disk drive에 원하는 sector를 찾아가려면 이 표의 정보들이 필요함. 순서는 여러가지 형태로 쓸 수 있지만 기본적으로 3가지 정보를 알아야 원하는 정보를 찾을 수 있음.
    • 파일로 저장하면 찾는 건 OS의 역할임. 하지만 OS가 모든 종류의 하드 디스크를 알기 어려운데 (회사, 기기가 다 달라서) 디스크마다 가지는 physical 특징을 알 수 없음.
    • 그래서 OS는 추상적으로 block들의 집합이라 생각함. 이 block 번호는 logical address가 됨.
  • Logical disk address: relative address
    • Disk system의 데이터 전체를 block들의 나열로 취급.
      • Block에 번호 부여.
      • 임의의 block에 접근 가능.
    • 하지만 결국 block 번호를 physical address로 변환해야 함. 어떻게? → (disk driver) 프로그램 사용. 이 드라이버가 os가 바라보는 logical한 address를 실제 하드웨어가 가진 address로 변환해주는 역할을 함.
    • 이를 그림으로 나타내면
    • 블록 번호를 전달하면 디스크 드라이버가 physical addr로 변환하여 실제 디스크 컨트롤러는 데이터를 찾아가 읽고 씀.
디스크 드라이버는 하드웨어 제조사들이 제공. os는 logical address로 접근할 수 있음.
      블록 번호를 전달하면 디스크 드라이버가 physical addr로 변환하여 실제 디스크 컨트롤러는 데이터를 찾아가 읽고 씀. 디스크 드라이버는 하드웨어 제조사들이 제공. os는 logical address로 접근할 수 있음.
    • 원하는 데이터를 access 하는 과정.
        1. Seek time
            • 디스크 head를 필요한 cylinder로 이동하는 시간.
        1. Rotational delay
            • 1) 다음, 필요한 sector가 head 위치로 도착하는 시간.
        1. Data transmission time
            • 2) 다음, 해당 sector를 읽어서 전송(or 기록)하는 시간.
        Data access time = Seek time + Rotational delay + Data transmission time
 

File system

 
  • 사용자들이 사용하는 파일들을 관리하는 운영체제의 한 부분.
  • File system의 구성
    • Files
      • 연관된 정보의 집합.
    • Directory structure
      • 시스템 내 파일들의 정보를 구성 및 제공 (파일을 폴더, 디렉토리에 넣듯).
    • Partitions
      • Directory들의 집합을 논리적/물리적(ex. disk, c:// drive)으로 구분.

File

  • 파일이란 보조 기억 장치(disk)에 저장된 연관된 정보들의 집합.
    • 보조 기억 장치 할당의 최소 단위.
      • 실린더 몇 번의, 섹터 몇 번의, surface 어디에 저장하라고 안 함.
    • 물리적으로 정의하면 bytes 들의 집합(Sequence of bytes).
  • 내용에 따른 분류
    • Program file
      • Source program, object program, executable files
    • Data file
  • 형태에 따른 분류
    • Text (ascii) file
    • Binary file
  • 다양한 속성을 가짐. (File attributes)
    • 우클릭 하면 나오는 속성.
      우클릭 하면 나오는 속성.
    • Name
    • Identifier
    • Type
    • Location
    • Size
    • Protection
      • access control information
    • User identification (owner)
    • Time, date
      • creation, late reference, last modification
  • 파일에 대한 연산도 있음 (File operations).
    • Create
    • Write
    • Read
    • Reposition
    • Delete
    • Etc.
    • OS는 file operation에 대한 system call(사용자가 사용할 수 있는 기능들의 집합)을 제공해야 함. OS를 만들 때 고려해야 할 점임.
  • 어떻게 파일에 접근할까?
    • Sequential access (순차 접근)
      • File을 record(or bytes) 단위로 순서대로 접근
      • E.g., fgetc()
    • Directed access (직접 접근)
      • 원하는 Block을 직접 접근
      • E.g., lseek(), seek()
    • Indexed access
      • Index를 참조하여, 원하는 block를 찾은 후 데이터에 접근.
      • 배열의 index 찾는 형태와 비슷함.
 
Directory Structure
  • 폴더임.
  • 왜 폴더에 넣을까? → 분류, 보관하려고!
  • 디렉토리도 마찬가지로 다양한 연산이 가능함.
    • Search for a file
    • Create a file
    • Delete a file
    • List a directory
    • Rename a file
    • Traverse the file system
 
Partitions (minidisks, volumes)
disk → physical, files → logical
disk 하나에 C 드라이브, D 드라이브 두 개로 분류할 수도 있고, 물리적인 디스크 2개를 묶어 하나의 C 드라이브를 만들 수 있음.
disk → physical, files → logical disk 하나에 C 드라이브, D 드라이브 두 개로 분류할 수도 있고, 물리적인 디스크 2개를 묶어 하나의 C 드라이브를 만들 수 있음.
  • Virtual disk.
  • 물리적인 디스크를 논리적으로 나누거나 합친 가상 디스크.
 
💡
알면 좋은 용어 하나!
 
Mounting
  • 초기(현재) 파일 시스템에 신규 파일 시스템을 붙일 수 있음. 이 때 붙이는 걸 mounting이라 함. mounting하는 지점을 mount point라 부름.
mnt라는 파일명 본 적이 있을 수도..
mnt라는 파일명 본 적이 있을 수도..
 

Directory Structure

  • 흔히 말하는 폴더.
  • logical한 directory structure를 여러가지 형태로 생각해볼 수 있음.
    • Flat (single-level) directory structure
    • 2-level directory structure
    • Hierarchical (tree-structure) directory structure
    • Acyclic graph directory structure
    • General graph directory structure
 
Flat Directory Structure
  • 파일 시스템 내에 하나의 directory만 존재. 한 폴더 안에 모든 파일이 존재.
    • Single-level directory structure
    • ex) 초창기 mp3. 기기 내 노래만 담을 수 있는 형태.
  • 문제
    • File naming
    • File protection (덮어쓰기)
    • File management
    • 다중 사용자 환경에서 문제가 더욱 커짐
notion image
 
2-Level Directory Structure
  • 사용자 마다 하나의 directory 배정
  • 구조
    • MFD (Master File Directory)
    • UFD (User File Directory)
  • 문제
    • Sub-directory 생성 불가능
      • File naming issue
    • 사용자간 파일 공유 불가. 하나를 공유하더라도 파일 전체를 access 해야 함.
notion image
 
Hierarchical Directory Structure
  • Tree 형태의 계층적 directory 사용 가능.
  • 사용자가 하부 directory 생성/관리 가능 (폴더 안에 새로운 폴더 생성 가능).
    • OS 입장에서 System call이 제공되어야 함.
    • 해당 형태가 등장하며 나온 용어들.
      • Home directory (가장 상위), Current directory.
      • Absolute pathname(home에서 현재 위치), Relative pathname (현재부터 목표위치)
      • .은 현재, ..은 상위.
      • ls ~는 최상위 홈으로 감.
  • 대부분의 OS가 사용.
notion image
 
Acyclic Graph Directory Structure
  • graph 개념 등장.
  • Hierarchical directory structure 확장.
  • 원형이 될 수 없는 (무한 루프를 허용하지 않는) 형태의 구조.
  • Directory안에 shared directory, shared file를 담을 수 있음
  • Link의 개념 사용 (바로가기)
dir 내 file a에서 file b를 가리키는 링크를 가짐.
그래프 형태로 directory structure가 바뀜.
dir 내 file a에서 file b를 가리키는 링크를 가짐. 그래프 형태로 directory structure가 바뀜.
General Graph Directory Structure
  • Acyclic Graph Directory Structure의 일반화
    • Cycle을 허용
  • 문제
    • 무한 루프. 따라서 프로그램을 만들 때 File 탐색 시, Infinite loop를 고려해야 함.
notion image
 
 

File Protection

  • file에 대한 부적절한 접근 방지.
  • 다중 사용자 시스템에서 더욱 중요함.
  • 접근 제어가 필요한 연산.
    • Read
    • Write
    • Execute
    • Append
  • 파일 보호 기법 (system size 및 응용 분야에 따라 다를 수 있음).
    • password 기법
      • 각 file들에 PW 부여.
      • 비현실적.
        • 사용자들이 파일 각각에 대한 PW를 기억해야 함.
        • 접근 권한 별로 서로 다른 PW를 부여 해야 함.
    • access matrix 기법
      • 범위(domain)와 개체(object) 사이의 접근 권한을 명시.
      • (user) (file, 접근 대상) (access right) ⇒ 파일마다 사용자 그룹의 권한을 적어놓는 것.
      • access matrix의 기본적인 개념
        access matrix의 기본적인 개념
      • 구현
        • Global table
          • 시스템 전체 file 들에 대한 권한을 table로 유지 (통째로 저장).
          • notion image
          • 단점 : large table size (overhead).
          • 🤔 빈 영역은 저장하지 않을 수 있을까?
        • Access list & capability list
          • notion image
          • Access list
            • 열(파일)을 리스트로 표현.
            • 각 object에 대한 접근 권한을 나열.
            • notion image
            • 실제 OS에서 많이 사용됨.
            • notion image
              notion image
            • 파일을 access할 때마다 체크해야 하는 overhead가 있어 capability list 등장.
            • object를 많이 접근하는 경우 느림.
          • capability list
            • 행(도메인)을 리스트로 표현.
            • 각 domain에 대한 접근 권한 나열.
            • notion image
            • kernel 등 시스템이 capability list 자체를 보호 해야 한다는 단점. 보호하지 않으면 보안이 위험.
            • object에 대한 접근에 유리하지만 object 별 권한 관리(취소 등)가 어려움.
        • Lock key mechanism
          • access list와 capability list를 혼합한 개념.
          • Object는 Lock을, Domain은 Key를 가짐.
          • 여전히 시스템이 key list를 관리해야 한다는 단점이 있음.
        • access list + capability list
          • 많은 OS가 사용함.
          • object에 대한 첫 접근 → access list 탐색.
            • 접근 허용 시, capability 생성 후 해당 프로세스에게 전달. 이후 접근 시에는 권한 검사 불필요 (ex 출입증)
          • 마지막 접근 후 → capability 삭제.
 

File System implementation

💡
파일 시스템을 직접 구현해보자!
Allocation methods
어떻게 디스크 공간을 파일에게 할당하는가
Free space management
디스크의 빈 공간을 어떻게 관리하는가
 

Allocation methods

  • continuous allocation
    • notion image
    • 연속된 공간 할당.
    • 한 file을 디스크의 연속된 block에 저장.
    • 장점
      • 효율적인 file 접근, 순차 또는 직접 접근.
    • 단점
      • 새로운 file을 위한 공간 확보가 어려움.
      • external fragmentation (넣을 공간은 있지만 연속된 곳이 없어 넣지 못하게 되는 것).
      • 파일이 커져야 하는 경우를 고려해야 하기 때문에 file 공간 크기 결정이 어려움.
      • 연속된 공간 할당이 어렵다면 연속되지 않게 하면 됨!
  • noncontinuous allocation
    • linked allocation
      • notion image
      • file이 저장된 block들을 linked list로 연결.
      • directory는 각 file에 대한 첫 번째 block에 대한 포인터를 가짐.
      • 구현이 간단, no external fragmentation.
      • 단점
        • 직접 접근에 비효율적.
        • 포인터 저장을 위한 공간 필요.
        • 사용자가 포인터를 실수로 건드리는 등 신뢰성에 문제가 있음.
      • 가장 많이 쓰는 건 File Allocation Table (FAT)임. 각 block의 시작 부분에 다음 블록 번호를 기록하는 방법으로 MS-DOS, Windows 등에 사용됨.
      • 시작 block에서 링크하여 다음을 찾아갈 수 있음. 기본적인 구성 형태. 실제 사용하는 파일 시스템의 기본.
        시작 block에서 링크하여 다음을 찾아갈 수 있음. 기본적인 구성 형태. 실제 사용하는 파일 시스템의 기본.
    • indexed allocation
      • notion image
      • file이 저장된 block의 정보(pointer)를 index block에 모아둠.
      • 직접 접근에 효율적, 순차 접근에 비효율적.
      • file 당 index block을 유지함 → space overhead, index block 크기에 따라 파일의 최대 크기 제한.
      • unix 등에 사용됨.
💡
프로그램을 만들 때 allocation 방식을 선택해 효율적으로 관리할 수 있음.
 

Free space management

  • bit vector
    • 0과 1로 이루어진 지도 → 비트맵
      0과 1로 이루어진 지도 → 비트맵
    • 시스템 내 모든 block들에 대한 사용 여부를 0, 1 즉 1 bit flag로 표시. 0이면 빈공간임.
    • simple & efficient
    • bit vector 전체를 메모리에 보관(space overhead)해야 하기 때문에 대형 시스템에 부적합함.
  • linked list
    • notion image
    • linked list 형태로 관리. 시작점에서 다음 공간을 찾아감.
    • link라는 공간을 갖고 있어야 하고, 탐색 시간이 비효율적임. 일일히 하나씩 따라가는 것은 부담임.
  • grouping
    • notion image
    • n개의 빈 block을 그룹으로 묶고, 그룹 단위로 linked list로 연결.
    • 연속된 빈 block을 쉽게 찾을 수 있음.
  • counting
    • 연속된 빈 block들 중 첫 번째 block 주소와 연속된 block된 수의 table로 유지.
    • 하단은 예시.
      • 빈 공간 시작
        시작점부터 개수
        0
        6
        8
        3
    • continuos allocation 시스템에 유리하나 공간이 번갈아 가며 비어있다면 오히려 비효율적일 수 있음.
  • 프로그램이 데이터를 어떤 형태로 자주 접근하는 가에 대해 고민하고 정해야 함.