책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 컴퓨터 공학 > 컴퓨터공학/전산학 개론
· ISBN : 9791188831029
· 쪽수 : 390쪽
· 출판일 : 2018-02-08
책 소개
목차
PREFACE iii
교재의 구성 v
강의계획표 vii
CHAPTER 1 컴퓨터 구조 개론 1
1.1 컴퓨터의 종류 3
1.2 컴퓨터 전원을 켜면 어떤 일이? 5
1.3 컴퓨터 구조 개괄 6
PART 1 논리 회로 관점에서의 컴퓨터 구조
CHAPTER 2 컴퓨터 내부의 데이터 표현 11
2.1 컴퓨터에서 사용하는 수 13
2.1.1 정보 표현의 단위 13
2.2 진법(numeral system) 15
2.2.1 10진법 16
2.2.2 2진법, 8진법, 10진법, 16진법 18
2.3 정수의 표현 20
2.3.1 2진수로 변환: 정수 부분의 변환 21
2.3.2 2진수로 변환: 소수 부분의 변환 23
2.3.3 각 진법 간의 숫자 표현 연습 24
2.3.4 부호없는 정수(unsigned integer: 0과 자연수) 32
2.3.5 부호있는 정수(signed integer) 35
2.3.6 심화 정수 연산 46
2.4 실수의 표현 47
2.4.1 고정 소수점 표현 방법 53
2.4.2 부동 소수점(浮動小數點, floating point) 표현 방법 54
2.4.3 심화 부동 소수점 연산 64
2.5 문자의 표현 66
2.5.1 ASCII 코드 67
2.5.2 유니코드(Unicode) 69
CHAPTER 3 논리 회로 기초 77
3.1 논리 회로를 시작하며 79
3.1.1 기계어 프로그래밍 80
3.1.2 기계어 밑에는 무엇이 있을까? 82
3.1.3 논리 회로 기초 86
3.2 기본 게이트 89
3.2.1 반도체 게이트 이전에는 무엇이 계산에 사용되었을까? 92
3.3 논리 회로 표현 방식 기초 94
3.3.1 간단한 경우 #1 94
3.3.2 간단한 경우 #2 96
3.3.3 논리식/ 논리도/ 진리표 99
3.3.4 논리 회로의 2가지 종류: 조합 논리 회로/ 순서 논리 회로 102
CHAPTER 4 조합 논리 회로 105
4.1 조합 논리 회로를 만들자 107
4.1.1 불 대수 법칙 108
4.1.2 And-Or/Or-And 회로 111
4.1.3 논리식(부울식: boolean expression)의 간소화 113
4.2 논리식의 간소화: Karnaugh map(K-map) 115
4.2.1 2개의 입력 117
4.2.2 3개의 입력 119
4.2.3 Don’t Care 조건 122
4.2.4 4개의 입력 123
4.2.5 Don’t Care 실용적인 예제 127
4.2.6 Dual K-Map 131
4.2.7 입력이 4개 보다 많은 경우 133
4.2.8 NAND 게이트 134
4.3 조합 논리 회로 실습 136
4.3.1 다양한 시뮬레이션 예제 139
4.3.2 회로 제작 실습 문제 140
4.4 디지털 부품 141
4.4.1 작동 구동 신호(Enabling Lines) 141
4.4.2 멀티플렉서 (multiplexer)와 디-멀티플렉서(de-multiplexer) 143
4.4.3 이진 디코더(binary decoder)와 이진 인코더(binary encoder) 146
CHAPTER 5 순서 논리 회로(순차 논리 회로) 153
5.1 Stable(안정)/Unstable(불안정) 155
5.1.1 SR latch 156
5.1.2 SR flip-flop 160
5.2 다양한 종류의 플립플랍 167
5.2.1 SR 플립플랍 167
5.2.2 JK 플립플랍 169
5.2.3 D 플립플랍 170
5.2.4 T 플립플랍 172
5.3 순서 논리 회로를 만들자: 카운터(counter) 회로 예제 173
5.3.1 비동기식 카운터 174
5.3.2 동기식 카운터 177
5.4 순서 논리 회로 실습 180
5.4.1 프로그램 사용법 익히기 180
5.4.2 플립플랍의 사용 예 181
5.4.3 비동기식 카운터 182
5.4.4 동기식 카운터 183
PART2 하드웨어 관점에서의 컴퓨터 구조
CHAPTER 6 컴퓨터 하드웨어 189
6.1 하드웨어 구성 요소 191
6.2 중앙처리장치(CPU: Central Processing Unit) 192
6.2.1 레지스터(registers) 193
6.2.2 산술/논리 연산 장치(Arithmetic and Logic Unit: ALU) 200
6.2.3 제어 장치(control unit) 215
6.2.4 파이프라이닝 225
6.2.5 CISC/RISC 226
6.3 버스(bus) 228
6.4 기억(저장) 장치 231
6.4.1 내부 메모리(internal memory) 232
6.4.2 외부 메모리(external memory/ 보조 기억 장치) 238
6.4.3 캐쉬 메모리(cache memory) 243
6.5 입출력 장치(I/O Device) 249
6.5.1 입출력 장치 250
6.5.2 입출력 장치의 제어 방식 255
6.5.3 인터럽트 258
CHAPTER 7 기계어 프로그래밍을 통한 컴퓨터 구조 이해 265
7.1 가상 머신의 구조 267
7.1.1 Pep/8 가상 머신 267
7.1.2 레지스터 269
7.1.3 메인 메모리 270
7.1.4 입출력 장치 271
7.2 기계어(machine language)와 어셈블리 언어(assembly language) 272
7.2.1 고급 언어의 명령문의 기본적 구조 273
7.2.2 기계어 273
7.2.3 어셈블리 언어 288
7.3 명령어 집합 311
7.3.1 명령어의 구성 312
7.3.2 연산자 코드(op-code) 312
7.3.3 명령어의 형식 313
7.3.4 피연산자의 주소 지정 방식 317
PART3 또 다른 컴퓨터들…
CHAPTER 8 가상머신(Virtual Machines) 331
8.1 NOX: 안드로이드 가상 머신 333
8.2 VirtualBox 335
8.3 자바 가상 머신 341
CHAPTER 9 병렬 컴퓨터(parallel computer) 349
9.1 단일 프로세서/멀티 프로세서 351
9.2 병렬 컴퓨터 종류 356
9.3 OpenMP를 이용한 병렬 프로그래밍 358
9.3.1 OpenMP 개발 환경 구축 362
9.3.2 OpenMP를 이용한 실제 예제 363
CHAPTER 10 클라우드 컴퓨팅(Cloud Computing) 365
10.1 클라우드 컴퓨팅 주요 기술 368
10.2 Google Drive 서비스(SaaS) 369
10.3 Google Compute Engine(PaaS) 372
10.4 개발자를 위한 가상 머신: 클라우드9(PaaS) 379
INDEX 383
저자소개
책속에서
‘컴퓨터 구조’라는 과목은 컴퓨터 분야의 아주 중요한 과목이다. 그런데,‘컴퓨터 구조’를 이야기하기 전에 ‘컴퓨터’가 무엇인가를 먼저 정해야 할 것 같다. 그 이유는 기술이 발전함에 따라 ‘컴퓨터’를 바라보는 관점이 달라지
고, 이에 따라 그 해답도 달라질 수 있기 때문이다.
컴퓨터 기술이 급속도로 발전하고 대중화 됨에 따라, 점점 컴퓨터의 의미가 ‘가정 에서의 TV’, ‘손 안의 장난감’이 되어가고 있다. TV의 개발/사용 초기에는 TV의 제작 기술이 가장 중요한 이슈였지만, 지금은 대부분의 사
람들이 TV의 구조에 대해서는 관심이 없고, TV를 통해 제공되는 콘텐츠에 더 관심이 많은 것처럼, ‘컴퓨터 구조’ 또한 이미 기술적 관심의 대상에서 조금씩 멀어져 가고 있다고 생각한다. 즉, 이제는 조금 더 많은 비중을 컴
퓨터를 이용해서 제공할 수 있는 서비스를 고려한 컴퓨터 구조 학습이 필요하다고 생각된다.
예를 들어 보자. 30~40년 전(1980년대 초반)의 개인용 컴퓨터는 IBM XT 계열이었다. 그 당시의 컴퓨터는 하드웨어가 그리 복잡하지 않았으며, 운영 체제 또한 지금에 비해 아주 간단했다. 또한 프로그래밍 언어의 문법만 익히면, 소프트웨어 프로그래밍이라는 작업도 모두 프로그래머의 머리에서 나오는 작업이었다. 오픈 소스(open source)… 이러한 것들은 관심이 적었던 시절이었다.
이제 2010년대 후반으로 와보자. 지금의 개인용 컴퓨터의 하드웨어의 속도 및 저장 용량을 그때와 단순 비교하면, 지금의 컴퓨터는 그 당시에 비해서 수 십만 배의 성능 향상을 보이고 있고, 운영 체제 또한 엄청나게 복잡해지
고 다양한 기능을 지원하고 있다. 또한 프로그래머들은 프로그래밍 언어의 문법을 익힌 후, 다양한 프로그래밍 개발 환경, 개발 플랫폼, 관련 라이브러리 등의 사용법들을 익혀야만 프로그래밍이 가능하다. 또한 지금은 가상
머신(virtual machines)과 가상화(virtualization) 기술로 인하여 물리적인 하드웨어의 구조보다 소프트웨어에 의한 컴퓨터 구조의 중요성이 더욱 중요해지고 있다.
따라서 예전에는 컴퓨터 구조라는 분야가 하드웨어의 기능에 집중해야 했다면, 이제는 프로그래밍 관점에서 집중할 시대다. 물론 컴퓨터의 기본 원리를 이해한다는 면에서는 컴퓨터 구조에 대한 이해는 여전히 필요하지만,
이제는 프로그래머들이 효율적으로 프로그래밍을 하기 위한 지식 기반을 지원해줄 수 있는 컴퓨터 구조의 중요성이 강조되고 있다는 점이다.
이 책에서는 이런 생각을 바탕으로 논리 회로, 하드웨어 면에서의 컴퓨터 구조 등에 대한 내용은 기본적이고 필수적인 내용을 기술하는 것을 목표로 하고, 소프트웨어 프로그래밍 시에 하드웨어 구조를 고려해서 더욱 효율적
인 프로그래밍을 할 수 있는 기법에 대한 부분을 보강하였다. 또한 최근에 활발하게 사용되는 클라우드 상의 가상 머신에 대한 내용도 추가적으로 정리하였다.