Reporting Date: March. 12, 2025
저장 장치에 대한 전반적인 개념에 대해 다루고자 한다.
목차01 저장소 정의 및 표기법 컴토
02 저장구조
03 저장장치 시스템의 구조
04 I/O 구조
05 장치 상태 테이블
06 DAM 구조
07 명령어 실행 사이클
08 컴퓨터 시스템 구조
09 다중처리기 시스템의 구성
10 최근 CPU의 설계 경향
01 저장소 정의 및 표기법 검토
컴퓨터는 bit를 기본 단위로 하며,
0과 1의 이진수로 데이터를 표현하는 이진 체계를 사용한다.
컴퓨터의 처리 단위(워드 크기)는 OS와 하드웨어에 따라 다르며,
예를 들어 Windows 64비트 OS는 64비트 단위로 데이터를 처리한다.
일반적으로 처리 단위가 클수록 한 번에
더 많은 데이터를 다룰 수 있어 연산 속도가 향상된다.
1 . bit
컴퓨터 저장의 기본 단위.
비트는 0과 1 중 하나의 값을 가질 수 있다.
컴퓨터에서 저장되는 모든 데이터는 비트의 조합으로 이루어진다.
충분한 수의 비트가 주어지면, 컴퓨터는 숫자, 문자, 이미지,
영화, 소리, 문서, 프로그램 등 다양한 데이터를 표현할 수 있다.
2 . byte
8비트로 구성되며, 대부분의 컴퓨터에서는
가장 작은 편리한 저장 단위로 사용된다.
예를 들어, 대부분의 컴퓨터에는 비트를 이동하는
명령어는 없지만, 바이트를 이동하는 명령어는 존재한다.
3 . word
이는 컴퓨터 아키텍처에서 기본적으로 사용하는 데이터 단위로,
여러 개의 바이트로 이루어질 수 있다.
예를 들어, 64비트 레지스터와 64비트 메모리 주소를
사용하는 컴퓨터는 보통 64비트(8바이트) 워드를 사용한다.
컴퓨터는 데이터를 한 바이트씩 처리하는 것보다
자신의 기본 워드 크기 단위로 처리하는 것이 더 효율적이다.
4 . 저장 단위
컴퓨터 저장소와 대부분의 데이터 전송량은
바이트 및 바이트의 집합 단위 로 측정되고 사용된다.
단위 크기 | 바이트 | 지수 표기 |
킬로바이트(KB) | 1,024 바이트 | 2¹⁰ |
메가바이트(MB) | 1,024² 바이트 | 2²⁰ |
기가바이트(GB) | 1,024³ 바이트 | 2³⁰ |
테라바이트(TB) | 1,024⁴ 바이트 | 2⁴⁰ |
페타바이트(PB) | 1,024⁵ 바이트 | 2⁵⁰ |
컴퓨터 제조업체들은 1MB를 100만 바이트,
1GB를 10억 바이트로 반올림하여 표현하는 경우가 많다.
하지만 네트워크 속도 측정에서는 바이트가 아니라 bit 단위를 사용한다.
이는 네트워크 상에서 데이터를 한 비트씩 전송하기 때문이다.
02 저장 구조
1 . 주기억장치
(Main Memory)
1차 저장 장치로, CPU가 직접 접근할 수 있는
유일한 대용량 저장장치이다.
이는 DRAM(Dynamic RAM) 기술을 기반으로 구현되며,
데이터를 임의 접근(Random Access) 방식으로 저장하고 읽을 수 있다.
그러나 휘발성(Volatile) 특성을 가지므로,
전원이 차단되면 저장된 데이터가 사라진다.
비록 가격이 상대적으로 비싸지만, 높은 속도로 데이터에
접근할 수 있어 컴퓨터 시스템에서 핵심적인 역할을 한다.
2 . 보조 기억장치
(Secondary Storage)
2차 저장 장치로, 주기억장치의 확장 역할을 하며
대량의 데이터를 영구적으로 저장할 수 있는
비휘발성(Non-Volatile) 저장 장치이다.
대표적인 예로 HDD, SSD,
USB 플래시 드라이브, 광학 디스크(CD, DVD) 등이 있으며,
속도는 주기억장치보다 느리지만 저장 용량이 크고
데이터가 전원이 차단되어도 유지되는 특징이 있다.
① HDD
(Hard Disks Drive)
각 디스크의 플래터(Platter)는 CD처럼 생긴 원형의
평판 모양이며, 플래터 양쪽 표면은 자기 물질로 덮여 있다.
플래터 표면은 원형인 트랙(Tracks)들로 논리적으로 나뉘며,
이것은 다시 섹터(Sectors) 들로 다시 나뉜다.
하나의 암 위치에 있는 트랙 집합은 하나의 실린더(Cylinders)를 형성한다.
디스크 제어기는 저장장치에 내장되어, 장치와 컴퓨터 간의
논리적인 상호 동작을 결정하며, 보통 내장된 캐시를 가지고 있다.
② SSD
(Solid-State Disks)
HDD(12ms)보다 더 빠른 성능을 제공하며,
일반적으로 2.9ms의 응답 속도를 자랑한다.
기계적인 요소가 없기에 강한 충격에 강하고,
회전 소음이 적으며, 전력 소모도 적다.
반도체 칩을 기반으로 작동하여 내구성이 높고 속도가 빠르다.
하지만 가격이 비싸 많은 사람들에게 대중적으로 사용되기까지
시간이 걸릴 수 있지만, 앞으로 더 널리 사용될 것으로 예상된다.
03 저장장치 시스템의 구조
1 . 계층적 구성
CPU의 기억 공간은 가장 빠른 저장 공간인
레지스터를 사용하여 데이터를 임시로 저장한다.
메인 메모리는 CPU보다 속도가 느리지만,
프로그램 실행 중 데이터를 저장 및 접근하는 주요 공간이다.
CPU와 메모리 간 속도 차이를
줄이기 위해 캐시 메모리가 도입되었으며,
이는 CPU가 직접 메인 메모리에 접근하지 않고,
캐시 메모리를 통해 데이터를 주고받는다.
캐시 메모리는 CPU 내부 또는 외부에 위치할 수 있다.
저장장치 계층은 속도(Speed), 비용(Cost), 휘발성(Volatility) 간의
균형을 맞추기 위해 설계된다.
- 상위 계층으로 갈수록 속도는 빠르지만
용량이 작고 비용이 높으며 휘발성이 있다. - 하위 계층으로 갈수록 속도는 느려지지만
저장 용량이 크고 비용이 낮으며 비휘발성을 가진다.
이러한 계층적 구조를 통해 시스템은 자주 사용되는 데이터는 빠른 저장장치에,
대량의 데이터는 상대적으로 느린 저장장치에 저장하여 성능과 비용을 최적화한다.
2 . 캐싱
(Caching)
자주 사용되거나 최근에 접근된 데이터를
보다 빠른 저장장치에 복사하여 유지하는 기술이다.
이를 통해 데이터 접근 속도를 향상시키고,
CPU나 프로그램이 필요한 정보를 보다 빠르게 불러올 수 있도록 한다.
대표적인 예로 CPU 캐시, 디스크 캐시, 웹 브라우저 캐시 등이 있으며,
캐시가 효율적으로 관리되면 성능이 크게 향상된다.
3 . 장치 드라이버
(Device Driver)
운영체제의 커널과 하드웨어 장치 간의
인터페이스를 제공하는 소프트웨어이다.
운영체제가 다양한 하드웨어를 효율적으로 제어할 수 있도록 하며,
각 장치의 특성에 맞는 입출력 처리를 수행한다.
예를 들어, 그래픽 카드 드라이버, 프린터 드라이버, 오디오 드라이버 등이 있으며,
올바른 드라이버가 설치되어 있어야 장치가 정상적으로 작동한다.
04 I/O 구조
일반적으로 두 가지 방식으로 처리된다.
1 . 동기식 입 ∙ 출력
(Synchronous I/O)
작업이 시작된 후, 해당 작업이 완료될 때까지
사용자 프로그램의 실행이 중단되며, 제어권이 반환되지 않는 방식이다.
이 방식에서는 CPU가 다음 인터럽트가 발생할 때까지
대기 상태로 들어가며, 이를 위해 Busy-wait 방식이 사용된다.
⌎ CPU가 특정한 대기(Wait) 명령을 실행하며 쉬는 방식이며,
이러한 명령이 없을 경우 대기 루프(Wait Loop)를 통해
반복적으로 상태를 확인한다.
즉, CPU가 단순히 기다리기만 하는 구조를 가진다.
또한, 인터럽트를 발생시키는 장치가 명확하며,
한 번에 수행될 수 있는 입∙출력 요청의 개수가 최대 하나로 제한된다.
따라서, 여러 장치가 동시에 입∙출력을 수행하거나, 입∙출력과 연산을
병렬로 처리하는 것이 불가능하여 시스템의 성능이 저하될 수 있다.
OS 커널의 관점에서, 동기식 I/O는 전통적인 입∙출력 방식이며,
이후의 처리 과정은 비동기식 입∙출력과 동일하게 진행될 수 있다.
2 . 비동기식 입 · 출력
(Asynchronous I/O)
동기식 방식과 달리 여러 개의 입∙출력 작업을
동시에 수행할 수 있도록 허용하는 방식이다.
이 방식에서는 입∙출력이 시작된 후, CPU의 제어권이
즉시 사용자 프로그램으로 반환되며, 입∙출력의 완료를 기다릴 필요가 없다.
따라서 CPU는 입∙출력 작업과 무관하게
다른 연산을 수행할 수 있어 시스템의 효율성이 향상된다.
만약 사용자 프로그램이 특정 입∙출력 작업의 종료를 기다리고 싶다면,
블로킹(blocking) 시스템 호출을 사용하여 대기할 수 있다.
OS는 비동기식 입∙출력을 효과적으로 관리하기 위해
장치 상태 테이블(Device Status Table)을 유지한다.
이 테이블에는 각 입∙출력 장치에 대한 장치 타입, 장치 주소, 상태 등의
정보가 저장되며, 필요한 경우 이를 참조하여 장치의 현재 상태를 확인할 수 있다.
또한, OS는 각 장치별로 대기 큐(Waiting Queue)를 유지하여,
동시에 처리해야 할 입∙출력 요청을 관리한다.
입∙출력 장치는 서비스가 필요할 때 인터럽트(Interrupt)를 발생시키며,
OS는 인터럽트가 발생하면 장치 상태 테이블을 조회하여 해당 장치의 상태를 갱신한다.
만약 특정 장치에 대한 추가적인 요청이 대기 큐에 존재할 경우,
OS는 다음 요청을 처리하도록 해당 장치에 명령을 전달한다.
이를 통해 여러 개의 입∙출력 작업을 병렬로 수행할 수 있어,
시스템 자원을 보다 효율적으로 활용할 수 있다.
05 장치 상태 테이블
① 현재 장치 상태
카드 리더 1, 디스크 유닛 1, 디스크 유닛 2는
idle(유휴 상태) 이므로 요청이 없다.
라인 프린터 3과 디스크 유닛 3은
busy(사용 중) 상태이며, 각각 하나의 요청을 처리 중이다.
대기 큐에는 디스크 유닛 3에 대한 추가적인 요청이 존재한다.
② I/O 요청의 개수
현재 활성화된 요청은 3개이다.
- 라인 프린터 3에 대한 요청 (주소: 38546, 길이: 1372)
- 디스크 유닛 3에서 파일 xxx 읽기 (주소: 43046, 길이: 20000)
- 디스크 유닛 3에서 파일 yyy 쓰기 (주소: 03458, 길이: 500) (대기 큐에 있음)
③ CPU의 동작 방식
CPU는 I/O 작업이 수행되는 동안
비동기 방식일 경우 다른 연산을 수행할 수 있다.
하지만 동기식 방식일 경우 CPU는 입출력 작업이
끝날 때까지 대기하며, 다른 작업을 수행하지 않는다.
④ 인터럽트 발생 및 장치 상태 갱신
요청된 I/O 작업이 완료되면, 해당 장치는
인터럽트(Interrupt) 를 발생시켜 CPU에게 알린다.
OS는 인터럽트를 감지하고, 장치 상태 테이블을 갱신하며,
대기 큐에 추가 요청이 있는 경우 다음 요청을 실행한다.
서비스가 끝난 후에도 대기 큐에 추가 요청이 없으면
장치 상태 테이블에서 해당 장치의 상태 항목이 삭제될 수 있다.
06 DAM 구조
(Direct Memory Access)
CPU와 I/O 간의 처리 방식에는 여러 가지가 있지만,
속도를 높이는 데에는 근본적인 한계가 존재한다.
컴퓨터 시스템에서 가장 속도가
느린 부분 중 하나는 I/O 장치이며,
이를 효율적으로 처리하기 위한 기술 중 하나가
직접 메모리에 접근하는 DMA이다.
1 . DMA 방식
고속 입출력(I/O) 장치를
효율적으로 처리하기 위해 사용되는 기술로,
I/O 장치가 CPU의 개입 없이 직접 메인 메모리와
데이터를 주고받을 수 있도록 설계되었다.
이 방식에서는 메인 메모리의 특정 영역(버퍼)을 할당하여
I/O 장치가 데이터를 직접 읽고 쓸 수 있도록 한다.
CPU는 I/O 장치가 버퍼에 저장한
데이터를 필요할 때 직접 접근하여 처리하며,
이를 통해 CPU의 개입 최소화 및 전체적인 입출력 속도를 향상시킨다.
DMA 제어기는 버퍼(Buffer), 포인터(Pointer), 카운터(Counter)를 설정하여
데이터 전송을 효과적으로 관리하며, CPU가 명령을 내린 후 직접적인
데이터 전송은 DMA 컨트롤러가 담당하는 구조를 갖는다.
① 블록 단위 데이터 전송
바이트 단위로 데이터를 전송하는 방식은 비효율적이므로,
블록 단위(Block-based) 전송을 사용한다.
이를 통해 I/O 장치는 CPU의 개입(Intervention) 없이
전체 데이터 블록을 메모리와 직접 주고받을 수 있다.
기존의 저속 장치들은 바이트 또는 워드 단위로
데이터를 전송하며, 매번 인터럽트를 발생시키지만,
DMA 방식에서는 블록 단위로 데이터를 전송하며,
블록마다 하나의 인터럽트만 발생한다.
이를 통해 CPU의 부하를 크게 줄일 수 있다.
② CPU와 메모리 접근 조정
컴퓨터 시스템에서는 사용자 작업과
I/O 작업이 동시에 수행될 수 있다.
그러나, 입출력 작업이 시스템에서 중요한 역할을 하므로,
일반적으로 입출력 작업이 더 높은 우선순위를 가지며 먼저 처리된다.
2 . 사이클 스틸링
(Cycle Stealing)
일반적인 메모리는 한 순간에 하나의 워드만 전송할 수 있으므로,
DMA 제어기는 CPU가 메모리를 사용하는 동안 일부 메모리 사이클을
차단하여(Cycle Stealing) 데이터를 전송한다.
이를 통해 CPU와 DMA가 효율적으로 메모리를 공유할 수 있으며,
CPU가 완전히 대기하지 않고도 I/O 작업을 병행할 수 있도록 한다.
그러나, DMA 전송이 진행되는 동안 CPU의 실행 속도가 느려질 수 있다.
이는 DMA가 메모리를 접근하는 동안 CPU가 일시적으로
메모리에 접근하지 못하기 때문이다.
또한, I/O 처리가 더 높은 우선순위를 가지므로, CPU보다 먼저 처리될 수 있다.
이러한 방식은 고속의 입·출력 장치에서 효율적으로 사용되며,
전체적인 시스템 성능을 향상시키는 역할을 한다.
07 명령어 실행 사이클
(Instruction Execution Cycle)
사용자가 컴퓨터에 작업을 시키려면 프로그램을 작성해야 하며,
이를 위해 프로그래밍 언어를 배워야 한다.
프로그램은 각종 명령어와 처리할 수 있는 데이터의 집합체로,
실행되기 위해서는 메인 메모리에 적재되어야 한다.
OS 커널은 항상 메모리에 상주하며,
나머지 공간은 사용자가 실행하는 프로그램들이 차지한다.
CPU는 프로그램의 명령어를 하나씩 가져와서 처리하며,
이를 명령어 실행 사이클(Instruction Execution Cycle)이라고 한다.
명령어 실행 사이클 단계
① 명령어 인출
(Fetch)
프로그램에서 하나의 명령어를 메모리에서 가져오는 과정이다.
이때 프로그램 카운터(PC, Program Counter) 또는
명령어 포인터(IP, Instruction Pointer)가 현재 실행할
명령어의 메모리 주소를 지정하며, 명령어를 가져온 후 자동으로 증가한다.
② 명령어 해독
(Decode)
CPU가 가져온 명령어가
어떤 작업을 수행해야 하는지 해석하는 과정이다.
예를 들어, 덧셈을 해야 하는지,
데이터를 저장해야 하는지 등을 판별한다.
③ 피연산자(데이터) 인출
(Fetch Operand)
명령어를 실행하는 데 필요한
데이터(피연산자)를 메모리에서 가져오는 과정이다.
데이터가 메모리에 저장되어 있으면 이를 불러오고,
레지스터에 저장된 경우 해당 값을 사용한다.
④ 명령어 실행
(Execute)
해석된 명령어를 바탕으로 CPU가 연산을 수행한다.
예를 들어, 덧셈 연산이면 두 수를 더하고,
데이터 이동 명령이면 특정 위치로 데이터를 복사한다.
CPU는 마지막 명령어를 실행할 때까지
이 과정을 반복하며, 프로그램이 종료되면 실행이 끝난다.
⑤ 구슬이 서말이라도 꿰어야 보배
아무리 좋은 재료나 능력이 있어도 그것을
잘 활용하고 정리해야 가치가 있다는 뜻이다.
이 속담을 명령어 실행 사이클과 연결하면,
컴퓨터가 이해할 수 있는 명령어(구슬)가 많아도,
이를 CPU가 순서대로 가져와 해석하고 실행(꿰기)해야
실제로 유용한 프로그램(보배)이 된다는 의미로 해석할 수 있다.
즉, 프로그래밍 언어를 배워서 프로그램을 작성하고,
그 프로그램이 CPU에서 명령어 실행 사이클을 거쳐야만
컴퓨터가 원하는 작업을 수행할 수 있다는 점에서 이 속담과 연결된다.
08 컴퓨터 시스템 구조
처리기(Processor)를 중심으로 분류한 것이다.
1 . 단일 처리기 시스템
Uniprocessor System
Single-Processor System
과거에는 대부분의 컴퓨터 시스템이 단일 처리기를
사용했으며, 하나의 CPU만으로 모든 연산을 수행했다.
오늘날에도 개인용 컴퓨터(PC), 임베디드 시스템, 일부 서버 등
다양한 시스템에서 단일 처리기 구조가 사용된다.
PDA(Personal Digital Assistant)부터
메인프레임(Mainframe)에 이르기까지 적용 범위가 넓다.
이러한 범용 CPU가 하나만 있는 시스템을 단일 처리기 시스템이라고 하며,
모든 작업을 단일 CPU가 순차적으로 처리하는 구조를 갖는다.
2 . 다중 처리기 시스템
(Multiprocessor System)
오늘날 대부분의 컴퓨터 시스템은 두 개 이상의
CPU를 탑재한 다중 처리기 시스템을 사용한다.
다중 처리기 시스템은 점점 더 중요해졌으며, 병렬 시스템(Parallel System)
또는 강결합 시스템(Tightly Coupled System)이라는 용어로도 불린다.
이 시스템은 둘 이상의 CPU가 밀접하게 통신하며, 컴퓨터 버스, 클록,
그리고 경우에 따라 메모리 및 주변 장치를 공유하는 구조를 갖는다.
예를 들어, 두 개 이상의 CPU가 하나의 메인 메모리를 공유하고,
데이터 전송을 위해 동일한 버스를 사용하는 구조가 일반적이다.
이를 통해 연산 성능을 향상시키고,
여러 개의 작업을 동시에 처리할 수 있다.
장점
① 처리량 증가
(Increased Throughput)
같은 시간 동안 더 많은 작업을 수행할 수 있다.
여러 개의 CPU가 동시에 연산을 처리하므로,
단일 처리기 시스템보다 작업 속도가 빠르고 효율적이다.
② 규모의 경제 효과
(Economies of Scale)
고성능 단일 CPU 시스템을 구축하는 것보다
여러 개의 저렴한 CPU를 병렬로 연결하는 것이
더 경제적이며, 높은 성능을 제공할 수 있다.
③ 신뢰성 증가
(Enhanced Reliability)
시스템의 안정성이 향상된다.
한 개의 CPU가 고장 나더라도 나머지 CPU들이 계속 작동하므로
시스템 전체가 멈추지 않고 지속적으로 운영될 수 있다.
이러한 특징은 서버나 미션 크리티컬 시스템에서 특히 중요한 역할을 한다.
09 다중처리기 시스템의 구성
구성 방식은 크게 대칭형과 비대칭형 두 가지로 나뉜다.
1 . 비대칭 다중 처리
(AMP; Asymmetric Multiprocessing)
하나의 주(Master) 처리기가 시스템 전체를 제어한다.
나머지 종속(Slave) 처리기들은 주 처리기의 명령을 수행하거나,
혹은 특정한 태스크를 미리 정의된 방식으로 실행한다.
이 시스템에서는 OS를 실행하는 역할이 오직 주 처리기에 집중되며,
종속 처리기들은 주로 연산 및 특정 작업을 담당하는 구조를 가진다.
즉, 주 처리기는 작업을 스케줄링하고,
종속 처리기에 작업을 할당하여 직접 수행하도록 지시한다.
이러한 주종 관계를 통해 시스템을 관리하며,
CPU 간의 역할이 고정되어 있는 것이 특징이다.
이 방식은 구현이 비교적 간단하여 임베디드 시스템
혹은 초기의 다중 처리 시스템에서 많이 사용되었다.
그러나 마스터 프로세서에 과부하가 걸릴 위험이 있어
현대적인 다중 처리 시스템에서는 대칭형이 더 널리 사용된다.
2 . 대칭적 다중처리
(SMP; Symmetric Multiprocessing)
가장 일반적인 다중처리기 구성 형태로,
모든 프로세서가 동등한 권한을 가지며,
OS를 동시에 실행하면서 각자의 작업을 수행하는 방식이다.
이 구조에서는 프로세서 간에 주종 관계가 존재하지 않으며,
모든 프로세서가 공유 메모리를 사용하여 동일한 자원에 접근할 수 있다.
대표적인 예로 Sun Microsystems의 Solaris OS가 있다.
오늘날 대부분의 고성능 서버, 데이터센터, 클라우드 시스템 등에서 SMP가 널리 사용된다.
10 최근 CPU 설계 경향
최근의 CPU 설계 트렌드는 하나의 칩에
여러 개의 코어(Core)를 포함시키는 것으로,
이는 본질적으로 다중처리기 칩이라고 볼 수 있다.
OS 관점에서 다중코어 CPU는 N개의
독립적인 프로세서를 가진 다중처리기 시스템처럼 동작한다.
이러한 구조는 칩 레벨 멀티프로세서라고도 불린다.
(CMP; Chip Multiprocessor)
대표적인 예로 듀얼 코어, 쿼드 코어, 옥타 코어 CPU 등이 있으며,
오늘날 거의 모든 컴퓨터 및 모바일 장치에서 사용되고 있다.
블레이드 서버
(Blade Server)
최신의 고성능 컴퓨팅 아키텍처로,
여러 개의 프로세서 보드(블레이드)와 입·출력 보드,
네트워크 보드가 하나의 섀시(Chassis)에 장착되는 형태를 갖는다.
이전의 전통적인 다중처리기 시스템과 비교할 때,
블레이드 서버는 다음과 같은 차이점을 가진다.
① 각 블레이드(Blade) 서버는 독립적으로
부팅이 가능하며, 자체 OS를 실행할 수 있다.
② 여러 개의 독립적인 다중처리기 시스템이
하나의 블레이드 서버 섀시에 통합될 수 있다.
이러한 특성 덕분에, 블레이드 서버는
데이터센터, 클라우드 컴퓨팅, 슈퍼컴퓨터 환경에서 널리 활용된다.
특히 대규모 블레이드 서버 시스템에서 1만 개 이상의
프로세서를 구성할 경우, 슈퍼컴퓨터 수준의 성능을 발휘할 수 있다.
[교제] 운영체제 제 10판
[퍼널의 출처] Examples - Apache ECharts
'2025 - 1학기 > 플랫폼OS' 카테고리의 다른 글
OS 명령어 처리 과정 (4) | 2025.04.13 |
---|---|
OS 서비스 (4) | 2025.04.11 |
커널의 자료구조 (5) | 2025.04.09 |
클러스터형 컴퓨터 (2) | 2025.04.07 |
운영체제(OS) (6) | 2025.03.11 |