개발하는 삶

[운영체제] 디스크 본문

CS/운영체제

[운영체제] 디스크

삶_ 2022. 8. 8. 08:12

 

Logical Disk ( = Partition)

  • 운영체제가 보는 디스크는 논리적 디스크
  • 하나의 물리적 디스크 안에 여러 파티션을 두는게 일반적임
  • 여러개의 물리적 디스크를 하나의 파티션으로 구성하기도 함
    ex. c드라이브/d드라이브 나누기
  • 물리적 디스크를 파티션으로 구성한 뒤 각각의 파티션에 file system을 깔거나
    • swapping 등 다른 용도로 사용할 수 있음

 

 

디스크


  • 파일 요청사항 등을 전달.
    • 실행파일 전달시작 -> 가상메모리 생성(디스크 스왑영역에 전달됨) -> 메모리로 전달성공
  • 디바이스 컨트롤러
    • 하드웨어 
    • 디스크를 관리하는 작은 CPU. 보통 이 컨트롤러가 CPU에게 전달해주는 역할을 함.
  • 디스크 스케줄링
    • 어떻게 효율적으로 탐색시간이 짧은것부터 디스크들을 액세스할것인가 고민함
    • 탐색시간/회전지연/전송시간
    • 한계 : 탐색시간이 긴 디스크는 오래걸릴수있음
    • 한계 해결: 디스크 스케줄링 SCAN
      • 디스크의 한쪽 끝에서 다른쪽 끝으로 이동, 또 디스크의 반대쪽 끝으로
        이동/반복해 길목에 있는 모든 요청을 처리한다

 

 

 

 

디스크 스케줄링


  • 컴퓨터는 그때마다의 상황에 맞게 데이터를 저장하기 때문에,
  • 여기저기 저장되있는 데이터를 상황에 맞게 접근할 것인지 고민해야 한다
  • 탐색시간을 최소화 하는 것이 목표

 

Access time의 구성

  • 탐색시간 : read/write 헤드를 데이터가 저장되있는 트랙 위치로(명령문을 처리하기 위해) 이동시키는데 걸리는 시간
  • 회전 지연시간 : 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
  • 전송 시간 : 헤드가 찾은 데이터를 디스크로부터 사용자의 버퍼로 보내지는 데 걸리는 시간

 

Disk bandwidth

  • 단위 시간 당 전송된 바이트 수

 

Disk Structure

  • logical block : 디스크의 외부에서 보는 디스크 단위 정보 저장 공간들. 주소를 가진 1차원 배열처럼 취급.
  • Sector : logical block이 물리적인 디스크에 매핑된 위치

 

 

 

 

 

디스크 스케줄링 종류

FCFS

  • 가장 먼저 들어온 것을 먼저 처리하는 방식

SSTF

  • queue에 들어온 것중에 디스크의 현재 위치를 기준으로 가장 가까운 것부터 처리함
  • 문제점 : 한쪽만 빨리되서 멀리있는건 너무 오래걸리는 기아현상 발생

SCAN

  • 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하는 식으로 반복(역방향도 순회). 가는길목마다 모든 요청을 처리
  • 문제점 : 실린더 위치에 다라 대기시간이 다르다

C-SCAN

  • 헤드가 한쪽 끝에서 다른쪽 끝으로 이동하여 가는길목마다 모든 요청을 처리함
  • 다른쪽 끝에 도달하면 곧바로 출발점으로 다시 이동
  • SCAN 보다 균일한 대기시간을 보장함

N-SCAN

  • SCAN의 변형 알고리즘
  • 진행 중 새롭게 발생된 요청은 서비스하지 않고, 다음진행시에(반대방향으로 갈 때) 처리

 

LOOK, C-LOOK

  • SCAN, C-SCAN 을 보완한 스케줄링
    • 끝단에 요청이 없어도 무조건 끝단까지 도달하는 특징을 없앰
    • 불필요한 헤드 이동시간은 제거했으나, 끝단으로 가야할지 판단에 있어 오버헤드 발생
  • LOOK : SCAN을 보완한 스케줄링
  • C-LOOK : C-SCAN을 보완한 스케줄링

 

 

 

 

 

 

디스크 관리


physical formatting

  • 디스크 컨트롤러가 읽고 쓸 수 있도록, 디스크를 sector들로 나누는 과정
  • 각 섹터는 헤더 + 실제데이터(보통 512bytes) + 트레일러 로 구성
    • sector에 접근하기 위한 정보+error correcting code 로 구성

Partitioning

  • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정

Logical formatting

  • 이미 만들어진 partition에 파일 시스템을 만드는 것

Booting

  • ROM에 있는 small bootstrap loader의 실행

 

 

 

 

Swap-Space 관리

 

Swap-space

  • 가상 메모리 시스템에서는 디스크를 연장 공간으로 사용
  • 파일 시스템 내부에 둘 수 있으나, 별도 파티션 사용이 일반적
    • 공간 효율성 < 속도 효율성 우선
    • 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참고됨

 

 

