출처 인프런 강의
비 휘발성 메모리, 보조저장장치 시스템이다. 일반적으로 HDD, NVM으로 구성된다.(디스켓 등 종류는 다양하다.)

목표는 접근 시간을 최소화 하고 bandwidth를 최대화 하는 것이다.
seek time(탐색 시간)
disk bandwidth
알고리즘
FIFO 스케줄링

SCAN 스케줄링

C-SCAN 스케줄링

컴퓨터에 전원이 들어올 때, 맨 처음에 실행할 프로그램이 있어야 한다. 부트스트랩 로더는 NVM 플래시 메모리에 저장되고, 알려진 메모리 주소에 위치한다.
Redundant Arrays of Independent Disks의 약자다. 데이터 읽기/쓰기 속도를 증가시키고(Parallelism), 데이터 저장의 안정성을 높인다(Redundancy).
컴퓨터의 주 작업은 계산과 입출력 처리다. 대부분의 경우 입출력 처리가 주 작업이다. 운영체제는 입출력 연산과, 입출력 기기 관리라는 역할을 맡는다.
입출력 전환을 하기위해 컨트롤에 데이터와 명령어를 프로세서는 어떻게 전달하는가? data-in, data-out, status, control이라는 4개의 레지스터를 이용한다.

(1) Polling: 반복적으로 status 레지스터를 busy bit가 clear 될 때까지 읽는 것이다.
(2) interupt: CPU는 인터럽트-요청 라인을 가진다.(챕터 1 참고)
(3) DMA(Direct Memory Access): 프로그램된 I/O 사용을 지양함. 큰 데이터를 다룰때 유용하다.
non-blocking은 즉시 반환이 이뤄진다. 하지만 asynchronous read()는 transfer를 요청만 하고 바로 돌아간다.

두 가지가 있다.
(1) Sequential access
(2) Direct access

(1) Single-Level Directory
(2) Two-Level Directory

(3) Tree-Structured Directories

(4) Acyclic-Graphic Directories

파일 시스템 구현에서 해결해야 하는 문제는 다음과 같다.
(1) 파일들에게 공간을 어떻게 할당할 것인가
(2) 공간을 어떻게 효율적으로 구성할 것인가
(3) 파일에 어떻게 빠르게 접근할 것인가
세 가지 방법이 사용된다.
(1) Contiguous Allocation

(2) Linked Allocation

(3) Indexed Allocation
FAT: File Allocation Table
linked allocation는 파일 접근시 일정한 순서대로 접근해야한다는 단점이 있었다. 이를 위해 파일의 인덱스를 담은 테이블을 사용한다.


이 방법을 통해 Free Space Management 도 달성 할 수 있다.