파일 조작: create, access, remove..파일 이름과 디스크에 저장된 실제 데이터(디스크 블록)과의 연결파일 속성과 접근 제어 관리계층적 구조(directory)여러 객체를 파일 개념으로 접근(ex. device)open(), creat(): create
Platter, Spindle, SurfaceTrack, Sector, CylinderHead, ARM그림1. HDD structureSector addressing: 디스크는 sector 단위로 접근(sector unit interface)sector는 보통 512B
물리적 디스크를 논리적 디스크로 추상화(a collection of disk blocks)디스크 명령어 handling(ATA command: type, start, size, device..)디스크 초기화, 스케줄링, 에러 handling .. 파일 추상화 지원. f
4가지 중요 추상화 \- process(thread)virtual memorylock(for concurrency)file(by file system)파일은 저장장치 안에 있다! (hard disk, ssd)storage: 비휘발성 vs memory: 휘발성Advan
open(return a file descriptor)I/O: read/writeattribute: chmodcreatename resolution(directory hierarchy traverse)file system management: mountdirectory
make another file name to access an existing fileconnect a file name with an inode(하드링크)원본 파일과 하드링크 파일은 동일한 inode를 공유hard link: 동일한 inode number 공유cre
make a file systemfile system: 디렉터리와 파일들의 집합related metadata: superblock(fs의 size, inode 생성 가능 갯수..), bitmap(어느 블록이 사용가능하고, 사용할 수 없는지 확인)command: mkfs
파티션들로 구성각 파티션에 하나의 파일 시스템 생성그림1. disk와 각 파티션디스크 블록들로 구성유저 데이터는 디스크 블록에 저장(disk block: usally same size with the page, usally 4KB)Superblock: 0 blockme
64개의 디스크 블록으로 이루어진 파티션 가정.파일시스템 레이아웃inode size: 256B, a block size: 4KB -> 한 블록에 16개의 inode 저장 가능.inode manipulation example루트 디렉터리에 'hello.c' 소스코드 생성
파일 시스템은 자신이 관리하고 있는 파티션(partition)내 free block들을 관리하고 있다가 요청이 들어오면 파일을 위한 공간을 할당해준다.파일!모든 자원을 파일로써 취급하는 것은 리눅스 파일시스템의 고유한 특성이다.파일은 이름이 존재하고, 이 이름이라는 속
리눅스의 기본 파일시스템인 ext 계열 파일시스템은 inode 구조를 채택한다.ext2_inode 구조i_blocks: 파일이 몇 개의 데이터 블록을 가지고 있는지 나타냄.i_mode: 이 inode가 관리하는 파일의 속성 및 접근 제어 정보 유지i_links_coun
하나의 파티션에 올려진 파일 시스템에 대한 레이아웃이 단일적이다.따라서 아이노드 블록 부분과 데이터 블록 부분을 반복적으로 이동하며 읽기/쓰기를 하는 특성상 seek time이 커지게 된다. 결국 성능적으로 불리하다.추가로 시간이 지날수록 외부 단편화가 심해진다. 이
사용자 태스크들은 open(), read(), write(), close() 등의 시스템 콜을 사용해 파일시스템에 접근한다. 반대로 파일시스템은 함수를 구현하여 상위계층에 제공해야하는 데 이는 구현하기 나름이다. 파일시스템 자체는 특정 운영체제에 구애받지 않고, 심지어
태스크가 ext2 파일시스템을 마운트한다고 가정해보면,사용자의 마운트 요청을 받은 VFS는 ext2의 마운트 함수를 호출하면서 인자로 빈 수퍼 블록 객체를 넘긴다. 그러면 ext2는 자체적으로 구현한 파일시스템 내부 함수를 이용하여, 파티션 앞부분에 기록해두었던 수퍼
source: http://egloos.zum.com/rousalome/v/9993077파일 이름을 인자로 sys_open()이 호출되면 파일시스템은 요청된 파일에 대한 inode를 찾는다. 그리고 task_struct와 VFS의 객체를 연결한다. 아래 그림은
Boot Sector: 시스템이 처음 작동할 때 부팅 과정에서 필요한 정보들Super Block: metadata for FS(FS 전체를 관리), 파일 시스템의 크기, 아이노드의 갯수 등..
changes in a file system are guaranteed from a valid state to another valid state 비일관된 상태의 예로, 파일이 실제로 할당된 데이터라 할 지라도 비트맵이 해당 블록을 free 블록이라 지칭한 경우. 파일
Operating Systems: Three Easy PiecesRemzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (University of Wisconsin-Madison)https://pages.cs.wisc.e
GFS(Google File System) papaer 요약source: https://static.googleusercontent.com/media/research.google.com/ko//archive/gfs-sosp2003.pdf구글 파일시스템은 분산된
GFS(Google File System) papaer 요약source: https://static.googleusercontent.com/media/research.google.com/ko//archive/gfs-sosp2003.pdfGFS 클러스터는 하나의
GFS 디자인에서 마스터의 모든 작업안 개입은 최소화되도록 설계되었다. 이번 장은 클라이언트, 마스터, 그리고 청크서버 간의 상호작용에서 어떻게 마스터의 개입은 최소화되며, 이 상호작용을 통해 데이터의 변화(mutation), 원자적 레코드 append, 그리고 스냅샷
GFS를 비롯하여 시스템 설계 시 가장 큰 어려움 중 하나는 잦은 구성 요소 장애를 처리하는 것이다. 구성 요소의 질과 양으로 인해 이러한 문제는 예외(exception)이라기보단 일반적인 것(norm)으로 간주된다. GFS에서는 수 많은 머신을 전적으로 신뢰할 수 없