RAID

  • 여러개의 디스크를 묶어서 사용
  • 사용목적
    • 디스크 처리속도 향상 : 여러디스크에서 block의 내용을 분산저장 (병렬성)
    • 신뢰성 향상 : 동일 정보를 여러디스크에 중복 저장

 

 

 

 

 

Free-Space ManageMent (디스크 자유공간 관리)


  • 자유 공간은 bit map / bit vector 으로써 구현됨
  • 빈 파일 찾기
  • 각각 블록에 0과 1로 번호를 매김. (0: 파일 사용안함, 1: 파일 사용중)

 

 

방식 세가지

  • Counting 제외하고 모두 연속적인 빈 공간을 찾기에 효율적이지 않음
  • Counting 은 연속적인 블록을 찾기 좋음. 

 

 

 

 

 

 

 

 

 

UNIX 파일시스템


 

 

UNIX 파일시스템의 구조

컴퓨터의 대부분의 파일시스템에 해당

 

 

 

super 블록

  • 파일시스템의 총체적 레이아웃 정보 보관
  • 블록의 크기, inode의 수, data block의 수, free block list의 head

i-node 블록

  • 메타데이터 보관 (실제 데이터 블록의 위치 정보 포함)

inode 블록은 메타데이터를 보관함

data 블록

  • 실제 데이터 보관

 

 

 

 

 

FAT 파일 시스템

  • 윈도우즈 계열에서 보통 사용
    • boot block
    • FAT : 파일의 메타데이터 일부를 저장. 나머지 정보는 디렉토리에 가지고 있음
      • 테이블 전체를 메모리에 올려놓음
      • 연결 할당의 단점을 모두 극복함. 다음 블럭의 위치도 별도로 관리.
    • Root directory : 파일 이름 등 저장
    • Date block

 

 

 

 

 

 

 

Ext2 파일시스템


 

 

블록의 그룹화

  • 메타데이터와 실제데이터를 인접하게 배치하여, 디스크 탐색 시간을 감소시킴

수퍼블록의 중복저장

  • 수퍼블록을 그룹마다 중복저장하여 디스크 오류에 대비

 

 

수퍼블록

  • 파일시스템에 대한 제어 정보
  • 아이노드/가용 아이노드 수, 데이터블록/가용 데이터블록 수
  • 그룹 당 블록 수, 시간 정보
  • block bitmap 을 통해 블록이 사용중인지 파악함

 

그룹 디스크립터

  • 블록 그룹에 대한 제어 정보
  • 블록/아이노드 비트맵의 위치
  • 비어있는 블록/아이노드의 갯수
  • 아이노드 테이블의 위치

 

비트맵

  • 블록 비트맵 : 사용중인 데이터블록과 빈 데이터블록의 표시. (한 비트가 한 블록의 상태를 표시)
  • 아이노드 비트맵 : 사용중인 아이노드와 빈 아이노드의 표시.  (한 비트가 한 아이노드의 상태를 표시)
  • 아이노드 테이블 : 실제 아이노드의 저장 위치

 

 

 

 

파일 시스템의 변천사. 현재 많이 사용되는 파일 시스템은 EXT4

 

Ext4 파일시스템

  • EXt2 + 저널링
  • 갑작스럽게 전원 공급이 중단되면?
    • 파일시스템 일관성 훼손 발생
    • 저널링으로 문제 해결 (5~30초 단위로 버퍼캐시에서 수정된 내용을 저널영역에 기록)
      • ex. 이미지가 로딩될때, 로딩되는 과정을 관찰하지 않고,
      • 저널링으로 미리 변경될 파일 이미지를 보여주는 것

 

 

Ex4의 저널링 (메타데이터 저널링 모드)

  • Ex4의 디폴트 옵션 저널링 (메타데이터만 저널링)
  • 저널링 주기가 도래하면 데이터를 파일시스템에 저장 후, 메타데이터를 저널영역에 기록
  • 체크 포인팅 주기가 도래하면 메타데이터를 파일시스템에 반영
  • 크래쉬 발생 시, 파일시스템 자체가 깨어지는 것 방지 (일부 데이터 훼손 가능)

 

 

 

 

Ex4의 저널링 (데이터 저널링 모드)

  • 메타데이터와 일반데이터를 모두 저널링
  • 저널링 주기가 도래하면, 데이터와 메타데이터를 저널영역에 기록
  • 체크 포인팅 주기가 도래하면 데이터, 메타데이터를 파일시스템에 반영
  • 크래쉬 발생 시, 데이터 자체의 복구 보장

 

 

 

 

LRFU 알고리즘

  • 최근에 참조된 것일수록 블록의 가치를 높게 평가함
  • LRU가 최근 참조 성향만 고려하고, LFU는 참조횟수만 고려하는 데 비해 LRFU는 두가지 다 고려함
    • 객체의 참조 가능성을 계산할 시,
    • 해당 객체의 과거의 모든 블록의 빈도와 최신성을 보고, 교체 대상을 선정할 수 있도록 함

 

 

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 파일 시스템  (0) 2022.08.01
[운영체제] 메모리 관리  (0) 2022.07.12
[운영체제] 동기화  (0) 2022.07.07
[운영체제] CPU  (0) 2022.07.05
[운영체제] 프로세스  (0) 2022.06.27