운영체제

10.저장장치 관리

J개발자 2020. 11. 14. 04:00

-입출력 버스 구조 파악

-입출력 과정에서 직접 메모리 접근,인터럽트,버퍼링이 어떻게 적용되는지

-디스크 장치 종류, 각 장치의 구조, 데이터 전송 시간

-디스크 장치의 여러 가지 관리 기법 이해

-디스크 스케줄링 기법을 이해하고 각 장단점 파악

-RAID 필요성 이해하고 구성 방식에 따른 종류 알아봄

 

주변장치는 데이터 전송 속도에 따라 저속 주변장치(메모리와의 적은 양의 데이터 오고가는 키보드)와 고속주변장치(대용량의 데이터,그래픽카드,하드디스크)로 구분.

 

채널은 데이터가 지나다니는 통로.여러 채널을 효율적으로 사용하기 위해서는 속도가 비슷한 장치끼리 묶는다.

 

입출력 버스의 구조

초기의 구조: 폴링방식으로 모든 장치가 하나의 버스로 연결되어 CPU를 선점(폴링)하는 방식.

입출력 제어기 사용 구조:  메인 버스와 입출력버스 2개의 채널로 나누어 작업 효율 향상시킴./저속 주변장치 때문에 고속 주변 장치의 데이터 전송이 느려지는 문제있음.

입출력 버스의 분리 구조: 입출력 제어기 구조의 단점을 보완하고자 저속,고속 입출력 버스로 분리하여 운행. 두 버스사이의 데이터 전송은 채널 선택기가 관리한다.

(단, 그래픽카드는 계산 처리양이 CPU를 능가할 정도로 늘어날 수 있어 GPU를 부착하여 입출력 버스로 감당하기 어려워 메인 버스에 바로 연결되어 사용한다.)

 

직접 메모리 접근(DMA)                  polling->interrupt->DMA

CPU의 도움 없이도 메모리 접근 가능하도록 입출력 제어기에 부여된 권한.

CPU가 폴링하지 않고 인터럽트가 완료 알리면 DMA가 한꺼번에 처리해 메모리에 쓴다. 그전에 채널선택기가 DMA에게 데이터 전송하게 된다.

메모리 공간 분할

CPU의 작업 공간과 DMA의 작업 공간이 겹치는 것을 방지하기 위해 과거에는 입출력 메모리라는 별도의 메모리에 DMA제어기를 보관하였지만, 현재는 CPU가 작업하는 공간과 DMA제어기가 데이터 옮기는 공간을 분리하여 메인 메모리를 운영하는 메모리 맵 입출력 형태를 갖음.

 

입출력과 인터럽트

인터럽트는 주변 장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에게 알려주는 역할을 하는 신호이다.

각 장치에는 IRQ라는 고유 인터럽트 번호가 부여된다.(handle) 인터럽트가 발생하면 CPU는 IRQ를 보고 어떤 장치에서 인터럽트가 발생했는지 파악한다.

 

인터럽트 벡터: 여러 인터럽트 중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 자료구조이다. 벡터가 1이면 인터럽트가 발생함을 의미.

인터럽트 핸들러: 다양한 인터럽트 방법중 하나로 함수 형태로 만들어 놓은 것이다. 인터럽트 벡터에는 해당 인터럽트 핸들러를 호출할 수 있도록 인터럽트 핸들러가 저장된 메모리의 주소가 포인터 형태로 등록되어 있다.

   예를 들어 시그널(사용자 지정 인터럽트)발생시 행동 여부를 물어보거나 지금 까지 작업을 저장하도록 사용가 지정으로 인터럽트 핸들러를 바꿀 수 있다.

 

 

버퍼

속도가 다른 두 장치의 속도 차이를 완화하는 역할을 한다.한꺼번에 이동하도록.하드디스크나 CD-ROM 등 대부분의 입출력 장치는 버퍼를 사용하여 느린 속도를 보완한다. 

