파일
- 서로 관련되어 있는 정보의 집합체
- 사용자의 관점에서는 파일은 논리적으로 저장되는 단위
- 운영체제는 논리적인 저장 단위를 디스크와 같은 물리적인 저장장치에 맵핑하여 저장
파일 시스템
- 운영체제의 기능으로서1) 사용자에게 파일 관리 기능 제공(파일과 디렉토리의 생성/삭제, 파일에 대한 조작, 공유, 보호
- 2) 파일을 저장장치에 저장한다.
- 응용분야 또는 저장장치의 특성에(e.g. 동영상 ..etc) 따라서 다양한 파일 시스템이 개발됨
- FAT, NTFS(윈도우 제공), ext2, ext3, JFS, NFS, YAFFS
- 사용자가 파일 시스템을 선택해서 사용할 수 있음.
파일 시스템의 기능
- 파일 관리: 파일 생성, 참조, 삭제 및 보호 기능을 제공하며 적절한 제어방식을 통해 다른 사람의 파일을 공유할 수 있게 함
- 저장장치 관리: 파일의 저장할 공간을 할당
- 파일 무결성 보장: 파일에 저장된 정보가 손상되지 않도록 보장
- 파일 액세스 방법 제공: 파일에 대해 읽기, 기록, 실행 등 여러 종류의 액세스 제어 제공
- 파일 백업과 복구: 사고로 정보를 손실하거나 고의로 손상시키는 일을 방지하기 위한 데이터 사본(중복)을 생성하는 백업 및 손상된 데이터를 복구할 수 있는 복구 기능을 제공
- 정보 보호와 비밀 보장: 데이터를 암호화하고 해독하는 방법 제공
파일의 종류와 구조
- 종류
- 프로그램 파일: 소스 파일, object 파일, word 파일, ppt 파일 ... etc
- 데이터 파일: 텍스트(숫자, 문자), 바이너리(이미지, 음성, 동영상) 파일
- 파일의 구조
- 형식이 없는 구조: 바이트의 나열
- 간단한 레코드 구조(예를 들어 데이터베이스 파일): 레코드들의 나열(고정 크기의 레코드, 가변 크기의 레코드...)
- 복잡한 구조: 워드 파일처럼 포맷화된 문서, 실행 파일
파일의 속성(정보)
- 파일 시스템은 파일에 대해 다음과 같은 속성 관리
- 이름
- 형태: 주로 확장자를 나타냄
- 위치: 저장된 장소
- 크기
- 만들어진 시간, 날짜
- 변경된 시간, 날짜
- 사용자 식별
- 보호: 읽기(r), 쓰기(w), 실행(x) 권한
디렉토리
- 파일에 대한 정보(이름, 날짜, 크기 ...)를 가진 구조체
- 파일을 잘 관리하려면 디렉토리를 효율적으로 구조화해야 함
- 파일 시스템은 사용자에게 디렉토리 관리 기능 제공
- 다중 사용자를 고려
- 사용자 간의 파일 보호 또는 공유 기능
파일 시스템의 디스크 저장 공간 할당
- 파일 시스템은 파일을 물리적 보조 기억장치에 사상(map) 시킨다.
- 파일을 블록으로 나누고 블록에 논리적 번호(0, 1, 2 ...)로 구성
- 디스크도 블록으로 나누어져 있음: 보통 섹터라고 하는 블록으로 나누어져 있음
- 파일의 (논리적) 블록을 디스크의 어떤 (물리적) 블록에 저장할 것인가?
- 디스크 블록 할당 방법
- 연속 할당 (contiguous allocation)
- 연결 할당 (linked allocation)
- 색인 할당 (indexed allocation)
연속 할당 (contiguous allocation)
- 파일을 저장할 때 디스크의 연속된 블록을 할당하여 저장
- 디렉토리에 파일이 저장된 시작 블록과 길이(블록의 개수)에 대한 정보를 관리
- 장점: 순차 접근(파일을 읽거나 쓸 때, 순차적으로)과 직접접근이 모두 가능
- 단점1) 파일을 저장할 때 적절한 연속된 블록을 모두 수용할 수 있는 빈 블록들을 찾아야 하는데 찾는 시간조차 오래 걸릴 수 있다.3) 외부 파편화
-
- 파일들이 할당되고 삭제되면서 파일에 할당된 블록들 사이에 가용 블록들이 생김
- 새로 생성되는 파일의 크기가 커서 이러한 가용 블록에 저장할 수 없다면 외부 단편화 문제가 발생
- 해결책: 공간을 압축할 것!! → 사용 중인 블록들을 한 곳으로 모은다.
- 2) 파일이 커지는 경우, 연속된 공간이 없으면 파일이 커질 수 없다.
연결 할당 (linked allocation)
- 파일의 블록을 디스크 여기저기에 저장하고, 블록들을 차례로 연결하는 방법
- 디렉토리에 파일의 시작 블록과 마지막 블록 번호 저장
- 디스크 블록마다 다음 블록 번호를 저장
- 장점: 외부 단편화 문제 X
- 단점: 직접 접근이 어렵다(임의의 중간 위치 접근 불가, 링크드 리스트와 동일!), 디스크 블록 내에 다음 블록 인덱스를 기록해야 하므로 약간의 저장 공간 소비
색인 할당(indexed allocation)
- 파일마다 색인 블록을 별도로 놓고, 색인 블록에 파일의 모든 블록의 번호를 저장
- 디렉토리는 파일의 색인 블록 번호를 가진다.
- 장점: 색인 블록에 모든 블록 인덱스가 기록돼 있으므로 순차 접근과 직접 접근 모두 가능하고 외부 단편화 문제 X
- 단점: 색인 블록이 공간 낭비를 초래할 수 있다. (디스크에서 색인 블록과 파일 블록을 구분해서 사용하기 때문에)특히, 파일의 크기가 작을 때는 색인 블록이 대부분 낭비된다.
가용공간 관리
하드 디스크
- 보조 기억장치로 가장 널리 사용됨
- 원판 모양의 표면에 자기 물질이 입혀져 있으며 이곳에 정보를 정보를 기록하여 저장
- 기계 장치이기 때문에 컴퓨터 시스템에서 성능을 떨어뜨리는 원인
데이터를 읽고 쓸 때는 무조건 512 바이트 단위로 읽고 쓴다. 만약에 1 바이트 크기의 데이터를 쓰더라도 511 바이트는 빈 데이터로 디스크에 쓰인다.
일반적으로 탐색 시간이 가장 오래 걸림
디스크 스케줄링
- 디스크 접근 시간은 탐색 시간과 회전 지연시간에 달려있다.
- 여러 개의 디스크 블록에 대한 요청이 있을 때, 각 블록의 탐색시간을 줄일 수 있다면 전체 처리 시간이 짧아져 퍼포먼스가 좋아진다. 즉, 탐색시간을 줄이는 디스크 스케줄링이 필요하다!!
디스크 스케줄링 알고리즘
- FCFS(First Come First Served): 선착순
- SSTF(Shortest Seek Time First)
- SCAN
- C-SCAN(Circular SCAN)
1번은 디스크에서 맨 바깥쪽 섹터를 요청했고, 2번은 디스크에서 가장 먼 섹터를 요청했는데, 이걸 선착순으로 서비스하게 되면 탐색 시간이 매우 커진다. 즉, 1번 요청을 처리하기 위해서 맨 바깥쪽 디스크로 탐색하고, 다시 2번 요청을 처리하기 위해서 맨 안쪽 디스크 섹터로 탐색하지만... 퍼포먼스가 떨어진다. FCFS의 장점은 공평하게 서비스한다는 점이지만, 디스크 헤더를 많이 움직여야 하므로 처리 시간이 많이 걸린다
SSTF (Shortest Seek Time First)
- 현재 헤드 위치에서 탐색 시간이 짧은 요청부터 처리하는 방법
- 단점: 기아 상태가 발생할 수 있다 → 최내각과 최외각의 트랙은 서비스를 받지 못하는 상태 발생한다. 따라서, 응답 시간의 편차가 클 수 있다. 요청을 처리하는 동안에도 계속 새로운 요청이 들어오기 때문에
SCAN
- 트랙의 한쪽 방향으로 요청들을 처리해나가고, 트랙의 끝에 도착하면, 반대 방향으로 요청들을 처리하는 방법; 디스크 헤드는 디스크의 양쪽 끝을 왕복 → 엘리베이터 알고리즘
- 장점: 평균 응답시간은 SSTF와 비슷하면서 응답시간 편차가 작다.
- 단점: 양쪽 끝 트랙의 요청들이 더 빨리 서비스를 받을 수 있다. 예를 들어, 방향을 바꾸자마자 새로운 요청이 들어왔는데, 마침 그 요청이 방향을 바꾼 그 위치에 서비스를 요청한 경우
- 운영체제에서 가장 많이 쓰이는 알고리즘(물론 변형해서 사용하지만..)
C-SCAN(Circular SCAN)
- SCAN처럼 한쪽 방향으로 요청을 처리하지만, 끝에 도착하면 처음으로 되돌아가서 같은 방향으로만 요청을 처리: SCAN보다 응답시간 편차를 줄일 수 있다. → 새로운 요청이 먼저 처리될 수 있는 SCAN에서의 단점을 해결할 수 있다
'CS > OS 수업' 카테고리의 다른 글
운영체제 10주차 - Deadlock (0) | 2021.05.04 |
---|---|
운영체제 9주차 (프로세스 동기화 개념, 임계 구역) (0) | 2021.04.27 |
운영체제 8주차 (0) | 2021.04.20 |
운영체제 7주차 (0) | 2021.04.14 |
운영체제 6주차 (1) | 2021.04.05 |