Skip to content

Commit fc7a123

Browse files
committed
docs: 운영체제 2
- 운영체제의 핵심 개념과 컴퓨터 성능 향상 기술에 대해 이해합니다
1 parent 24a219e commit fc7a123

File tree

1 file changed

+221
-0
lines changed

1 file changed

+221
-0
lines changed

docs/운영체제/02.md

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
---
2+
sidebar_position: 2
3+
title: 컴퓨터의 구조와 성능
4+
description: 운영체제의 핵심 개념과 컴퓨터 성능 향상 기술에 대해 이해합니다.
5+
---
6+
7+
# 컴퓨터의 구조와 성능
8+
9+
## Executive Summary
10+
11+
본 문서는 컴퓨터 시스템의 기본 구조, 성능 향상 기술, 그리고 현대적인 병렬 처리 방식에 대한 핵심 원리를 종합적으로 설명합니다.
12+
13+
### 핵심 구조: 폰 노이만 구조
14+
15+
컴퓨터 시스템의 근간을 이루는 것은 **폰 노이만 구조**로, 모든 프로그램은 **중앙처리장치(CPU)**에 의해 실행되기 전에 반드시 **메인 메모리**에 적재되어야 합니다. 이 구조적 특징으로 인해 메모리는 시스템의 핵심 작업 공간이며, 효율적인 메모리 관리가 운영체제의 주요 과제가 됩니다.
16+
17+
### 성능 최적화: 저장장치 계층 구조
18+
19+
컴퓨터의 성능은 **저장장치 계층 구조**를 통해 최적화됩니다. 속도가 가장 빠른 레지스터부터 캐시, 메인 메모리, 보조저장장치에 이르기까지 속도, 용량, 비용을 균형 있게 배치하여 시스템 전반의 효율을 극대화합니다. 특히 **CPU****메인 메모리** 간의 속도 차이를 완화하기 위한 **캐시 메모리**는 시스템 성능에 결정적인 역할을 합니다.
20+
21+
### 입출력 관리 기술
22+
23+
**CPU**의 효율을 저해하는 입출력(I/O) 작업을 독립적으로 처리하기 위해 **인터럽트****직접 메모리 접근(DMA)** 기술이 사용됩니다. 이 기술들은 **CPU**가 입출력 완료를 기다리지 않고 다른 연산을 수행할 수 있게 하여 시스템의 전체 처리량을 높입니다.
24+
25+
### 현대적 병렬 처리
26+
27+
현대 컴퓨터 시스템은 **멀티프로세싱**을 통해 성능의 한계를 극복합니다. 단일 칩에 여러 개의 처리 코어를 집적한 **멀티코어 시스템**과 하나의 코어에서 여러 작업 단위(스레드)를 동시에 처리하는 **CPU 멀티스레드** 기술은 병렬 처리 능력의 핵심입니다. 이러한 발전은 **무어의 법칙**을 계승하면서도, **암달의 법칙**에 따라 시스템 전체의 균형 잡힌 성능 향상이 중요함을 시사합니다.
28+
29+
---
30+
31+
## 1. 컴퓨터의 기본 구조와 작동 원리
32+
33+
컴퓨터 시스템은 상호작용하는 하드웨어 구성 요소들의 집합체이며, 그 작동은 **폰 노이만 구조**라는 핵심 원리에 기반합니다. 프로그램이 실행되는 과정은 고급언어에서 기계어로 변환되는 체계적인 단계를 거칩니다.
34+
35+
### 1.1 하드웨어 구성 요소
36+
37+
컴퓨터 하드웨어는 기능에 따라 **필수 장치****주변 장치**로 구분됩니다.
38+
39+
#### 필수 장치
40+
41+
- **중앙처리장치(CPU)**: 프로그램의 명령어를 해석하고 연산을 실행하는 컴퓨터의 두뇌
42+
- 제어장치, 산술논리 연산장치(ALU), 레지스터로 구성
43+
- **메인 메모리(주기억장치)**: 작업에 필요한 프로그램과 데이터를 저장하는 핵심 작업 공간
44+
- 바이트 단위로 주소가 부여됨
45+
46+
#### 주변 장치
47+
48+
- **입력 장치**: 외부 데이터를 컴퓨터로 입력하는 장치 (예: 키보드, 마우스)
49+
- **출력 장치**: 처리 결과를 사용자가 인지할 수 있는 형태로 출력하는 장치 (예: 모니터, 프린터)
50+
- **저장 장치(보조저장장치)**: 메모리보다 속도는 느리지만 용량이 크고 저렴하며, 전원이 꺼져도 데이터가 영구적으로 보존됨
51+
- **자성 이용**: 하드디스크, 플로피디스크
52+
- **레이저 이용**: CD, DVD, Blu-ray
53+
- **메모리 이용**: USB 드라이버, SD 카드, SSD
54+
55+
#### 메인보드
56+
57+
**CPU**, 메모리 등 모든 부품을 연결하는 기반이 되는 회로 기판으로, 각 장치들은 **버스(bus)**라는 데이터 통로를 통해 연결됩니다.
58+
59+
### 1.2 폰 노이만 구조 (Von Neumann Architecture)
60+
61+
현대 컴퓨터 시스템의 기본 모델로, **CPU**, 메모리, 입출력장치, 저장장치가 **버스**로 연결된 구조를 말합니다. 이 구조의 가장 큰 특징은 **프로그램 내장 방식**으로, 모든 프로그램은 실행되기 위해 반드시 보조저장장치에서 **메인 메모리**로 옮겨져야(적재되어야) 한다는 점입니다. 이로 인해 **메인 메모리**는 시스템의 유일한 작업 공간이 되며, 메모리 공간의 크기와 관리 방식이 시스템 성능에 직접적인 영향을 미칩니다.
62+
63+
#### "요리사 모형" 비유
64+
65+
- **요리사**: `CPU`
66+
- **도마**: `메인 메모리`
67+
- **보관 창고**: `보조저장장치`
68+
69+
요리사가 요리를 하려면 재료를 보관 창고에서 도마 위로 가져와야 하듯이, **CPU**가 프로그램을 실행하려면 데이터를 저장장치에서 메모리로 가져와야 합니다. 도마가 작으면 재료를 한 번에 다 올릴 수 없어 작업 효율이 떨어지는 것처럼, **메인 메모리**가 작으면 컴퓨터 속도가 느려집니다.
70+
71+
### 1.3 프로그램 실행 과정
72+
73+
프로그램은 소스 코드 작성부터 컴퓨터가 이해하는 기계어 코드로 변환되어 실행되기까지 여러 단계를 거칩니다.
74+
75+
| 용어 | 설명 |
76+
| --------------------------- | ---------------------------------------------------------------------------------------------------- |
77+
| **고급 언어** | 사람이 이해하기 쉬운 단어와 문법으로 구성된 프로그래밍 언어 (예: C, Java) |
78+
| **저급 언어** | 기계가 이해하기 쉬운 언어로, 어셈블리어와 기계어가 포함됨 |
79+
| **컴파일러(Compiler)** | 고급 언어로 작성된 소스 코드 전체를 기계어로 번역하여 실행 파일을 생성하는 프로그램 |
80+
| **인터프리터(Interpreter)** | 소스 코드를 한 줄씩 번역하여 즉시 실행하는 프로그램. 실행 파일을 생성하지 않음 |
81+
| **어셈블러(Assembler)** | 어셈블리어를 기계어로 번역하는 프로그램 |
82+
| **링커(Linker)** | 컴파일된 목적 프로그램(오브젝트 코드)과 라이브러리 파일 등을 연결하여 하나의 실행 가능한 모듈을 생성 |
83+
| **로더(Loader)** | 실행 가능한 프로그램을 보조저장장치에서 메인 메모리로 적재하여 실행을 준비하는 시스템 소프트웨어 |
84+
85+
> **데이터 구조**: 운영체제에서는 데이터를 효율적으로 관리하기 위해 `큐(FIFO)`, `스택(LIFO)`, `배열`, `연결 리스트` 등의 자료구조를 필수적으로 사용합니다.
86+
87+
---
88+
89+
## 2. 중앙처리장치(CPU)와 메모리
90+
91+
**CPU**는 명령어 처리의 주체이며, 메모리는 그 작업 공간입니다. 두 장치의 긴밀한 상호작용이 컴퓨터의 모든 연산을 가능하게 합니다.
92+
93+
### 2.1 CPU의 내부 구조와 동작
94+
95+
**CPU**는 세 가지 핵심 요소로 구성되어 협업을 통해 명령어를 처리합니다.
96+
97+
| 구성 요소 | 역할 | 요리사 모형 비유 |
98+
| --------------------------- | ---------------------------------------------------------------- | ---------------- |
99+
| **산술논리 연산장치(ALU)** | 덧셈, 뺄셈 등 산술 연산과 AND, OR 등 논리 연산을 수행 | 요리 |
100+
| **제어 장치(Control Unit)** | CPU 내외부 장치에 작업 지시 신호를 보내고 전체 흐름을 제어 | 작업 지시 |
101+
| **레지스터(Register)** | 연산에 필요한 데이터를 CPU 내부에 임시로 보관하는 고속 저장 공간 | 재료 임시 보관 |
102+
103+
### 2.2 주요 레지스터의 종류와 역할
104+
105+
레지스터는 용도에 따라 **범용 레지스터****특수 목적 레지스터**로 나뉩니다.
106+
107+
| 구분 | 레지스터 | 특징 |
108+
| -------- | ------------------------------ | --------------------------------------------- |
109+
| **범용** | **데이터 레지스터 (DR)** | 메모리에서 가져온 데이터를 임시로 저장 |
110+
| | **주소 레지스터 (AR)** | 데이터나 명령어가 저장된 메모리 주소를 저장 |
111+
| **특수** | **프로그램 카운터 (PC)** | 다음에 실행할 명령어의 메모리 주소를 저장 |
112+
| | **명령어 레지스터 (IR)** | 현재 실행 중인 명령어를 저장 |
113+
| | **메모리 주소 레지스터 (MAR)** | CPU가 접근하려는 메모리 주소를 저장 |
114+
| | **메모리 버퍼 레지스터 (MBR)** | 메모리에서 읽어오거나 쓸 데이터를 임시로 저장 |
115+
116+
### 2.3 메모리 종류와 메모리 보호
117+
118+
메모리는 전원 유지 여부에 따라 **휘발성 메모리****비휘발성 메모리**로 구분됩니다.
119+
120+
#### 휘발성 메모리 (RAM)
121+
122+
전원이 꺼지면 데이터가 사라집니다.
123+
124+
- **DRAM**: 주기적으로 데이터 재충전이 필요하며, 일반적인 메인 메모리로 사용됨
125+
- **SRAM**: 전원이 공급되는 동안 데이터를 유지하며, 속도가 빨라 캐시 메모리에 사용됨
126+
127+
#### 비휘발성 메모리 (ROM)
128+
129+
전원이 꺼져도 데이터가 유지됩니다.
130+
131+
- **플래시 메모리**: SSD, USB 드라이버 등에 사용됨
132+
- **롬(ROM)**: 주로 바이오스(BIOS)와 같이 변경 가능성이 거의 없는 시스템 정보를 저장
133+
134+
#### 메모리 보호
135+
136+
시분할 시스템에서는 여러 프로그램이 메모리를 공유하므로, 한 프로세스가 다른 프로세스나 운영체제의 영역을 침범하지 못하도록 보호해야 합니다. 이를 위해 **CPU**는 하드웨어적으로 **경계 레지스터(Bound Register)****한계 레지스터(Limit Register)**를 사용하여 현재 실행 중인 프로세스가 접근할 수 있는 메모리 주소 범위를 제한하고 감시합니다.
137+
138+
---
139+
140+
## 3. 컴퓨터 성능 향상 기술
141+
142+
컴퓨터 시스템은 **CPU**, 메모리, 저장장치 등 속도가 다른 장치들 간의 병목 현상을 해결하고 전반적인 처리 효율을 높이기 위해 다양한 기술을 사용합니다.
143+
144+
### 3.1 속도 차이 완화: 버퍼와 캐시
145+
146+
#### 버퍼(Buffer)
147+
148+
속도가 다른 두 장치 간에 데이터를 일시적으로 저장하여 속도 차이를 완화하는 메모리 공간입니다.
149+
150+
#### 스풀(Spool)
151+
152+
**CPU**와 입출력장치가 독립적으로 동작하도록 하는 소프트웨어적 버퍼입니다. 대표적인 예로 **프린터 스풀러**가 있으며, 인쇄 데이터를 스풀에 저장해두고 **CPU**는 다른 작업을 계속할 수 있게 합니다.
153+
154+
#### 캐시(Cache)
155+
156+
**CPU****메인 메모리** 사이의 속도 차이를 극복하기 위해 사용되는 고속 임시 저장 장소입니다.
157+
158+
**작동 원리**: **CPU**는 메모리 접근 전 캐시를 먼저 확인합니다. 원하는 데이터가 캐시에 있으면 **캐시 히트(Cache Hit)**, 없으면 **캐시 미스(Cache Miss)**가 발생합니다. 캐시 히트 비율(적중률)이 높을수록 성능이 향상됩니다.
159+
160+
**쓰기 정책**:
161+
162+
- **즉시 쓰기(Write-through)**: 캐시 데이터 변경 시 즉시 메모리에 반영하여 데이터 일관성을 유지하지만 속도가 느림
163+
- **지연 쓰기(Write-back)**: 변경된 내용을 모아 주기적으로 메모리에 반영하여 속도는 빠르지만, 일시적인 데이터 불일치가 발생할 수 있음
164+
165+
**계층 구조**: **CPU**와 가까운 순서대로 `L1 캐시`(명령어/데이터 분리)와 `L2 캐시`(일반)로 구성되어 계층적으로 데이터를 관리합니다.
166+
167+
### 3.2 저장장치 계층 구조 (Storage Hierarchy)
168+
169+
속도가 빠르고 비싼 저장장치를 **CPU** 가까이에, 느리고 저렴한 대용량 저장장치를 바깥쪽에 배치하는 구조입니다. 이를 통해 사용자는 합리적인 비용으로 빠른 속도와 큰 저장 공간을 동시에 확보할 수 있습니다.
170+
171+
**계층**: `레지스터` > `캐시` > `메인 메모리` > `보조저장장치`
172+
173+
### 3.3 효율적인 입출력(I/O) 관리
174+
175+
#### 인터럽트(Interrupt)
176+
177+
입출력장치가 작업을 완료했을 때 **CPU**에 완료 신호를 보내는 방식입니다. **CPU**가 주기적으로 장치 상태를 확인하는 **폴링(Polling)** 방식과 달리, **CPU**는 입출력이 진행되는 동안 다른 작업을 처리할 수 있어 시스템 효율이 크게 향상됩니다.
178+
179+
#### 직접 메모리 접근(DMA, Direct Memory Access)
180+
181+
입출력 관리자(**DMA 컨트롤러**)가 **CPU**의 개입 없이 직접 메모리에 접근하여 데이터를 전송하는 기술입니다. 이를 통해 **CPU**는 입출력 관련 부담에서 벗어나 본연의 연산 작업에 집중할 수 있습니다.
182+
183+
#### 사이클 훔치기(Cycle Stealing)
184+
185+
**CPU****DMA**가 동시에 메모리 접근을 시도할 때, 시스템 버스 제어권이 **DMA**에 양보되는 현상입니다. 이는 **CPU**의 사이클을 잠시 "훔치는" 것과 같지만, 전체 시스템 성능 향상에 기여합니다.
186+
187+
---
188+
189+
## 4. 멀티프로세싱과 병렬 처리
190+
191+
단일 프로세서의 성능 향상이 한계에 도달하면서, 여러 개의 처리 장치를 사용하여 작업을 병렬로 수행하는 **멀티프로세싱** 기술이 보편화되었습니다.
192+
193+
### 4.1 멀티프로세서와 멀티코어
194+
195+
#### 멀티프로세서 시스템
196+
197+
하나의 컴퓨터에 두 개 이상의 물리적인 **CPU**를 장착하여 성능을 높이는 시스템입니다. 모든 프로세서는 **메인 메모리**를 공유합니다.
198+
199+
#### 멀티코어 시스템
200+
201+
단일 **CPU** 칩 내에 여러 개의 핵심 처리 장치, 즉 **코어(Core)**를 집적한 구조입니다. 이를 통해 물리적인 공간을 절약하면서 **멀티프로세싱**과 유사한 효과를 얻습니다. (예: 듀얼코어, 쿼드코어)
202+
203+
### 4.2 CPU 멀티스레드와 명령어 병렬 처리
204+
205+
#### 명령어 병렬 처리
206+
207+
하나의 코어 내에서 여러 개의 명령어를 동시에 처리하는 기술입니다.
208+
209+
#### CPU 멀티스레드
210+
211+
하나의 코어가 여러 개의 **스레드(Thread)**, 즉 작업의 논리적 단위를 동시에 처리하여 코어의 활용률을 극대화하는 기술입니다. 현대의 **CPU****멀티코어****멀티스레드** 기술을 결합하여 높은 병렬 처리 성능을 제공합니다.
212+
213+
### 4.3 성능 관련 법칙
214+
215+
#### 무어의 법칙(Moore's Law)
216+
217+
반도체 집적회로의 성능이 24개월마다 2배로 증가한다는 법칙입니다. 최근에는 클럭 속도 향상 대신 코어 수를 늘리는 방식으로 이 법칙을 이어가고 있습니다.
218+
219+
#### 암달의 법칙(Amdahl's Law)
220+
221+
시스템의 일부만 개선될 때 전체 시스템의 성능 향상은 그 개선된 부분의 비율에 의해 제한된다는 법칙입니다. 즉, **CPU** 속도를 아무리 높여도 메모리나 저장장치 등 다른 부분의 속도가 따라오지 못하면 전체 성능 향상에는 한계가 있습니다. 이는 시스템의 균형 잡힌 발전이 중요함을 시사합니다.

0 commit comments

Comments
 (0)