단일 버퍼보다는 이중 버퍼를 사용하여 데이터를 담는 용도, 쓰는 용도로 사용하는 것이 더 유용하다.

 

☆커널도 버퍼를 사용한다.커널이 입출력 장치로 보내야 할 데이터를 버퍼에 담아 놓으면 입출력 제어기가 커널 버퍼에서 입출력장치로 데이터를 보낸다.커널이 버퍼를 사용하면 입출력 작업이 완료되기 전에 다른 작업을 할 수 있어 시스템 성능 향상된다. 스풀러를 사용하는 프린터의 경우도 마찬가지로 응용 프로그램은 스풀러가 없으면 출력이 완료될 때까지 다른 작업을 못하지만 스풀러를 사용해 출력할 데이터를 스풀러로 보내 다음 작업을 할 수 있게 하는 같은 원리이다.

 

 

버퍼링

하드웨어 안전 제거: 버퍼가 다 차지 않으면 버퍼가 다 찰 때까지 입출력장치에 자료가 전송되지 않는데,이 상태에서 저장장치를 제거하면 버퍼 안의 데이터가 저장되지 않는 문제가 발생!-> 하드웨어 안전 제거를 사용하면 강제로 버퍼의 내용이 저장장치로 옮겨짐(플러시flush).

 

디스크 장치

 

 

 

 

 

 

 

 

디스크 장치의 데이터 전송 시간

탐색시간을 줄일 수 있는 디스크 스케줄링 방식이 있다.

 

디스크 장치 관리

파티션: 디스크를 논리적으로 분할하는 작업.

          하드디스크가 2개 라면 첫번째 두번째 하드디스크를 별도의 파티션으로 보임.

 

마운트:  유닉스 운영체제에서 여러 개의 파티션을 하나로 통합하는 기능이다.

포매팅: 디스크에 파일 시스템을 탑재하고 디스크 표면을 초기화하여 사용할 수 있는 형채로 만드는 작업. 빈 저장장치에 파일 테이블을 탑재한다.  (빠른 포매팅: 데이터는 그대로 둔 채 파일 데이블을 초기화/느린 포매팅:디스크에 파일 시스템을 탑재하고 디스크 표면을 초기화하는 방식)

조각모음:하드시스크에 조각이 많이 생기면 큰 파일이 여러 조각으로 나뉘어 저장되고 이를 읽기 위해 하드디스크의 여러 곳을 돌아다녀야 하므로 성능 저하로 이어진다 이를 하드 디스크는 주기적으로 조각을 모아주어야한다.

 

네트워크 저장장치

DAS

서버와 같은 컴퓨터에 직접 연결된 저장장치를 사용하는 방식.

HAS라고도 불림.

윈도우 파일 공유(여러 컴퓨터 중 하나를 파일 공유 서버로 지정해 나머지 컴퓨터에서 서버로 지정된 컴퓨터에 접근하여 파일 이용함)

단점-컴퓨터에 직접 연결된 저장장치를 사용하므로 다른 운영체제가 쓰는 파일 시스템을 사용할 수 ㅇ없음.  데이터의 관리나 백업을 사용자가 직접해야 함.

 

NAS

기존 저장장치를LAN이나 WAN에 붙여서 사용하는 방식.

NAS전용 운영체제를 가진 독립적인 장치로 새로운 하드디스크를 추가하거나 뺄 수 있다.

저장장치를 네트워크상에 두고 여러 클라이언트가 네트워크를 통해 접근하게 함으로써 공유 데이터의 관리 및 데이터의 중복 회피가 가능.

 

SAN

데이터 서버,백업 서버,RAID 등 장치를 네트워크로 묶고 데이터 접근을 위한 서버를 두는 방식.

시스템이 제공하는 인터페이스를 통해 데이터에 접근하고 네트워크로 묶어 구성하므로 다양한 서비스를 제공한다.

데이터 서버나 백업서버같이 구축하여 NAS보다 구축 비용이 많이 든다.

디스크 스케줄링

 

