입출력 장치와 채널
- 저속 주변장치
- 메모리와 주변장치 사이에 오고 가는 데이터의 양이 적어 데이터 전송률이 낮은 장치
- ex) 키보드, 프린터
- 고속 주변장치
- 대용량의 데이터가 오고가서 전송률이 높은 장치.
- ex) 그래픽카드, 하드디스크 등
입출력 버스의 구조
직접 메모리 접근(DMA)
- CPU 도움 없이도 메모리에 접근할 수 있도록 입출력 제어기에 부여된 권한
인터럽트
- CPU가 어떤 인터럽트를 받는지 확인하기 위해 각 장치에 IRQ라는 고유의 인터럽트 번호가 있다.
- 외부 인터럽트
- 입출력장치 뿐만 아니라 전원 이상이나 기계적인 오류때문에 발생하는 인터럽트
- 내부 인터럽트
- 프로세스의 오류와 관련된 인터럽트
- 사용자가 직접 발생시키는 인터럽트는 시그널이라고 한다. (ctrl+c or kill 명령)
버퍼
- 단일 버퍼보다 이중 버퍼를 사용하는 게 유용하다.
- 한 버퍼는 데이터를 담는 용도, 다른 버퍼는 데이터를 가져가는 용도이다.
디스크 장치의 종류
하드디스크
- 플래터
- 표면에 자성체가 발려있어 N극은 0, S극은 1로 표현하는 원판
- 섹터
- 하드디스크의 가장 작은 저장 단위
- 블록
- 데이터를 전송하는 논리적인 저장 단위 중 가장 작은 단위. 여러개의 섹터로 구성
- 트랙
- 플래터에서 회전축을 중심으로 데이터가 기록되는 동심원
- 실린더
- 여러 개의 플래터에 있는 같은 트랙의 집합
- 헤드
- 데이터를 읽거나 쓰는 부분
CD
- 트랙과 섹터로 구성
- 홈이 파여서 반사되지 않으면 0, 반사되어 돌아오면 1
- CD의 경우 안쪽부터 바깥쪽으로 데이터를 채우는 게 차이점이다.
디스크 장치의 데이터 전송 시간
- 탐색 시간
- 헤드가 현재 위치에서 원하는 트랙까지 이동하는 데 걸리는 시간.
- 가장 오래걸린다.
- 회전 지연 시간
- 원하는 섹터를 만날 때까지 회전하는 데 걸리는 시간
- 전송 시간
- 원하는 섹터에 있는 데이터를 읽어 전송하는 시간.
- 데이터 전송 시간 = 탐색 시간 + 회전 지연 시간 + 전송 시간
디스크 장치 관리
- 파티션
- 디스크를 논리적으로 분할하는 작업
- 보통 파티션 하나에 하나의 파일 시스템이 탑재된다
- 포매팅
- 디스크를 초기화하는 작업
- 조각 모음
- 하드 디스크를 처음 사용할 때는 데이터가 앞에서부터 차곡차곡 쌓이지만 파일을 저장했다 지우기를 하면 빈 공간이 생기는데 이를 조각화 또는 단편화라고 한다.
- 이를 모아주는 것이 조각 모음
네트워크 저장장치
- DAS( Direct Attached Storage )
- 컴퓨터에 직접 연결된 저장장치
- 하나의 컴퓨터를 파일 공유 서버로 지정하고 나머지 컴퓨터는 서버에 접근해 파일을 이용한다.
- 관리나 백업을 사용자가 직접 하는 번거로움이 있다.
- NAS( Network Attached Storage )
- 기존의 저장장치를 LAN이나 WAN에 붙여서 사용하는 방식.
- NAS는 네트워크를 통해 접근해서 공유 데이터의 관리 및 데이터의 중복 회피가 가능하다.
- SAN( Storage Area Network )
- 데이터 서버, 백업 서버 등의 장치를 네트워크로 묶고, 접근을 위한 서버를 두는 형태
- 구축하는 비용이 많이 든다.
디스크 스케줄링
디스크 스케줄링은 트랙의 이동을 최소화하여 탐색 시간을 줄이는 것이 목적
FCFS 디스크 스케줄링
- 요청이 들어온 트랙 순서대로 서비스하는 방식이다.
SSTF 디스크 스케줄링
- 현재 헤드의 위치에서 가장 가까운 트랙부터 서비스하는 방식
- 효율성은 좋지만 아사 현상을 일으킬 수 있다.
블록 SSTF 디스크 스케줄링
- 큐에 있는 트랙 요청을 일정한 블록 형태로 묶어서 블록 내에서 가까운 트랙부터 서비스하는 방식
SCAN 디스크 스케줄링 (엘리베이터 기법)
- 헤드가 한 방향으로만 움직이면서 서비스를 한다.
- 헤드가 움직이면 맨 마지막 트랙에 도착할 떄까지 계속 전진하면서 요청받은 트랙을 서비스한다.
C-SCAN 디스크 스케줄링
- 헤드가 한쪽 방향으로만 움직이고 반대방향으로 돌아갈 때는 서비스하지 않고 이동만 하는 방식이다.
LOOK 디스크 스케줄링
- 요청에서 헤드의 가장 먼 부분까지 간 후에 더이상 서비스할 트랙이 없으면 헤드가 끝까지 가지 않고 중간에서 방향을 바꾼다.
C-LOOK 디스크 스케줄링
- 마찬가지로 헤드가 중간에 방향을 바꿀 때 서비스하지 않고 이동만 하는 방식이다.
SLTF 디스크 스케줄링
- 이 방식은 헤드가 모든 트랙을 동시에 읽을 수 있는 하드디스크에 해당한다.
- 매우 고가라서 많이 사용되지는 않는다.
- 아래 그림에서 요청이 만약 3 - 1 - 2로 들어왔다면 회전하는 방향에 맞게 1 - 2 - 3으로 정렬한 후 서비스하는 방식이다.
RAID ( Redundant Array of Independent Disks )
- 자동으로 백업을 하고 장애가 발생하는 복구하는 시스템
RAID 0(스트라이핑)
- RAID 0은 병렬로 연결된 여러 개의 디스크에 데이터를 동시에 입출력할 수 있도록 구성된다.
- 하나의 디스크를 사용할 때보다 입출력 속도가 5배 빠르다.
- 그러나 장애 발생 시 복구하는 기능이 없다.
RAID 1(미러링)
- RAID 1은 하나의 데이터를 2개의 디스크에 나눠 저장해서 장애 시 백업 디스크로 활용한다.
- 디스크가 하나씩 더 필요하기 때문에 비용이 증가한다.
RAID 2
- 오류 교정 코드를 따로 관리하고 오류가 발생하면 이 코드를 이용해 디스크를 복구한다.
- n개의 디스크에 대해 오류 교정을 하기 위해 n-1개의 디스크를 필요로 한다.
RAID 3
- 오류 검출 코드인 패리티 비트를 사용한다.
- 짝수 패리티는 1의 총수를 짝수로 만드는 것이다.
- RAID 3는 섹터 단위로 데이터를 나눠서 저장한다.
RAID 4
- RAID3과 같은 방식이지만 처리하는 데이터가 블록 단위로 되어 있다.
- RAID 3은 패리티 비트를 구성하기 위해 모든 디스크가 동시에 동작해야 하지만
- RAID 4는 패리티 비트가 저장되는 디스크만 동작하면 된다.
RAID 5
- 패리티 비트를 여러 디스크게 분산하여 보관해서 병목 현상을 완화한다.
RAID 6
- RAID 5와 같은 방식이지만 패리티 비트가 2개라서 디스크 2개의 장애를 복구할 수 있다.
RAID 10과 0+1
- RAID 10은 RAID 1방식으로 구성한 후 RAID 1로 묶인 디스크를 RAID 0으로 묶는다.
- 둘 다 병렬로 데이터를 처리하여 입출력 속도를 높일 수 있다
- 0+1은 장애가 발생했을 때 복구하기 위해 모든 디스크를 중단해야 하지만, 10은 일부 디스크만 중단하여 복구할 수 있다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 분산 시스템 (0) | 2024.03.26 |
---|---|
[운영체제] 파일 시스템 (0) | 2024.03.26 |
[운영체제] 가상 메모리 관리 / 페이지 교체 알고리즘 / 스레싱 / 프레임 (0) | 2024.03.26 |
[운영체제] 가상 메모리 / 페이징 / 세그먼테이션 (0) | 2024.03.26 |
[운영체제] 물리 메모리 관리 (0) | 2024.03.26 |