운영체제 스터디 - 11주차 - 입출력시스템

케이·2022년 4월 18일
0

운영체제 스터디

목록 보기
11/11

해당 게시글은 운영체제 스터디를 위해 반효경 교수님 운영체제 강의를 보고 기록한 게시물입니다. 틀린 정보가 있다면 언제든 지적해주세요🙏🏻

입출력 시스템

Disk Structure

  • Logical block

    • 디스크 외부에서 보는 디스크 단위 정보 저장 공간틀.
    • 정보를 전송하는 최소 단위
  • Sector

    • 하드디스크에서 데이터를 저장하는 최소 단위.
    • 물리적인 디스크에 매핑된 위치.
  • Cylinder

    • 같은 트랙에 있는 섹터를 서로 다른 원판에서 모아둔 것
    • 디스크헤드가 실제로 읽고 쓰는 일을 함.
    • 디스크헤드는 같이 움직임 -> 모든 헤드들은 동일한 위치를 읽고 쓸 수 있다.
  • Sector 0번은 최외곽 실린더의 첫 트랙에 있는 첫번째 Sector이다. 0번 Sector는 부팅할 때 쓰는 Sector.

Disk Management

  • Physical formatting (low-level formatting)
    • 디스크를 컨트롤러가 읽고 쓸 수 있도록 실제로 섹터 단위로 나누는 과정.
  • Partitioning
    • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정.
    • OS는 이것을 독립적 디스크로 취급.
  • Logical formatting
    • 파일 시스템을 만드는 것. FAT, inode 등의 구조 포함
  • Booting
    • ROM에 있는 기계어 실행.
    • Small bootstrap loader: 부팅을 할 때 쓰는 아주 작은 로더.
      -Full bootstrap loader program: Sector 0.
      디스크에서 운영체제의 위치를 찾아서 로딩.

디스크를 읽는 방식

엘리베이터 스케줄링도 스캔 같은 방식. 스캔 알고리즘은 트랙의 위치에 따라서 대기시간이 다르다.


  • N-scan: 요청이 들어온 큐를 보면서 큐에 요청이 들어온건 처리 함. 이동하는 중에 들어온 것 요청은 다음에 처리.
  • Look은 스캔을 변형, C-look은 C-scan을 변형한 것.

  • 신뢰성 향상 -> 디스크 하나가 고장나더라도 고장나지 않은 디스크를 읽어서 사용. 이를 위해 중복저장 = 미러링, 쉐도잉
  • 완전 중복저장은 공간낭비가 심하기 때문에 중복률에 따라 여러가지 버전이 있다

Unix 파일 시스템

  • Super 블록: 파일시스템의 총체적 레이아웃 정보 보관
  • 블록의 크기, inode의 수, data blaock의 수 free block list의 head
  • inode블록 : 메타데이터 보관 (실제 데이터 블록의 위치 정보 포함)
  • Data 블록 : 실제 데이터 보관

Ext2 파일시스템

  • 블록의 그룹화: 메타데이터와 실제 데이터를 가깝게 배치하여 디스크 탐색 시간 감소
  • 수퍼블록의 중복 저장: 수퍼블록을 그룹마다 중복저장하여 디스크 오류에 대비
  • 데이터 블록 비트맵: 사용중인 데이터 블록과 빈 데이터 블록의 표시
  • inode 비트맵: 사용중인 아이노드와 빈 아이노드의 표시
  • inode 테이블: 실제 아이노드의 저장 위치

Ext4 = ExT2 + 저널링

  • 파일시스템에 있는 내용을 작업하기 위해서는 메인메모리의 버퍼캐시에 올려두고 작업. 버퍼캐시는 휘발성 (전원이 나가면 내용이 사라짐) 수정된 내용은 파일 시스템에 반영을 해야함. (파일 시스템은 비휘발성)
  • 갑작스런 전원 공급 중단 - 파일 시스템 일관성 훼손 발생(inconsistency)
    -> 해결방법: 저널링
    버퍼캐시에 올라온 데이터가 수정됐을 때 주기적으로 스토리지에 기록 - 5~30초 단위로 저널 영역이라는 곳에 기록. 이후에 파일 시스템 원래 위치에 반영(checkpointing)
    저널 영역에 쓰는 도중에 크래싱이 났을 땐 저널영역을 날려도 파일 시스템은 온전하게 보관이 되어 있기 때문에 (옛날 것이라도) 안전.

Ext4의 저널링

  • 메타데이터 저널링 모드
    • 저널링 주기가 도래하면 데이터를 파일 시스템에 저장한 후 메타데이터를 저널 영역에 기록
    • 위치정보 같은 것이 메타데이터에 들어 있기 때문에 메타데이터를 저널링 해주면 파일 시스템 자체가 깨지진 않음.

파일 시스템을 위한 버퍼캐시 알고리즘

  • LRU (가장 오래전에 사용된 블록 삭제): 가장 마지막에 사용된 시점만을 고려한다는 것이 단점.

  • LFU (사용횟수가 가장 적은 블록삭제): 사용된 횟수만을 보지 사용 시점을 고려하지 않는 것이 단점

  • LRFU 알고리즘

  • 참조시점부터 흐른시간을 가지고 계산.

    • t시점의 계산된 밸류만 있으면 t시점부터 지금까지 얼마나 시간이 흘렀는가에 대한 로우에 흐른 시간만큼 곱해주면 임의의 시점에 블럭의 가치를 계산할 수 있다. 과거의 모든 기록을 참조할 필요 없이 그 때 그 블록의 가치가 얼마였고 시간이 언제였는지 알고 있으면 블럭의 가치를 흐른 시간을 가지고 계산 가능하고 이를 통해 스페이스 오버헤드 문제를 해결 할 수 있음.
  • 타임 오버 헤드
    재참조되지 않은 블럭들 간에는 상대적인 가치의 대소관계가 변하지 않는다

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

0개의 댓글