트랙 단위 이동을 최소화하여 탐색 시간을 줄이는 것이 목적이다.

 

FCFS디스크 스케줄링:요청들어온 순서대로 처리하기 때문에 헤드가 이동한 총 거리가 제일 크다.

SSTF디스크 스케줄링:현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스. 효율성은 좋지만 아사 현상을 일으킬 수 있어 사용X.(늦게 들어왔는데도 가깝단 이유로 먼저 요청이 아사될 수 있음)   ----제일 성능 나음.

블록SSTF디스크 스케줄링: 큐에 있는 트랙 요청을 일정한 블록 형태로 묶음.모든 트랙은 블롱 안에서만 움직임.에이징을 사용하여 공평성을 보장하지만 FCFS만큼 성능 좋지 않음.

SCAN 디스크 스케줄링:엘리베이터와 비슷하게 헤드가 움직이기 시작하면 맨 마지막 트랙에 도착할 때까지 뒤돌아가지 않고 계속 앞으로만 전직하면서 요청하는 서비스.동일한 트랙이나 실린더 요청이 연속 발생하면(가다가 가까운 곳 처리)아사 현상 발생가능.   ---그나마 나음.

C-SCAN디스크 스케줄링: 헤드가 한쪽 방향으로 움직일때는 요청받은 트랙을 서비스하고 반대방향으로 돌아올 때는 서비스 하지 않음.  

LOOK디스크 스케줄링: 더이상 서비스할 트랙이 없으면 헤드가 끝까지 가지 않고 중간에서 방향을 바꿈  ---그나마 나음.

C-LOOK디스크 스케줄링:한쪽 방향으로만 서비스하는 C-SCAN과 유사한데 더 이상 서비스 할 트랙이 없으면 헤드가 중간에 방향을 바꿀 수 있다는 것이 다르다.

SLTF디스크 스케줄링:(회전지연시간)  큐에 들어온 요청을 디스크의 회전 방향에 맞추어 재정령하는 서비스

 

 

RAID

자동으로 백업을 하고 장애가 발생하면 이를 복구하는 시스템이다.

하나의 원본 디스크와 같은 크기의 백업 디스크에 같은 내용 동시에 저장.

RAID  0(스트라이핑): 백업기능은 없고 디스크 병령 연결해 여러 데이터를 여러 디스크에 동시에 저장하거나 가져올 수 있어 입출력 속도가 몇배 빠르다. 데이터를 여러 갈래로 찢어 저장하므로 RAID 0을 스트라이핑이라고 부름.

RAID 1(미러링): 데이터가 똑같이 여러 디스크에 복사되기 때문에 짝수 개의 디스크 구성

                   디스크가 더 필요하므로 비용이 증가, 같은 내용 두번 저장해 백업가능하지만 속도 느려질 수 있다.

RAID 2: 오류 검출 기능 없는 디스크에 대해 오류 고정 코드(ECC)를 별도의 디스크에 저장해 관리.마이때문에 많은 시간 비용 필요

RAID 3: 섹터 단위로 데이터 나누어 저장.패리티 비트 계산 필요

RAID 4: 3과 유사하게 섹터가 아닌 블록 단위. 패리티 비트 추가 위한 계산량이 많지만 추가되는 디스크 양은 적음

RAID 5: 3,4와 다르게 패리티 비트를 여러 디스크에 분산 시켜 병목 현상을 환화.

RAID 6: 5와 달리 패리티 비트2개라 더 안전

RAID 10: 미러링 기능과 빠른 데이터 전송 가능 1,0 을 결합한 형태 0+1의 경우 장애가 발생했을 떄 복구하기 위해 모든 디스크를 중단해야하지만 1+0은 일부만 디스크 복구가능하다.

 

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

9.가상 메모리 관리  (0) 2020.12.02
8.가상 메모리 기초  (0) 2020.12.02
7.물리 메모리 관리  (0) 2020.11.30
3.프로세스와 스레드  (0) 2020.09.23
4.CPU스케줄링  (0) 2020.09.23