그동안 저장장치라 하면 HDD나 SSD와 같이 대중적인 것들의 이름정도만 알고 어떻게 작동하는지 자세한 내용에 대해선 잘 몰랐었다.
하지만 이러한 것들이 되게 내 주위에 익숙하게 있었다. 예를 들자면 CD플레이어와 HDD가 비슷한 원리로 작동된다는 것이다.
조각모음과 포멧팅과 같은 익숙한 이름도 많이 보였고 나도 모르는 사이에 컴퓨터를 다루며 저장장치에 대해 배웠던 것 일지도 모르겠다.
1. 입출력 시스템
1-1 입출력장치와 채널
컴퓨터의 각 장치는 메인보드의 버스로 연결된다. 주변장치는 데이터의 전송 속도에 따라 저속 주변장치, 고속 주변장치로 나뉠 수 있다.
저속 주변장치와 고속 주변장치의 데이터 전송 속도의 차이 때문에 버스에 병목현상이 발생한다. 따라서 여러 채널을 사용해 버스의 수를 늘린다.
하지만 채널을 나눈다하더라도 여러 종류의 데이터가 한 채널에 이동한다면 속도의 차이가 난다. 따라서 같은 종류의 데이터끼리 같은 채널을 사용하는 것이 바람직하다.
1-2 입출력 버스의 구조
1. 초기
: 초기에 컴퓨터는 CPU가 모든 입출력을 맡는 폴링 방식을 사용했다. 하지만 CPU가 직접 입출력을 한다면 입출력이 끝날 떄까지 다른 작업을 할 수 없다.
2. 입출력 제어기를 사용한 구조
: CPU가 입출력을 맡아서 생기는 단점을 보완하기 위해 모든 입출력 제어를 '입출력 제어기' 에게 맡기는 구조로 바뀌었다.
입출력 제어기는 2개의 메인버스와 입출력 버스로 나뉘며 메인버스는 CPU와 RAM이 사용하고 입출력버스는 입출력 장치가 사용한다.
하지만 주변장치의 종류에도 저속과 고속 2개가 있듯이 고속주변장치는 저속 주변장치에 의해 속도가 떨어지는데 이를 해결하기 위해 입출력 버스를 고속/저속을 분리하여 사용한다.
※ 고속 주변장치에서도 CPU만큼이나 빠른 그래픽카드는 더이상 입출력버스에서 사용하기에는 너무 빨라서 메인버스에 바로 연결하여 사용한다.
3. 직접 메모리 접근
: CPU의 도움 없이도 입출력 제어기가 입출력장치에 접근할 수 있도록 해주는 권한
- 입출력 제어기는 여러 채널에 연결된 주변 장치로부터 전송된 데이터를 적절히 배분하여 하나의 데이터 흐름을 만든다.
DMA 제어기가 입출력장치에 데이터를 주고 받을 때 메인 메모리를 사용한다. 하지만 메인메모리는 CPU의 작업공간이므로 서로의 공간이 겹치게 된다.
그래서 과거에는 '입출력 메모리'라는 별도의 메모리에 데이터를 저장했지만 결국 메인 메모리에서 작업을 해야하기 때문에 불필요한 작업이 수반된다.
오늘날의 입출력 시스템에서는 메인 메모리에서 CPU가 작업하는 공간과 DMA 제어기가 데이터를 옮기는 공간을 분리하여 사용한다.
4. 인터럽트
4-1 입출력과 인터럽트
인터럽트란 주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 역할을 하는 신호이다.
하지만 인터럽트의 종류는 매우 많아 CPU가 구별하기가 어렵다. 따라서 각 장치에 IRQ라는 고유 인터럽트 번호를 부여하고 그 번호를 보며 어느곳에서 온 인터럽트인지 확인한다.
인터럽트에는 외부 인터럽트와 내부 인터럽트가 있는데 외부 인터럽트는 외부의 입출력 장치나 전원 이상, 기계적 오류때문에 발생하는 오류이고
숫자를 0으로 나누거나 자신에게 할당된 프레임 밖에서 작업을 하려는 것과 같은 프로세스의 오류는 내부 인터럽트이다.
내부 인터럽트는 주로 프로세스의 오류에 의해서 발생하지만 사용자의 의지로 발생시키는 자발적 인터럽트를 시그널 이라고 부른다.
4-2 인터럽트 벡터와 인터럽트 핸들러
인터럽트 벡터란 여러 인터럽트중 어떤 인터럽트가 발생했는지 파악하기 위해 사용하는 데이터 구조이고 인터럽트 핸들러는 각 인터럽트마다 해결 함수를 만들어 놓은 것 이다.
5. 버퍼링
5-1 버퍼의 역할
버퍼란 유튜브를 보다보면 스크롤바에 생기는 회색 선에 해당한다. 그 선 안에서는 동영상을 마음껏 볼 수 있지만 회색 선을 벗어난 구역을 가면 시간이 걸리는 것이 버퍼의 크기에 해당한다.
버퍼 운용시 주의점 :
메모리를 저장을 했지만 버퍼가 다 채워지지 않아 입출력장치에 전달되지 않았을 때 메모리가 삭제된다면 버퍼안에 있는 메모리는 저장되지 않는다.
2. 디스크 장치
2-1 디스크 장치의 종류
1. 하드디스크
: 데이터를 저장하는 저장장치. 하드디스크의 가장 작은 저장단위는 섹터라고 부르고 버퍼와 같이 여러개의 섹터를 모아 한번에 컴퓨터에 전달하는데 이를 블록이라고 부른다.
하드디스크의 작동법은 CD플레이어와 유사하며 원판이 빙글빙글 돌고 헤드를 통해 원판 안의 내용을 읽을 수 있다.
같은 거리를 돌 때 원판의 바깥쪽 부분이 안 쪽 부분보다 더 많이 움직이는 것을 보완하고자 하드디스크에서는 각속도 일정 방식의 회전을 한다.
2-2 디스크 장치의 데이터 전송시간
데이터 전송 시간 = 탐색 시간 + 회전 지연시간 + 전송 시간
3. 디스크 장치 관리
1. 파티션
: 디스크를 논리적으로 분할하는 작업. 윈도우에서는 각 파티션에 C드라이브, D드라이브와 같은 이름을 붙힌다.
위 사진과 같이 하나의 하드디스크에 파티션을 여러개를 분할할 수도 있고 두개의 하드디스크의 파티션을 하나로 모아놓을 수도 있다. 파티션의 통합을 마운트라고 한다.
2. 포매팅
: 디스크에 파일 시스템을 탑재하고 디스크 표면을 초기화하여 사용할 수 있는 형태로 만드는 것. 즉 빈 저장장치에 파일 테이블을 탑재하는 것을 말한다.
포매팅은 빠른 포매팅과 느린 포매팅 2가지로 나뉜다.
빠른 포매팅은 데이터는 그대로 둔 채 파일 테이블만 초기화 하는 방식이지만 느린 포매팅은 일반적인 포매팅을 말하며 배드 섹터를 찾는 일도 같이 수행한다.
3. 조각 모음
: 앞에서 많이 다루었듯 데이터를 저장하고 삭제하는 과정에서 단편화가 생긴다.
이렇게 된다면 실질적으로 남은 데이터의 크기보다 실제로 사용할 수 있는 데이터의 크기가 현저히 줄어든다. 이 때 디스크 조각모음을 통해 단편화를 제거할 수 있다.
4. 네트워크 저장장치
1. DAS
: 컴퓨터의 직접 연결된 저장장치. 여러 컴퓨터 중 하나를 파일 공유 서버로 지정하고 나머지 컴퓨터에서 서버로 지정된 컴퓨터에 접근하여 파일을 이용하는 방식으로 운영한다.
→ 컴퓨터의 메인보드에 있는 입출력 버스와 연결되고 SATA 방식으로 널시 사용되고 있음
→ 컴퓨터에 직접 연결된 저장장치를 사용하기 때문에 다른 운영체제가 쓰는 파일 시스템을 사용할 수 없음
2. NAS
: 기존의 저장장치를 LAN이나 WAN (네트워크)에 붙여서 사용한다.
→ 하드디스크를 추가하거나 뺼 수 있으며 NAS 전용 운영체제를 가진 독립적인 장치
→ 저장장치를 네트워크 상에 두고 여러 클라이언트가 네트워크에 접근하게 함으로써 공유 데이터의 관리 및 데이터의 중복 회피가 가능
3. SAN
: NAS 보다 진보된 형태의 네트워크 저장장치이다. 데이터 서버/ 백업서버를 나누어 네트워크로 묶고 데이터 접근을 위한 서버를 두는 형태
→ 사용자가 파일 관리에 신경쓰지 않아도 되지만 구축 비용이 많이 든다.
'OS > 쉽게 배우는 운영체제' 카테고리의 다른 글
파일 시스템 (1) (0) | 2022.04.12 |
---|---|
저장장치 관리 (2) (0) | 2022.04.10 |
가상 메모리 관리 (2) (0) | 2022.04.03 |
가상 메모리 관리 (1) (0) | 2022.03.23 |
가상 메모리의 기초(2) (0) | 2022.03.21 |
댓글