공부/운영체제2011. 7. 13. 22:35


디스크 구조.

실린더, 트랙, 섹터
섹터단위로 데이터 저장.
가장 바깥쪽 실린더에 첫번째 트랙의 첫번째 섹터부터 데이터 저장.
track을 따라 저장되다가 같은 실린더의 다른 track을 따라 저장되다가 실린더 바깥쪽에서 안쪽으로 간다.

logical block의 1차원 배열이 디스크의 섹터로 순서대로 매핑된다.

매핑하는데 어려운 점들
 

디스크에 불량섹터가 있을 경우
트랙당 섹터 수가 균일하지 않은 문제 
트랙당 섹터 밀도수가 다를 때
같은 데이터 전송률을 유지하기 위해서는  바깥쪽에서 안쪽으로 갈 때 회전 속도를 증가시킨다.
 
Disk scheduling

운영체제는 Disk scheduling를 통해 빠른 access time, 큰 disk bandwidth가 되도록 한다.
access time를 결정하는 두가지 주요요소 
seek time(디스크 헤더를 원하는 섹터가 있는 실린더로 옮길 때 드는 시간)
rotational latency( disk가 원하는 섹터를 헤더에 오도록 판을 돌리는 데 걸리는 시간)
disk bandwidth 전체 전송된 바이트 수/서비스 요청에서 마지막 전송까지 걸린 시간
Disk scheduling으로 access time과 disk bandwidth를 향상 가능하다.

FCFS(first come first service)
선착순 방법. 요청큐에 들어온 순으로 처리.

SSTF(shortest seek time first)
현재 head 위치에서 seek time을 가장 최소로 하는 요청을 처리.
starvation문제 가능성.

SCAN
디스크암이 디스크 끝에서 다른 끝으로 움직인다. 움직이면서 각 실린더에 도달할 때마다 요청된 것을 처리한다. 디스크 끝에 도달하면 방향을 반대로 바꾼다.

C-SCAN
Circular scan
헤드가 디스크 처음부터 끝까지 요청들을 처리하면서 움직이는데 돌아올때는 요청들을 처리하지 않고 바로 처음으로 돌아간다.
더 균일한 wait time을 제공한다.
 
LOOK, C-LOOK
disk의 맨 끝까지 가지 않고 요청된 곳까지만 간다.

어떤 알고리즘을 써야 하나?

sstf나 look이 기본적인 알고리즘으로 괜찮은 선택.
디스크가 헤비로드일때 scan이나 c-scan이 괜찮음. 이 두개가 starvation에 영향을 덜 받기 때문에.
file allocation 방식에 영향을 많이 받을 수 있다. contiguously allocated file은 헤드 움직임이 적고, linked나 indexed file은 head가 많이 움직임.
directory와 index block의 위치도 영향을 미친다. 자주 읽히기 때문이다. 
os가 rotational latency를 줄일 수 있는 방법은 없다. 위 방식들은 seek time을 줄인다.

디스크 관리
disk formatting

low-level-formatting(physical formatting)

디스크를 디스크 컨트롤러가 읽고 쓸 수 있도록 섹터로 나누는 것.
하나 이상의 실린더 그룹으로 파티션을 나눈다.

logical formatting 
파티션을 나눈 후 파티션에 파일 시스템을 넣는 과정
FAT 또는 inodes. 비어있는 directory.

Boot block

bootstrap program

시스템을 초기화 (CPU 레지스터, 디바이스 컨트롤러, 메인 메모리 내용)
초기화 후 운영체제 실행
bootstrap은 디스크에서 시스템커널을 찾고, 커널을 메모리에 올리고, 운영체제 실행 처음 주소로 점프한다.
bootstrap은 ROM(read-only memory)에 저장된다.
대부분 시스템은 bootstrap 프로그램이 디스크로부터 full bootstrap program을 불러오는 기능만 ROM에 있어서 full bootstrap program을 쉽게 변경할 수 있또록 한다.
full bootstrap program은 boot blocks에 저장된다.
boot partition을 가지고 있는 디스크를 boot disk 또는 system disk라고 한다.

Swap-space management

Virtual memory 시스템에게 최고의 throughput을 제공하기 위한 것.
Virtual memory가 디스크 공간을 메인 메모리의 확장영역으로 사용하는 것.

두가지 swap-space 사용방법
프로그램 전체(프로세스 이미지 전체)를 swap.
page 단위로 swap
물리 메모리 크기에 따라 swap space 크기가 다양함.

두가지 swap-space 위치
1) 파일 시스템에서 하나의 큰 파일로 보는 경우
일반 파일처럼 파일 시스템 과정(디렉토리, 디스크 공간할당)을 거치기 때문에 느리다.

2) 분리된 디스크 파티션으로 보는 경우
file system이나 디렉토리 구조가 없다. 
swap-space storage manager가 블락 할당 관리.
swap은 빨라야 하기 때문에 공간 효율보다는 속도가 빠른 알고리즘을 사용한다.

RAID Structure

Redundant Arrays of Inexpensive Disks

여러개의 디스크를 사용함으로써 성능향상과 데이터의 신뢰도 향상에 쓰인다.

신뢰도 향상에 쓰이는 RAID
Mirroing(Shadowing)
같은 data를 모든 디스크에 중복해서 쓴다.

성능향상에 쓰이는 RAID
여러개 디스크에 병렬로 접근 - 데이터 전송률이 올라간다.
Data striping
bit-level striping
여러 disks에 각 byte의 몇 bits씩 쪼개어 저장한다.
Block-level striping
file의 몇 블락씩 여러 disks에 쪼개어 저장한다.
 

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

I/O System  (0) 2011.07.13
File System Implementation  (0) 2011.07.13
File System  (0) 2011.07.13
Virtual Memory  (0) 2011.07.13
8장 Memory-management strategies  (0) 2011.07.10


Posted by skyjumps