[운영체제(OS)] 11장. File System(1)

kothe·2022년 12월 5일
0

운영체제

목록 보기
14/17

non-volatile한 storage의 각종 파일 시스템, 디바이스들이 어떻게 관리되는지 알아보는 파트이다.

1. HDD

크게 실제로 데이터가 저장되는 미디어인 Disk pack, 미디어에 저장되어 있는 파일을 읽고쓰는 Disk drive로 구성되어있다.

Disk pack

가장 오른쪽에 있는 spindle을 기준으로 회전한다. 데이터가 저장되는 미디어 영역인 platter(디스크 원판)이 있다. platter는 앞면 뒷면 모두 데이터를 저장할 수 있기 때문에 각각의 면을 surface라고 한다. surface에있는 track을 따라 데이터가 저장되어있다.

  • Sector : 하드디스크에서 물리적으로 데이터를 읽고 쓰는 단위.
  • Track
  • Cylinder : 각각의 surface들의 같은 번호의 track을 모은 것.
  • Platter
  • Surface

하나의 디스크 팩은 위와 같이 Surface >> Track >> Sector 순으로 구성된다.

Disk drive

  • Head
  • Arm
  • Positioner(boom) : 좌우 왕복하면서 head를 몇 번 트랙에 위치시킬지 정해주기 때문에 모든 head는 같은 cylinder에 위치하게 된다.
  • Spindle : Disk pack을 회전시켜준다.

Data access in disk system

  1. Seek time : 일단 헤드를 움직여서 원하는 cylinder 위로 헤드를 이동시키는 시간. (3~9ms)

  2. Rotational delay (latency time) : 헤드가 원하는 track에 위치한 시간부터 목표한 sector가 회전해서 올 때까지 기다리는 시간. 평균적으로 하드디스크 회전시간의 반정도의 시간이 걸린다. (1~4ms)

  3. Data transmission time : 해당 sector가 헤드밑에 도착하는 순간부터 모두 읽을 때까지 걸리는 시간. 한 트랙에 sector가 몇개있는지 보고, 1 / # of sector를 곱해주면된다.

HDD 용량

정보가 주어진다면 다음 공식으로 쉽게 구할 수 있다. 구조를 살펴보면 쉽게 이해할 수 있다.

Capacity(용량) = (# bytes/sector) x (avg.# sectors/track) x (# tracks/surface) x (# surfaces/platter) x (# platters/disk)

정보가 이렇게 주어진다면,
Capacity = 512 x 300 x 20,000 x 2 x 5 = 30,720,000,000 = 30.72GB이다.

HDD 특징

  • In-place writing (overwrite) : 어느 한 트랙의 sector에 데이터가 있더라도 다른 데이터를 덮어쓸 수 있다.
  • Direct access: 원하는 데이터의 위치(Cylinder 번호, Surface번호, sector번호)만 알면 바로 접근할 수 있다. (마그네틱 테이프 같은 경우 sequential access만 가능하다).

2. SSD (Solid State Disks)

  • Flash memory 기반으로 만들어진 보조기억장치
    • 여러개의 flash memory chipsFTL로 구성됨
    • FTL (Flash Translation Layer) : HDD의 disk controller의 역할로, host에서 데이터 접근을 요청하면 flash memory칩으로 요청을 전달해 실제로 해당 데이터가 접근되게 만들어주는 일을 한다.
  • HDD와 마찬가지로 I/O bus에 직접적으로 연결될 수 있다.
  • HDD와 같은 다른 디스크와 같은 형태로 움직이는 것으로 보인다. (내부적으로 동작하는 방식은 조금 다름)

Internal structure

Head나 arm이 움직이는 HDD와는 다르게, 움직이지 않는다. 구조는 다음과 같이 생겼다.

Flash memory는 여러개의 block, 각 block은 여러개의 page로 구성된다.
여기서 사용하는 block, page는 메모리관리할때의 page,block과 다름.

Host에서 데이터를 읽으려는 '6번 disk block을 읽어라'와 같은 요청이 들어오게 되면, FTL에서는 해당 block이 flash memory에 어느 block, 어느 page에 있는지 찾아서 읽어주게 된다.

SDD의 특징

  • 데이터를 읽고쓰는 단위는 page이다
  • In-place write 불가능하기 때문에 데이터를 쓰려면 page가 들어있는 block 전체가 지워진 후에 가능하다.
    • Page size : 512B ~ 4KB
    • Block size : 32 ~ 128 pages (16KB ~ 512KB)
  • Random access가 seqeuntial access보다 느리다.
  • 읽기보다 쓰기가 느리다. (쓸 때는 해당 페이지가 비어있는지 확인하고 지우는 과정이 필요하기 때문)
  • 특정 block을 100,000번 erase 작업을 하면 수명이 다한다.
  • 장점 : Moving part가 없기 때문에 faster, less power, more rugged의 장점이 있다.
  • 단점 : 수명이 있기 때문에 write(erase) 횟수 제한, HDD보다 비싸다.
  • 스마트폰, 태블릿, 노트북, 데스크톱, 서버에 사용된다.

Disk Address

  • Physical disk address in HDD
  • Logical disk address : kernel이 사용하는 주소로, HDD의 구조가 구분되어있다는 점을 생각하지 않고 block의 seqeunce로 본다.

File system

  • User view : hierarchical directory structure
  • Kernel view : Logical sequence of storage blocks
  • Device view : (Cylinder#, Surface#, Sector#) in HDD, (Block#, Page#) in SSD

예를들어 /a/r의 몇 바이트를 읽어야한다고 요청이 내려오면 kernel은 kernel view에서 사용할 수 있는 block num으로 변환하고, HDD controller나 FTL가 device view에서 사용할 수 있도록 변환하는 과정을 거친다.

File Concept

  • Definition

    • bits/bytes/lines/records의 sequence
    • Named collection(이름을 붙이는 단위)
  • Types of files

    • Program file and data file
    • Text file and binary file : text file은 ascii code로 변환했을때 사람이 읽을 수 있는 파일.
  • File attributes(metadata) <- FCB에 저장된다.(unix/linux의 경우Inode에 저장된다.)

    • Name
    • Identifier
    • Type
    • Size
    • Protection (access control information)
    • User identification (owner)
    • Time & date (creation, last reference, last modification)
    • Location (of file data)
      x라는 파일의 block x0,x1,x2가 실제 disk상의 몇 번 block인지 FCB에 저장되어있다.
  • File operations <- system call로 이뤄진다.

    • Create
    • Write,Read
    • Reposition(seek)
    • Delete
    • Truncate <- 메타데이터는 남기고 내용만 날림
    • Open : file이 actively하게 실행되기 전에 open해야한다. 실행도중에 계속 metadata에 접근하면 비효율적이기 때문에 실행되기 전 open해 아래 과정을 실행한다.
      • Procedure
        • takes filename
        • search the directory (접근 검사까지 다함)
        • FCB에서 metadata를 읽어 kernel 영역(open-file table) 에 copy해서 상주시킴
        • metadata가 들어온 위치정보를 가리키는 pointer를 return
      • Open-file table
        • 현재 오픈되어 있는 파일들의 Inode 정보를 모두 가지고있는 table
        • 보통 Per-process table,System-wide table 두개로 2-level로 구성돼있다.
  • File types
    • Unix
      • ordinary(regular)
      • directory
      • device : 키보드,hdd등 하드웨어 device도 파일로 취급함
      • symbolic link
      • named pipe
  • File structure
    일반 사용자 file은 구조를 제한하지 않는다.
    • Executable file : 실행파일의 경우, code가 들어가는 영역, data가 들어가는 영역이 나뉘어져있기 때문에 실행하기 위해 구조를 정해야한다.
      대표적인 format은 ELF(executable and linking format)로, 기본적으로 어떤 architecture에서도 실행할수있도록 해준다. (MS만 다른 PE format사용)
      이렇게 정해진 구조로 실행파일이 만들어진다.
    • Directory file : 정해진 구조를 정해야함.

Directory Structure

1. Flat(single-level) structure

하나의 시스템에 하나의 디렉토리만 있다. naming, protection, management 하는데 문제가 있지만 관리하기엔 편하다.

2. 2-level structure

유저별로 디렉토리를 나눠준다.MFD가 root directory 역할을 하지만, naming문제, 공유파일문제 등의 문제가 아직 남아있다.

3. Hierarchical structure

tree구조로 사용자가 얼마든지 sub directory를 만들 수 있다.

4. Acyclic graph structure

방향성이 없는 graph구조로 두 개의 파일을 연결해서 하나로 만드는Link명령어로 인해서 생긴다. (MS windows의 바로가기) ln을 통해서 Inode를 공유하게 하므로 같은 파일이 생성된다.x1, x2두개의 파일이 ln명령어를 통해 생성된 같은 파일일 경우 사실 필기한 검은색 선처럼 표시될 수 있고, acyclic graph가 된다.

5. General graph structure

cycle이 존재하는 graph다.


profile
천천히 꾸준히

0개의 댓글