SlideShare a Scribd company logo
부산대학교 공과대학
전기컴퓨터공학부
컴퓨터 시스템과 C 언어 소개
강의 목표와 구성
컴퓨터 시스템과 프로그램의 이해
 Universal Computing Device and Turing Machine
 컴퓨터 시스템 : H/W + S/W
 Sequence of Instructions ( 명령어 순차 조합 )
 컴퓨터를 활용한 문제 해결 – Transformations between layers of abstraction
 Algorithm 의 속성
C 언어 소개와 컴파일의 이해
 프로그래밍 언어 분류
 C 언어 소개
 Compiled Language vs. Interpreted Language
 C 언어 컴파일과 Python 언어 인터프리트 비교하기
 Von Neumann Architecture
컴퓨터 시스템과 프로그램의 이해
4
Introduction to the World of Computing
Computer: electronic genius?
 NO! Electronic idiot!
 Does exactly what we tell it to, nothing more.
Hardware vs. Software
 It’s not either/or – both are components of a computer system.
 Even if you specialize in one,
you should understand capabilities and limitations of both.
Computer is a Universal Computing Device
 It is not limited to perform only a specific computation,
It can perform any computation
 The idea of a universal computational device is due to Alan Turing.
5
Turing Machine
Mathematical model of a device that can perform any
computation
 proposed by Alan Turing in 1937
 While he gave a mathematical description of this kind of machine, but did not
actually build one
Every computation can be performed by some Turing
machine.
Examples / Black Box Model
TADD
𝑎 ,𝑏 𝑎+𝑏
TMUL
𝑎× 𝑏
Turing machine that adds Turing machine that multiplies
𝑎 ,𝑏
6
Universal Turing Machine
A machine that can simulate all Turing machines
 This is also a Turing machine
Inputs : data + a description of computation (other TMs)
Universal Turing Machine is Programmable !!!  So is
Computer !!!
 A computer can emulate a Universal Turing Machine
U
𝑎,𝑏,𝑐 𝑐×(𝑎+𝑏)
Universal Turing Machine
Tadd, Tmul
7
Alan Turing ( 출처 Wikipedia)
 생애
 1912 년 출생 , 1931 년 케임브리지 대학 수학사 학위 취득 ,
1936 년 미국 프린스턴 대학에서 박사 학위 취득 .
 1937 년 튜링 기계 개념을 도입한 논문 “계산 가능한 수와 결정할 문제에의 응용”을 발표 , 1938
년 영국 정부 암호학교 부임 , 1939 년 독일군의 에니그마 암호 해독기 개발
 동성애자 혐의로 체포된 후 1954 년 독이 든 사과를 먹고 죽음 .
 튜링은 수학 , 암호학 , 생물학 등 많은 분야에서 다양한 연구 활동을 했지만 특히 컴퓨터 과학 분야에 끼친 영향이
크기 때문에 컴퓨터 과학 및 전산학의 아버지라고 불린다 . 그가 구상한 튜링 기계의 무한히 긴 띠는 컴퓨터의
메모리에 , 기호를 읽는 기계는 컴퓨터의 CPU 에 비유할 수 있다 . 또한 튜링 기계의 한 종류인 범용 튜링 기계는
프로그램을 내장해서 작동하는 현대의 컴퓨터를 많이 닮아 있다 . 미국컴퓨터학회 ACM 에서는 튜링의 공로를
기리기 위하여 1966 년부터 매년 컴퓨터 과학에 중요한 업적을 남긴 사람들한테 주는 튜링상을 제정하였다 . 현재
튜링상은 컴퓨터 과학 분야의 노벨상이라고도 불린다 .
애플 컴퓨터의 로고인 ' 한 입 베어먹은 사과 ' 는 튜링을 연상시키지만 ,
애플 컴퓨터가 로고를 만들 때 튜링을 염두에 두고 만들었는지는 확실하지 않다 .
현재 애플 컴퓨터에서는 로고의 모델이 뉴턴의 사과라고 주장한다 .
8
컴퓨터 시스템
컴퓨터 시스템은 사용자 요구에 따른 임의의 다양한 계산을
수행할 수 있는 장치로 개발되었다 .
H/W S/W
컴퓨터 시스템은 하드웨어와 소프트웨어로 이루어진다
컴퓨터 시스템
• 컴퓨터 H/W 로 수행할 수 있는 계산은
명령어 (Instruction) 라 불리는 한정된
기초 연산에 불과하다 .
• H/W 만으로는 사용자가 요구하는 임의의
다양한 계산을 수행할 수 없다 .
• 명 령 어 를 조 합 하 여 순 차 적 으 로
실행하면 사용자가 요구하는 임의의 다양한
계산을 실현할 수 있다 .
• 컴퓨터 시스템에서 S/W 란 특정 계산을
위해 수행하는 명령어 조합과 관련 데이터
모음이다 .
9
Operation and Instruction
 Operation( 연산 ) : Operator( 연산자 ) 와 Operand( 피연산자 ) 로 구성
 Instruction( 명령어 ) : Opcode( 명령코드 ) 와 Operand ( 피연산자 ) 로 구성
 컴퓨터 명령어의 피연산자는 연산에 쓰이는 값 (Literal) 또는 저장소 / 메모리
(Memory)
 Example) 저장소 A 에 저장된 값과 7 을 더한 것을 저장소 R1 에 저장하는 명령
• 많은 저장소 / 메모리 중 특정 저장소 / 메모리를
ADD A 7 R1
Opcod
e
Operand
ADD P1 P2 P3 P3P1+P2
Opcod
e
Operand
MUL P1 P2 P3 P3P1×P2
A + B A × B
Operan
d
Operato
r
Operan
d
Operan
d
Operato
r
Operan
d
저장소
이름 / 주소
저장소 /
메모리에
저장된 값
A
R1
+ 7
10
Sequence of Instructions
 명령어 조합을 통한 복잡한 계산 수행 예
 저장소 A, B 의 값에 대해 아래와 같은 계산을 수행하고 그 결과를 저장소 C 에 저장하고자
한다 .
 그런데 대상 컴퓨터에는 이 계산을 바로 수행할 수 있는 연산 기능은 없다 .
 대상 컴퓨터는 앞 장에서 소개한 ADD, MUL 두 가지 명령어를 지원한다 .
 대상 컴퓨터에는 저장소 A, B, C 외에 R1, R2 라는 추가 저장소를 임의로 사용할 수 있다고 가정한다 .
 ADD, MUL 로 구성된 아래와 같은 Sequence of Instructions ( 명령어 순차 조
합 ) 의 실행을 통해 원하는 ( 복잡한 ) 계산을 수행할 수 있다 .
① MUL A A R1
② MUL A B R2
③ ADD R1 R2 C
저장소
이름 / 주소
저장소 /
메모리에
저장된 값
A
B
C
R1
R2
×
×
+
①
②
③
11
Sequence of Instructions 예제 풀이
 사용자가 원하는 계산이 다음과 같을 때
이를
실현하는 명령어 순차 조합을 작성하라 .
• 이전 예와 같이 추가 저장소 R1, R2 를 사용할 수
있다 .
 당신은 계산 수행을 위해 몇 개의 명령어를
사용하였는가 ?
• 동일한 기능을 더 적은 수의 명령어를 사용하여
실현하면 보다 빠르게 목적을 달성
• 알고리즘 (Algorithm) 의 필요성
Opcode Operands
①
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
⑪
⑫
⑬
⑭
?
!
12
Lego Blocks  Instructions
H/W
Ideas  Sequence of Instructions/ Program
S/W
13
How do we get the electrons to do the work ?
 How do we solve a problem using a computer ?
A systematic sequence of transformations between layers of
abstraction.
Problems
Algorithm
Program
ISA
(Instruction Set Architecture)
Devices
Micro-architecture
Logic Circuits
stated using "natural
language".
may be ambiguous, imprecise.
express the algorithm using a
computer language
• high-level language, low-level
language
a step-by-step procedure,
guaranteed to finish
specifies the set of
machine instructions
the computer can perform
Software Design:
choose algorithms
& data structures
Programming:
use language to express design
Compiling/
Interpreting:
convert language to
machine instructions
Processor Design:
choose structures to implement ISA
Logic/Circuit Design:
gates and low-level circuits to
implement components
Process Engineering
& Fabrication:
develop and manufacture
lowest-level components
14
Properties of an Algorithm
 An algorithm is a step-by-step procedure that is guaranteed to terminate,
such that each step is precisely stated and can be carried out by the
computer.
 Definiteness :
 Each step must be precisely defined; the actions to be carried out must be rigorously and
unambiguously specified for each case.
 Ex) In a recipe for pancakes : "stir until lumpy". Does it meet "definiteness" ?
 Effective Computability :
 All operations to be performed must be sufficiently basic that they can be done exactly
and in finite length
 Ex) "Take the largest prime number". Does it meet "effective computability" ?
 Finiteness :
 The algorithm must always terminate after a finite number of steps.
 Ex) "Divide x by 2, repeat it until x has a value of 1". Does it meet "finiteness" ?
 Input
 An algorithm has zero or more inputs, taken from a specified set of objects.
 output
 An algorithm has one or more outputs, which have a specified relation to the inputs
15
Many Choices at Each Level
Solve a system of equations/ 연립방정식
Gaussian
elimination
Jacobi
iteration
Red-black SOR Multigrid
FORTRAN C C++ Java
Intel x86
PowerPC Atmel AVR
Centrino Pentium 4 Xeon
Ripple-carry adder Carry-lookahead adder
CMOS Bipolar GaAs
Tradeoffs:
비용 ,
성능 ,
전력 소모 …
Problem
Algorithm
Program
ISA
Micro Architecture
Circuit
Device
16
 ISA (Instruction Set Architecture)
 이전 슬라이드에서 소개한 ADD, MUL 등은 어셈블리 언어(Assembly Language) 로 표현한
명령
 CPU 가 직접 해독하고 실행할 수 있는 명령어 0 과 1 의 이진 값으로 표현되는 기계어 명령어
• 다음은 예 )
 CPU 가 직접 해독하고 실행할 수 있는 기계 명령어들의 집합 그리고 그 기반 구조 및 체계 
ISA
 ISA 분류
 ISA 는 구조적 특성에 따라 CISC (Complex Instruction Set Computer), RISC (
Reduced Instruction Set Computer) 등으로 분류
 CISC 구조의 대표 CPU/ISA 로 Intel 의 x86 Architecture (Instructions) – PC/Notebook 등에
널리 쓰임
C 언어 소개와 컴파일의 이해
18
프로그래밍 언어와 분류
 프로그래밍 언어 - 프로그램을 작성하기 위한 언어
 사람이 컴퓨터에게 시키고 싶은 내용을 표현하기 위한 표기법
 인간 친화성 수준에 따라 기계어 (Machine Code/Language), 어셈블리어 (Assembly
Language), 고급 언어 (High-Level Language) 로 분류
 기계어
 이진수 코드로 CPU 마다 고유의 기계어  ISA
 어셈블리어
 기계어 이진수 코드를 사람이 이해하기 쉬운 기호화 코드 (mnemonics) 로 대치한 것
 Symbolic Machine Code 로도 불림
• 참고 ) 많은 경우 기계어 코드와 어셈블리어 기호 사이에 1:1 의 대응 관계에 있지만 그렇지 않은 경우도 있음 .
 고급 언어
 영어와 비슷한 구문으로 표현되며 , 사람이 읽고 쓰기가 보다 쉽다
 기계어에 독립적이며 프로그래머가 기계의 세부사항 (ISA) 을 알 필요가 없게 해준다 .
 C/C++, Python, Java 등이 고급 언어의 예
 대비의 관점에서 어셈블리어나 기계어를 저급 언어 (Low-Level Language) 라고도 함
19
기계어 , 어셈블리어 , 고급 언어
 보통 프로그래머는 고급 언어로 프로그램의 소스 코드 (Source Code) 를 작성하고
컴파일링 (Compiling) 이라는 과정을 통해 기계가 해독하여 처리할 수 있는
기계어 형식의 이진실행파일 (Binary Executable) 로 변환한다 .
 이진실행파일 형태의 프로그램을 운영체제를 이용하여 적재하고 실행한다 .
분류 Example 의미
High-Level
Language
X = Y + Z Store the value of Y + Z to X
Assembly
Language
LOAD Y
ADD Z
STORE X
Load the value of [0010] to AC
Add the value of [0101] to AC
Store the value of AC to [0110]
Machine
Language
1010 0010
1100 0101
1011 0110
Load the value of [0010] to AC
Add the value of [0101] to AC
Store the value of AC to [0110]
사람
친화적
기계
친화적
Compiling
20
기계어와 이식성
Portability ( 이식성 )
 프로그램을 다른 기계 / 플랫폼에서 활용하기 위해 필요한 수정이나 변경의 수준
 High Portability : 수정 , 변경이 거의 없이 프로그램을 사용할 수 있는 것
기계어로 작성된 프로그램은 이식성이 매우 낮음
 CPU 마다 다른 기계어 (ISA) 를 사용하기 때문
고급 언어의 경우 상대적으로 이식성이 높음
 단 다른 CPU/ISA 에서 사용하기 위해서는
소스 코드를 다시 컴파일 하여
해당 CPU/ISA 에 적합한 이진실행파일을
생성하여야 함
21
C 언어 소개
Dennis Ritchie 와 Ken Thompson 이 개발
 1969 년 ~ 1973 년 사이 Bell Labs 근무 당시
 UNIX 운영체제 개발에 사용됨
 미국 및 국제 표준으로 제정
• ANSI (American National Standard Institute) C (1989 년 )
C 언어의 특징
 고급 언어의 특성 ( 쉬움 ) 과 저급 언어의 강점 ( 빠르고 효율적 ) 을 겸비
Ken Thompson (left) with
Dennis Ritchie (right, the
inventor of the C programming
language)
Source - Wikipedia
특징 장점
구조화(Structured) 프로그래밍 지원
복잡한 문제를 잘 정의된 여러 개의 작은 함수로 나누어 구성 ,
해결할 수 있다 . 블록 (Block), 함수 (Sub-Routine) 등의 개념을
통해 프로그램 소스 코드의 구조를 이해하기 쉽게 작성하고 읽을 수
있다
이식성 (Portability)
다양한 컴퓨터 플랫폼에서 사용할 수 있다
어셈블리 언어나 기계어에 비교할 때 큰 장점
효율성 (Efficiency)
적은 메모리를 이용하여 빠르게 수행 가능한 프로그램을 작성할 수
있음
다양한 연산자 프로그램을 간결하고 쉽게 작성할 수 있음 . 예 ) x = x+1; → x++;
동적 메모리 (Dynamic Memory)
관리
동적인 메모리 할당과 해제를 통해 임베디드 시스템과 같이 메모리
자원이 제한된 환경에서도 구동할 수 있는 프로그램을 작성할 수
있음
22
Compiled Language vs. Interpreted
Language
 실행 / 목적 파일의 생성 여부가 중요한 차이
 Compiled Language 는 전체 소스 코드를 이진 기계어 코드로 번역하고 그것을 묶어 이진 실행 파일을 생성함
 Interpreted Language 의 경우 소스 코드의 일부 ( 일반적으로 한 문장씩 ) 를 이진 기계어 코드로 번역하고 그
결과를 바로 실행하게 함 . 즉 별도의 이진 실행 파일을 생성하지 않음 .
 Compiled Language 의 경우 실행 / 목적 파일이 있으면 소스코드와 Compiler 가 없어도 실행 가능하지만
Interpreted Language 의 경우 실행을 위해 소스 코드와 Interpreter 가 필요
• 참고 ) Python 소스를 interpretation 하지 않고 Compile 을 통해 실행 파일을
만들 수도 있다 . 이 경우 Python 을 Compiled Language 로 분류할 수 있다 .
비교항목 Compiled Language Interpreted Language
대표 언어 C/C++, Fortran, Cobol Python, Java, Basic
실행 / 목적 파일 생성 생성 안 함
실행 속도 빠름 상대적으로 느림
이식성 (Portability)
상대적으로 낮음 .
ISA 가 다른 컴퓨터에서는 다시 컴파일
해야 함
높음
인터프리터만 있으면 ISA 가 다른
컴퓨터에서도 실행 가능
소스 코드
Interpreter
입력 출력
소스 코드
Compiler
입력 출력
실행 파일
23
C 언어 컴파일 실습 (1)
 탐색기 (Explorer) 를 실행시키고 프로그래밍을 할 작업 폴더를 준비하라
 Ex) F:Workspace
 cmd( 명령 프롬프트 ) 실행하고 작업 폴더로 이동
 Explorer 에서 작업 폴더를 선택하여 그림 1 과 같이
Explorer 에 해당 경로가 표시되면 그림 2 와 같이
cmd 라고 입력하면 해당 폴더에서 명령창 생성
 또는 cmd 실행 후 cd 등의 명령으로 이동
 “gcc” ( 컴파일러 ) 를 실행해 보라
 그림 3 과 같이 실행 결과로 오류 메시지가 출력되지만
실행이 됨을 확인하라 .
 “where gcc” 로 컴파일러 설치 위치를 확인하라 .
그림 1
그림 2
그림 3
24
C 언어 컴파일 실습 (2)
Cmd 에서 “ notepad hello.c” 를 입력하여 hello.c 라는 C 코드
파일을 작업 폴더에 생성하라
Hello.c 를 다음과 같이 작성하고 저장하라 .
 화면에 Hello World !!! 라는 문자열을 출력하는 프로그램
25
C 언어 컴파일 실습 (3)
 “dir” 을 통해 작업 폴더 내에
존재하는 파일을 확인하라 .
 새로 만든 작업 폴더라면 Hello.c 라는 소스
코드 파일만 존재할 것이다 .
 “gcc hello.c” 를 입력하여 컴파일을
수행하라 .
 “dir” 을 통해 컴파일 후 작업 폴더
내에 존재하는 파일을 확인하라 .
 “a.exe” 라는 실행 파일이 생성 되었음을
확인할 수 있을 것이다 .
 “a.exe” 를 실행해보라 .
26
Python Interpretation 실습
 “python” 을 실행하고 Hello World
!!! 출력 코드를 작성해보라 .
 Python shell 이 실행되면서 코드를 입력할
수 있는 Prompt 가 생김을 확인 할 수 있다
 Print 명령문을 활용하여 “ Hello
World !!!” 를 출력해보라
 exit() 로 Python Shell 을 종료시켜라 .
 “Notepad hello.py” 를 실행시키고
위와 동일한 코드를 작성해 보라 .
 “python hello.py” 를 통해 실행
결과를 확인하라 . 실행 파일이
생성되는가 ?
27
컴퓨터 프로그램과 실행
 컴퓨터 프로그램 (Program) 이란 ?
 Sequence of instructions and
related data !!!
 명령어는 기계가 직접 해독하고 실행할 수 있는
이진 값으로 표현되는 기계어 (Machine Code)
 실행 파일 (Executable File) 의 형태로
보조기억장치에 저장 / 설치됨
 프로그램의 실행 과정
 보조기억장치에 저장된 프로그램 실행 파일을
Main Memory 로 적재 (Loading) 하고
 CPU 는 Main Memory 로부터 프로그램의
명령어들을 순차적으로 하나씩 읽어 들여
해석하고 수행하는 방식으로 프로그램을 실행
(Execution)
• 참고 ) 프로그램 적재 / 실행을 수행하는 S/W 
운영체제 (OS : Operating System)
Input
Device
Output
Device
CPU
Main Memory
Secondary
Storage
프로그램
실행파일
Loading
Execution
컴퓨터 H/W 구성 요소
• 중앙처리장치 - CPU (Central Processing Unit)
명령어를 해석하여 실행하는 핵심 구성 요소
• 주기억장치 - Main Memory
프로그램과 데이터를 저장하는 휘발성 기억장치
( 참고 ) 전원이 꺼져도 저장 정보를 유지하는 기억 장치를
비휘발성 (Non-Volatile), 그렇지 못한 장치를 휘발성 (Volatile)
기억 장치라고 함
• 보조기억장치 - Secondary Storage
프로그램과 데이터를 파일의 형태로 저장하는 비휘발성 (Non
Volatile) 기억장치로 HDD, SSD 등이 있음
• 입출력 장치 – Input / Output Device
인간과 컴퓨터의 상호 작용을 도와주는 키보드 , 마우스 ,
모니터와 같은 장치
28
 프로그램과 프로세스의 차이 : Program vs. Process
 A program is an executable file residing on the disk (secondary storage). It is read
into the primary memory and executed by the kernel.
 An executing instance of a program is called a process
 다음을 수행하라 .
 컴퓨터에서 메모장 프로그램의 실행파일을 찾아라 . 확장자 포함 파일 이름이 무엇인가 ?
 프로그램을 실행하여 3 개의 메모장 프로세스를 생성하라 .
?
CPU
Main Memory
Secondary
Storage
29
Bit, Byte, Hexa
 컴퓨터에서 정보는 2 진수로 표현
 예 ) 0100, 11010001
 Bit – Binary Digit
 컴퓨터에서 정보를 표현하는 기본 단위
 1 bit 는 0 또는 1 을 나타낼 수 있으며
bits 는 개의 경우의 수를 표현할 수 있음
 1 Byte = 8 bits
 컴퓨터에서 알파벳 문자 표현을 위해 8
bits 가 필요했던 것으로부터 유래
 1 Byte 는 256 가지의 경우의 수 표현
가능
 Hexa
 16 진수 (Hexa Decimal) 체계
 0, 1, …, 9, A(10), B(11),
C(12), D(13), E(14), F(15)
 긴 2 진수를 짧게 표현 가능 , 하나의
숫자가 4 bits 에 대응
 Hexa 임을 표시하기 위해 앞에 0x 를
덧붙이는 경우가 많음
 예 ) 001010101100  0x2AC
Value Prefix Symbol Value Binary Prefix
=1000 Kilo K =1024 Kibit
Mega M Mibit
Giga G Gibit
Tera T Tibit
Peta P Pibit
Exa E Eibit
Zetta Z Zibit
Yota Y Yibit
30
. . .
Memory Address
 Memory
 bits 를 저장할 수 있는 다수의 Memory Cell 이 연속으로 이어져 있는 것
 대부분의 현대 컴퓨터는 , 즉 Memory Cell 이 1 Byte 를 저장
 Memory Address 의 필요성
 연속된 Memory Cell 중 어떤 Cell 에서 읽거나 쓸지를
표현할 수 있어야 함  Address
 수 많은 방 중 어떤 방 ?
 Memory Address
 컴퓨터에서는 주로 2 진수 또는 Hexa 로 표현
 Memory Address 에 쓰이는 bits 수  , 의 Memory Cell 구별
 값은 전체 메모리 공간의 크기와 관련
 예 ) 인 메모리 공간의 크기는 4GiBytes
10011010
00000000
10011010
00000000
10011010
00000000
10011010
00000000
. . .
Memory Cells
8
000000
000001
000010
000011
111100
111101
111110
111111
. . .
Address
1 2 3 4 5
31
하드디스크는 자기 물질을 표면에 얇게 입힌 금속 재질의 원형 판 (disk, platter) 으로
디지털 정보를 쓰고 읽을 수 있는 데이터 저장 장치다 . 하드디스크는 컴퓨터 전원이
꺼져도 정보가 유지되는 비휘발성 (Non-Volatile) 기억 장치이다 .
하드디스크는 그 표면에 정보를 쓰거나 읽을 때 쓰이는 헤드와 쌍을 이룬다 .
하드디스크 드라이브는 하드디스크를 빠르게 회전 시키고 헤드의 위치를 조절하면서
임의의 위치에 데이터를 읽고 쓸 수 있는 기계 장치이다 .
하드디스크 크기로는 5.25 인치 (13.34cm), 3.5 인치 (8.9cm), 2.5 인치 (6.4cm), 1.8
인치 (4.6cm) 등이 있으며 분당 회전 수 , 즉 RPM 은 5400, 7200 등이 있다 . 현재
데스크탑 PC 에는 3.5 인치 , 노트북에는 2.5 인치 HDD 가 주로 쓰인다 .
플래쉬 메모리 반도체를 저장 매체로 사용하는 데이터 저장 장치이다 . 반도체이나
일반적인 메모리 반도체와 달리 전원이 꺼져도 정보가 유지되는 비휘발성 (Non-
Volatile) 기억 장치이다 .
순수 전자식으로 작동하므로 기계식인 HDD 의 문제인 긴 탐색 시간 , 반응 시간 ,
기계적 지연 , 실패율 , 소음을 크게 줄여 준다 . 또한 가볍고 전원도 적게 사용한다 .
예전에는 데이터 접근 시간이 아닌 연속적인 읽기와 쓰기에 대해 HDD 보다 느린
경우가 많았지만 최신 기술이 적용된 SSD 의 경우 연속적인 읽기 쓰기에서도 HDD
보다 빠르다 . SSD 의 최대 단점은 비싼 가격이었으나 최근에는 가격이 빠르게
하락하고 있다 .
 HD (Hard Disk) /
HDD (Hard Disk
Drive)
 SSD (Solid State
Drive)
32
Von Neumann Architecture - History
Wired 방식의 초기 컴퓨터 구조
Input
Device
Output
Device
Wire
(Wired Program)
CPU
Von Neumann Architecture
Input
Device
Output
Device
CPU
Main Memory
Stored Program
1943: ENIAC
• 최초의 범용 전자 컴퓨터
• Hard Wired Program - 다이얼과 스위치 조작
1944: Beginnings of EDVAC
• 프로그램을 메모리에 저장할 수 있는 기능
개선 이루어짐
1945: John von Neumann
• “The First Draft of a Report on EDVAC”
이라는 문서를 통해 “ Stored Program” 개념
발표
• Draft 에서 설명한 기본 구조  Von
Neumann Machine (or Model) 로 불림
33
Main Memory
Von Neumann Architecture
0x0000 Instruction1
0x0004 Instruction2
0x0008 Instruction3
0x000A Instruction4
…. …
0x0100 Data1
0x0104 Data2
0x0108 Data3
Address Memory Cell
CPU
(Central Processing Unit)
ALU
(Arithmetic & Logic Unit)
Register
2
Register
1
Register
3
CU
(Control Unit)
IR
PC
Input Device
Output
Device
Stored Program:
Main Memory 저장된
Sequence of Instruction 을
CPU 로 가져와 순차적으로
수행 , 필요에 따라 명령
외에 데이터도 가져옴
IR : Instruction Register
PC : Program Counter
Memory :
Contains Instructions & Data
Control Unit :
interpreting Instructions Arithmetic & Logic Unit :
performing arithmetic and logic
operations
34
Von Neumann Architecture
CPU : ALU + CU + Registers
 ALU (Arithmetic and Logic Unit)
 연산을 수행하는 Unit
 Register
 ALU 의 연산 작업 등에 쓰이는
CPU 내의 적은 용량의 고속 Memory
 CU (Control Unit)
 Instruction 을 Main Memory 에서
읽어와 ALU 와 Register 를 활용하여
명령을 수행하는 과정을 제어하는 Unit
 현재 읽어 들여 수행할 Instruction 이
저장된 메모리의 주소 값을 가지는 PC
(Program Counter) 라고 불리는 Register
가 존재함
• PC 값을 이용해 수행할 Instruction 을
IR(Instruction Register) 라는 Register 에
읽어 옴
• Instruction 을 수행하면 일반적으로 PC = PC
+ 1 의 값을 가짐 , 즉 다음 Instruction 이
Main Memory
0x0000 Instruction1
0x0004 Instruction2
0x0008 Instruction3
0x000A Instruction4
…. …
0x0100 Data1
0x0104 Data2
0x0108 Data3
Address Memory Cell
CPU
(Central Processing Unit)
ALU
(Arithmetic Logic Unit)
Register
2
Register
1
Register
3
CU
(Control Unit)
IR
PC
35
Instruction Cycle
The cycle which the CPU follows from boot-up until the
computer has shut down in order to process instructions
Fetch
Decode
Execute
Store
The next instruction is fetched from the memory
address that is currently stored in the PC(program
counter) and stored into the IR(instruction register).
At the end of the fetch operation, the PC points to the
next instruction that will be read at the next cycle.
The encoded instruction present in the IR is
interpreted by the CU.
The CU passes the decoded information as a
sequence of control signals to the ALU to perform
mathematical or logic operations
CU ALU
Registers
Main Memory
Fetch
Decod
e Execute
Store
John von Neumann ( 출처 Wikipedia)
 생애
 1903 년 헝가리 부다페스트에서 부유한 유대인 은행가의 장남으로 출생
 1926 년 23 세의 나이로 부다페스트 대학 수학 박사 학위 취득 ,
1930 년까지 베를린 훔볼트 대학에서 강사 생활
 1930 년 프린스턴 고등연구소로 초청을 받아 미국으로 건너가 고등연구소의 최초 4 명의 교수진 중에 한 명이
됨 . 이후 죽을 때까지 고등연구소의 수학 교수로 활동
 2 차 대전 기간 핵무기 개발을 위한 맨하탄 프로젝트 참여 , 핵무기 개발에 지대한 기여 , 최초의 핵폭파 실험을
직접 관찰한 소수의 과학자 중 한 사람 , 이후 미 정부의 대륙간탄도탄 (ICBM) 위원회에 참여 , 반공
보수주의자로 적극적인 핵무기 옹호자 , 균형 이론에 기초하여 그가 주장한 상호 확증 파괴 , 즉 MAD(Mutually
Assured Destruction) 는 냉전 시기 미 , 소의 핵무기 전략이었음 .
 1957 년 방사능이 원인으로 추정되는 골수암에 걸려서 사망
 지상 최강의 천재로 알려진 존 폰 노이만은 너무 머리가 좋아서 화성인 , 악마의 두뇌를 가진
남자라고 불리웠음 . 7 개의 외국어를 모국어 같이 자유자재로 사용할 수 있었으며 , 발음 또한 완벽하다고 전해짐 .
역사상 가장 뛰어난 기억력을 가진 인물로 평가되는데 훈련이 아니라 타고난 능력 . 양자 물리학 , 함수 해석학 ,
집합 이론 , 컴퓨터 과학 , 경제학 등의 분야에서 다수의 중요한 공헌을 하였음 . 게임 이론의 창시자 . DNA/RNA
발견 이전에 그 존재를 예측한 Cellular Automata / Universal Constructor 개념의 창시자 . 그의 천재성과 관련한
수많은 일화들이 있음 . ( 참고 1, 참고 2)
 EDVAC 이 완성되어 시험을 하게되었다 . 누군가 “오른쪽에서 4 번째 자리수가 7 인 가장 작은 2 의 지수는 얼마인가 ?” 컴퓨터와 폰
노이만이 동시에 문제를 풀기 시작했고 폰 노이만이 먼저 풀어 승리하였다 .
4-36

More Related Content

PPTX
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
PDF
Ch09
PDF
C언어 들어가기
PDF
C언어 들어가기
PDF
컴파일러 Ch01
PDF
소프트웨어의 동작 방식 이해
PDF
llvm 소개
PDF
4. reverse engineering basic
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
Ch09
C언어 들어가기
C언어 들어가기
컴파일러 Ch01
소프트웨어의 동작 방식 이해
llvm 소개
4. reverse engineering basic

Similar to 01. Computer System Basics with C Language (20)

PPTX
Assembly 스터디 1
 
PDF
Chaper24 languages high_and_low
PDF
6. code level reversing
PDF
The Deep Learning Compiler
PPTX
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
PDF
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
PPTX
System+os study 1
 
PPTX
Visual C++10을 활용한 병렬 프로그래밍
PDF
한글시계웍샵_ SW
PPTX
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
ODP
팀장 잔소리
PDF
게임프로그래밍입문 2주차
PDF
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
DOCX
C#강좌
PPTX
소프트웨어 중심 시대를 준비하자
PDF
병렬 프로그래밍
PDF
강좌 04 펌웨어 구조 설계
PDF
[아꿈사/110514] 멀티코어cpu이야기 시작발표
PPTX
Python study 1강 (오픈소스컨설팅 내부 강의)
DOCX
TestBCD2015-1(Answer)
Assembly 스터디 1
 
Chaper24 languages high_and_low
6. code level reversing
The Deep Learning Compiler
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
System+os study 1
 
Visual C++10을 활용한 병렬 프로그래밍
한글시계웍샵_ SW
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~
팀장 잔소리
게임프로그래밍입문 2주차
[Td 2015]프로그래밍 언어의 f1머신 c++을 타고 windows 10 uwp 앱 개발의 세계로~(유영천)
C#강좌
소프트웨어 중심 시대를 준비하자
병렬 프로그래밍
강좌 04 펌웨어 구조 설계
[아꿈사/110514] 멀티코어cpu이야기 시작발표
Python study 1강 (오픈소스컨설팅 내부 강의)
TestBCD2015-1(Answer)
Ad

01. Computer System Basics with C Language

  • 2. 강의 목표와 구성 컴퓨터 시스템과 프로그램의 이해  Universal Computing Device and Turing Machine  컴퓨터 시스템 : H/W + S/W  Sequence of Instructions ( 명령어 순차 조합 )  컴퓨터를 활용한 문제 해결 – Transformations between layers of abstraction  Algorithm 의 속성 C 언어 소개와 컴파일의 이해  프로그래밍 언어 분류  C 언어 소개  Compiled Language vs. Interpreted Language  C 언어 컴파일과 Python 언어 인터프리트 비교하기  Von Neumann Architecture
  • 4. 4 Introduction to the World of Computing Computer: electronic genius?  NO! Electronic idiot!  Does exactly what we tell it to, nothing more. Hardware vs. Software  It’s not either/or – both are components of a computer system.  Even if you specialize in one, you should understand capabilities and limitations of both. Computer is a Universal Computing Device  It is not limited to perform only a specific computation, It can perform any computation  The idea of a universal computational device is due to Alan Turing.
  • 5. 5 Turing Machine Mathematical model of a device that can perform any computation  proposed by Alan Turing in 1937  While he gave a mathematical description of this kind of machine, but did not actually build one Every computation can be performed by some Turing machine. Examples / Black Box Model TADD 𝑎 ,𝑏 𝑎+𝑏 TMUL 𝑎× 𝑏 Turing machine that adds Turing machine that multiplies 𝑎 ,𝑏
  • 6. 6 Universal Turing Machine A machine that can simulate all Turing machines  This is also a Turing machine Inputs : data + a description of computation (other TMs) Universal Turing Machine is Programmable !!!  So is Computer !!!  A computer can emulate a Universal Turing Machine U 𝑎,𝑏,𝑐 𝑐×(𝑎+𝑏) Universal Turing Machine Tadd, Tmul
  • 7. 7 Alan Turing ( 출처 Wikipedia)  생애  1912 년 출생 , 1931 년 케임브리지 대학 수학사 학위 취득 , 1936 년 미국 프린스턴 대학에서 박사 학위 취득 .  1937 년 튜링 기계 개념을 도입한 논문 “계산 가능한 수와 결정할 문제에의 응용”을 발표 , 1938 년 영국 정부 암호학교 부임 , 1939 년 독일군의 에니그마 암호 해독기 개발  동성애자 혐의로 체포된 후 1954 년 독이 든 사과를 먹고 죽음 .  튜링은 수학 , 암호학 , 생물학 등 많은 분야에서 다양한 연구 활동을 했지만 특히 컴퓨터 과학 분야에 끼친 영향이 크기 때문에 컴퓨터 과학 및 전산학의 아버지라고 불린다 . 그가 구상한 튜링 기계의 무한히 긴 띠는 컴퓨터의 메모리에 , 기호를 읽는 기계는 컴퓨터의 CPU 에 비유할 수 있다 . 또한 튜링 기계의 한 종류인 범용 튜링 기계는 프로그램을 내장해서 작동하는 현대의 컴퓨터를 많이 닮아 있다 . 미국컴퓨터학회 ACM 에서는 튜링의 공로를 기리기 위하여 1966 년부터 매년 컴퓨터 과학에 중요한 업적을 남긴 사람들한테 주는 튜링상을 제정하였다 . 현재 튜링상은 컴퓨터 과학 분야의 노벨상이라고도 불린다 . 애플 컴퓨터의 로고인 ' 한 입 베어먹은 사과 ' 는 튜링을 연상시키지만 , 애플 컴퓨터가 로고를 만들 때 튜링을 염두에 두고 만들었는지는 확실하지 않다 . 현재 애플 컴퓨터에서는 로고의 모델이 뉴턴의 사과라고 주장한다 .
  • 8. 8 컴퓨터 시스템 컴퓨터 시스템은 사용자 요구에 따른 임의의 다양한 계산을 수행할 수 있는 장치로 개발되었다 . H/W S/W 컴퓨터 시스템은 하드웨어와 소프트웨어로 이루어진다 컴퓨터 시스템 • 컴퓨터 H/W 로 수행할 수 있는 계산은 명령어 (Instruction) 라 불리는 한정된 기초 연산에 불과하다 . • H/W 만으로는 사용자가 요구하는 임의의 다양한 계산을 수행할 수 없다 . • 명 령 어 를 조 합 하 여 순 차 적 으 로 실행하면 사용자가 요구하는 임의의 다양한 계산을 실현할 수 있다 . • 컴퓨터 시스템에서 S/W 란 특정 계산을 위해 수행하는 명령어 조합과 관련 데이터 모음이다 .
  • 9. 9 Operation and Instruction  Operation( 연산 ) : Operator( 연산자 ) 와 Operand( 피연산자 ) 로 구성  Instruction( 명령어 ) : Opcode( 명령코드 ) 와 Operand ( 피연산자 ) 로 구성  컴퓨터 명령어의 피연산자는 연산에 쓰이는 값 (Literal) 또는 저장소 / 메모리 (Memory)  Example) 저장소 A 에 저장된 값과 7 을 더한 것을 저장소 R1 에 저장하는 명령 • 많은 저장소 / 메모리 중 특정 저장소 / 메모리를 ADD A 7 R1 Opcod e Operand ADD P1 P2 P3 P3P1+P2 Opcod e Operand MUL P1 P2 P3 P3P1×P2 A + B A × B Operan d Operato r Operan d Operan d Operato r Operan d 저장소 이름 / 주소 저장소 / 메모리에 저장된 값 A R1 + 7
  • 10. 10 Sequence of Instructions  명령어 조합을 통한 복잡한 계산 수행 예  저장소 A, B 의 값에 대해 아래와 같은 계산을 수행하고 그 결과를 저장소 C 에 저장하고자 한다 .  그런데 대상 컴퓨터에는 이 계산을 바로 수행할 수 있는 연산 기능은 없다 .  대상 컴퓨터는 앞 장에서 소개한 ADD, MUL 두 가지 명령어를 지원한다 .  대상 컴퓨터에는 저장소 A, B, C 외에 R1, R2 라는 추가 저장소를 임의로 사용할 수 있다고 가정한다 .  ADD, MUL 로 구성된 아래와 같은 Sequence of Instructions ( 명령어 순차 조 합 ) 의 실행을 통해 원하는 ( 복잡한 ) 계산을 수행할 수 있다 . ① MUL A A R1 ② MUL A B R2 ③ ADD R1 R2 C 저장소 이름 / 주소 저장소 / 메모리에 저장된 값 A B C R1 R2 × × + ① ② ③
  • 11. 11 Sequence of Instructions 예제 풀이  사용자가 원하는 계산이 다음과 같을 때 이를 실현하는 명령어 순차 조합을 작성하라 . • 이전 예와 같이 추가 저장소 R1, R2 를 사용할 수 있다 .  당신은 계산 수행을 위해 몇 개의 명령어를 사용하였는가 ? • 동일한 기능을 더 적은 수의 명령어를 사용하여 실현하면 보다 빠르게 목적을 달성 • 알고리즘 (Algorithm) 의 필요성 Opcode Operands ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ? !
  • 12. 12 Lego Blocks  Instructions H/W Ideas  Sequence of Instructions/ Program S/W
  • 13. 13 How do we get the electrons to do the work ?  How do we solve a problem using a computer ? A systematic sequence of transformations between layers of abstraction. Problems Algorithm Program ISA (Instruction Set Architecture) Devices Micro-architecture Logic Circuits stated using "natural language". may be ambiguous, imprecise. express the algorithm using a computer language • high-level language, low-level language a step-by-step procedure, guaranteed to finish specifies the set of machine instructions the computer can perform Software Design: choose algorithms & data structures Programming: use language to express design Compiling/ Interpreting: convert language to machine instructions Processor Design: choose structures to implement ISA Logic/Circuit Design: gates and low-level circuits to implement components Process Engineering & Fabrication: develop and manufacture lowest-level components
  • 14. 14 Properties of an Algorithm  An algorithm is a step-by-step procedure that is guaranteed to terminate, such that each step is precisely stated and can be carried out by the computer.  Definiteness :  Each step must be precisely defined; the actions to be carried out must be rigorously and unambiguously specified for each case.  Ex) In a recipe for pancakes : "stir until lumpy". Does it meet "definiteness" ?  Effective Computability :  All operations to be performed must be sufficiently basic that they can be done exactly and in finite length  Ex) "Take the largest prime number". Does it meet "effective computability" ?  Finiteness :  The algorithm must always terminate after a finite number of steps.  Ex) "Divide x by 2, repeat it until x has a value of 1". Does it meet "finiteness" ?  Input  An algorithm has zero or more inputs, taken from a specified set of objects.  output  An algorithm has one or more outputs, which have a specified relation to the inputs
  • 15. 15 Many Choices at Each Level Solve a system of equations/ 연립방정식 Gaussian elimination Jacobi iteration Red-black SOR Multigrid FORTRAN C C++ Java Intel x86 PowerPC Atmel AVR Centrino Pentium 4 Xeon Ripple-carry adder Carry-lookahead adder CMOS Bipolar GaAs Tradeoffs: 비용 , 성능 , 전력 소모 … Problem Algorithm Program ISA Micro Architecture Circuit Device
  • 16. 16  ISA (Instruction Set Architecture)  이전 슬라이드에서 소개한 ADD, MUL 등은 어셈블리 언어(Assembly Language) 로 표현한 명령  CPU 가 직접 해독하고 실행할 수 있는 명령어 0 과 1 의 이진 값으로 표현되는 기계어 명령어 • 다음은 예 )  CPU 가 직접 해독하고 실행할 수 있는 기계 명령어들의 집합 그리고 그 기반 구조 및 체계  ISA  ISA 분류  ISA 는 구조적 특성에 따라 CISC (Complex Instruction Set Computer), RISC ( Reduced Instruction Set Computer) 등으로 분류  CISC 구조의 대표 CPU/ISA 로 Intel 의 x86 Architecture (Instructions) – PC/Notebook 등에 널리 쓰임
  • 17. C 언어 소개와 컴파일의 이해
  • 18. 18 프로그래밍 언어와 분류  프로그래밍 언어 - 프로그램을 작성하기 위한 언어  사람이 컴퓨터에게 시키고 싶은 내용을 표현하기 위한 표기법  인간 친화성 수준에 따라 기계어 (Machine Code/Language), 어셈블리어 (Assembly Language), 고급 언어 (High-Level Language) 로 분류  기계어  이진수 코드로 CPU 마다 고유의 기계어  ISA  어셈블리어  기계어 이진수 코드를 사람이 이해하기 쉬운 기호화 코드 (mnemonics) 로 대치한 것  Symbolic Machine Code 로도 불림 • 참고 ) 많은 경우 기계어 코드와 어셈블리어 기호 사이에 1:1 의 대응 관계에 있지만 그렇지 않은 경우도 있음 .  고급 언어  영어와 비슷한 구문으로 표현되며 , 사람이 읽고 쓰기가 보다 쉽다  기계어에 독립적이며 프로그래머가 기계의 세부사항 (ISA) 을 알 필요가 없게 해준다 .  C/C++, Python, Java 등이 고급 언어의 예  대비의 관점에서 어셈블리어나 기계어를 저급 언어 (Low-Level Language) 라고도 함
  • 19. 19 기계어 , 어셈블리어 , 고급 언어  보통 프로그래머는 고급 언어로 프로그램의 소스 코드 (Source Code) 를 작성하고 컴파일링 (Compiling) 이라는 과정을 통해 기계가 해독하여 처리할 수 있는 기계어 형식의 이진실행파일 (Binary Executable) 로 변환한다 .  이진실행파일 형태의 프로그램을 운영체제를 이용하여 적재하고 실행한다 . 분류 Example 의미 High-Level Language X = Y + Z Store the value of Y + Z to X Assembly Language LOAD Y ADD Z STORE X Load the value of [0010] to AC Add the value of [0101] to AC Store the value of AC to [0110] Machine Language 1010 0010 1100 0101 1011 0110 Load the value of [0010] to AC Add the value of [0101] to AC Store the value of AC to [0110] 사람 친화적 기계 친화적 Compiling
  • 20. 20 기계어와 이식성 Portability ( 이식성 )  프로그램을 다른 기계 / 플랫폼에서 활용하기 위해 필요한 수정이나 변경의 수준  High Portability : 수정 , 변경이 거의 없이 프로그램을 사용할 수 있는 것 기계어로 작성된 프로그램은 이식성이 매우 낮음  CPU 마다 다른 기계어 (ISA) 를 사용하기 때문 고급 언어의 경우 상대적으로 이식성이 높음  단 다른 CPU/ISA 에서 사용하기 위해서는 소스 코드를 다시 컴파일 하여 해당 CPU/ISA 에 적합한 이진실행파일을 생성하여야 함
  • 21. 21 C 언어 소개 Dennis Ritchie 와 Ken Thompson 이 개발  1969 년 ~ 1973 년 사이 Bell Labs 근무 당시  UNIX 운영체제 개발에 사용됨  미국 및 국제 표준으로 제정 • ANSI (American National Standard Institute) C (1989 년 ) C 언어의 특징  고급 언어의 특성 ( 쉬움 ) 과 저급 언어의 강점 ( 빠르고 효율적 ) 을 겸비 Ken Thompson (left) with Dennis Ritchie (right, the inventor of the C programming language) Source - Wikipedia 특징 장점 구조화(Structured) 프로그래밍 지원 복잡한 문제를 잘 정의된 여러 개의 작은 함수로 나누어 구성 , 해결할 수 있다 . 블록 (Block), 함수 (Sub-Routine) 등의 개념을 통해 프로그램 소스 코드의 구조를 이해하기 쉽게 작성하고 읽을 수 있다 이식성 (Portability) 다양한 컴퓨터 플랫폼에서 사용할 수 있다 어셈블리 언어나 기계어에 비교할 때 큰 장점 효율성 (Efficiency) 적은 메모리를 이용하여 빠르게 수행 가능한 프로그램을 작성할 수 있음 다양한 연산자 프로그램을 간결하고 쉽게 작성할 수 있음 . 예 ) x = x+1; → x++; 동적 메모리 (Dynamic Memory) 관리 동적인 메모리 할당과 해제를 통해 임베디드 시스템과 같이 메모리 자원이 제한된 환경에서도 구동할 수 있는 프로그램을 작성할 수 있음
  • 22. 22 Compiled Language vs. Interpreted Language  실행 / 목적 파일의 생성 여부가 중요한 차이  Compiled Language 는 전체 소스 코드를 이진 기계어 코드로 번역하고 그것을 묶어 이진 실행 파일을 생성함  Interpreted Language 의 경우 소스 코드의 일부 ( 일반적으로 한 문장씩 ) 를 이진 기계어 코드로 번역하고 그 결과를 바로 실행하게 함 . 즉 별도의 이진 실행 파일을 생성하지 않음 .  Compiled Language 의 경우 실행 / 목적 파일이 있으면 소스코드와 Compiler 가 없어도 실행 가능하지만 Interpreted Language 의 경우 실행을 위해 소스 코드와 Interpreter 가 필요 • 참고 ) Python 소스를 interpretation 하지 않고 Compile 을 통해 실행 파일을 만들 수도 있다 . 이 경우 Python 을 Compiled Language 로 분류할 수 있다 . 비교항목 Compiled Language Interpreted Language 대표 언어 C/C++, Fortran, Cobol Python, Java, Basic 실행 / 목적 파일 생성 생성 안 함 실행 속도 빠름 상대적으로 느림 이식성 (Portability) 상대적으로 낮음 . ISA 가 다른 컴퓨터에서는 다시 컴파일 해야 함 높음 인터프리터만 있으면 ISA 가 다른 컴퓨터에서도 실행 가능 소스 코드 Interpreter 입력 출력 소스 코드 Compiler 입력 출력 실행 파일
  • 23. 23 C 언어 컴파일 실습 (1)  탐색기 (Explorer) 를 실행시키고 프로그래밍을 할 작업 폴더를 준비하라  Ex) F:Workspace  cmd( 명령 프롬프트 ) 실행하고 작업 폴더로 이동  Explorer 에서 작업 폴더를 선택하여 그림 1 과 같이 Explorer 에 해당 경로가 표시되면 그림 2 와 같이 cmd 라고 입력하면 해당 폴더에서 명령창 생성  또는 cmd 실행 후 cd 등의 명령으로 이동  “gcc” ( 컴파일러 ) 를 실행해 보라  그림 3 과 같이 실행 결과로 오류 메시지가 출력되지만 실행이 됨을 확인하라 .  “where gcc” 로 컴파일러 설치 위치를 확인하라 . 그림 1 그림 2 그림 3
  • 24. 24 C 언어 컴파일 실습 (2) Cmd 에서 “ notepad hello.c” 를 입력하여 hello.c 라는 C 코드 파일을 작업 폴더에 생성하라 Hello.c 를 다음과 같이 작성하고 저장하라 .  화면에 Hello World !!! 라는 문자열을 출력하는 프로그램
  • 25. 25 C 언어 컴파일 실습 (3)  “dir” 을 통해 작업 폴더 내에 존재하는 파일을 확인하라 .  새로 만든 작업 폴더라면 Hello.c 라는 소스 코드 파일만 존재할 것이다 .  “gcc hello.c” 를 입력하여 컴파일을 수행하라 .  “dir” 을 통해 컴파일 후 작업 폴더 내에 존재하는 파일을 확인하라 .  “a.exe” 라는 실행 파일이 생성 되었음을 확인할 수 있을 것이다 .  “a.exe” 를 실행해보라 .
  • 26. 26 Python Interpretation 실습  “python” 을 실행하고 Hello World !!! 출력 코드를 작성해보라 .  Python shell 이 실행되면서 코드를 입력할 수 있는 Prompt 가 생김을 확인 할 수 있다  Print 명령문을 활용하여 “ Hello World !!!” 를 출력해보라  exit() 로 Python Shell 을 종료시켜라 .  “Notepad hello.py” 를 실행시키고 위와 동일한 코드를 작성해 보라 .  “python hello.py” 를 통해 실행 결과를 확인하라 . 실행 파일이 생성되는가 ?
  • 27. 27 컴퓨터 프로그램과 실행  컴퓨터 프로그램 (Program) 이란 ?  Sequence of instructions and related data !!!  명령어는 기계가 직접 해독하고 실행할 수 있는 이진 값으로 표현되는 기계어 (Machine Code)  실행 파일 (Executable File) 의 형태로 보조기억장치에 저장 / 설치됨  프로그램의 실행 과정  보조기억장치에 저장된 프로그램 실행 파일을 Main Memory 로 적재 (Loading) 하고  CPU 는 Main Memory 로부터 프로그램의 명령어들을 순차적으로 하나씩 읽어 들여 해석하고 수행하는 방식으로 프로그램을 실행 (Execution) • 참고 ) 프로그램 적재 / 실행을 수행하는 S/W  운영체제 (OS : Operating System) Input Device Output Device CPU Main Memory Secondary Storage 프로그램 실행파일 Loading Execution 컴퓨터 H/W 구성 요소 • 중앙처리장치 - CPU (Central Processing Unit) 명령어를 해석하여 실행하는 핵심 구성 요소 • 주기억장치 - Main Memory 프로그램과 데이터를 저장하는 휘발성 기억장치 ( 참고 ) 전원이 꺼져도 저장 정보를 유지하는 기억 장치를 비휘발성 (Non-Volatile), 그렇지 못한 장치를 휘발성 (Volatile) 기억 장치라고 함 • 보조기억장치 - Secondary Storage 프로그램과 데이터를 파일의 형태로 저장하는 비휘발성 (Non Volatile) 기억장치로 HDD, SSD 등이 있음 • 입출력 장치 – Input / Output Device 인간과 컴퓨터의 상호 작용을 도와주는 키보드 , 마우스 , 모니터와 같은 장치
  • 28. 28  프로그램과 프로세스의 차이 : Program vs. Process  A program is an executable file residing on the disk (secondary storage). It is read into the primary memory and executed by the kernel.  An executing instance of a program is called a process  다음을 수행하라 .  컴퓨터에서 메모장 프로그램의 실행파일을 찾아라 . 확장자 포함 파일 이름이 무엇인가 ?  프로그램을 실행하여 3 개의 메모장 프로세스를 생성하라 . ? CPU Main Memory Secondary Storage
  • 29. 29 Bit, Byte, Hexa  컴퓨터에서 정보는 2 진수로 표현  예 ) 0100, 11010001  Bit – Binary Digit  컴퓨터에서 정보를 표현하는 기본 단위  1 bit 는 0 또는 1 을 나타낼 수 있으며 bits 는 개의 경우의 수를 표현할 수 있음  1 Byte = 8 bits  컴퓨터에서 알파벳 문자 표현을 위해 8 bits 가 필요했던 것으로부터 유래  1 Byte 는 256 가지의 경우의 수 표현 가능  Hexa  16 진수 (Hexa Decimal) 체계  0, 1, …, 9, A(10), B(11), C(12), D(13), E(14), F(15)  긴 2 진수를 짧게 표현 가능 , 하나의 숫자가 4 bits 에 대응  Hexa 임을 표시하기 위해 앞에 0x 를 덧붙이는 경우가 많음  예 ) 001010101100  0x2AC Value Prefix Symbol Value Binary Prefix =1000 Kilo K =1024 Kibit Mega M Mibit Giga G Gibit Tera T Tibit Peta P Pibit Exa E Eibit Zetta Z Zibit Yota Y Yibit
  • 30. 30 . . . Memory Address  Memory  bits 를 저장할 수 있는 다수의 Memory Cell 이 연속으로 이어져 있는 것  대부분의 현대 컴퓨터는 , 즉 Memory Cell 이 1 Byte 를 저장  Memory Address 의 필요성  연속된 Memory Cell 중 어떤 Cell 에서 읽거나 쓸지를 표현할 수 있어야 함  Address  수 많은 방 중 어떤 방 ?  Memory Address  컴퓨터에서는 주로 2 진수 또는 Hexa 로 표현  Memory Address 에 쓰이는 bits 수  , 의 Memory Cell 구별  값은 전체 메모리 공간의 크기와 관련  예 ) 인 메모리 공간의 크기는 4GiBytes 10011010 00000000 10011010 00000000 10011010 00000000 10011010 00000000 . . . Memory Cells 8 000000 000001 000010 000011 111100 111101 111110 111111 . . . Address 1 2 3 4 5
  • 31. 31 하드디스크는 자기 물질을 표면에 얇게 입힌 금속 재질의 원형 판 (disk, platter) 으로 디지털 정보를 쓰고 읽을 수 있는 데이터 저장 장치다 . 하드디스크는 컴퓨터 전원이 꺼져도 정보가 유지되는 비휘발성 (Non-Volatile) 기억 장치이다 . 하드디스크는 그 표면에 정보를 쓰거나 읽을 때 쓰이는 헤드와 쌍을 이룬다 . 하드디스크 드라이브는 하드디스크를 빠르게 회전 시키고 헤드의 위치를 조절하면서 임의의 위치에 데이터를 읽고 쓸 수 있는 기계 장치이다 . 하드디스크 크기로는 5.25 인치 (13.34cm), 3.5 인치 (8.9cm), 2.5 인치 (6.4cm), 1.8 인치 (4.6cm) 등이 있으며 분당 회전 수 , 즉 RPM 은 5400, 7200 등이 있다 . 현재 데스크탑 PC 에는 3.5 인치 , 노트북에는 2.5 인치 HDD 가 주로 쓰인다 . 플래쉬 메모리 반도체를 저장 매체로 사용하는 데이터 저장 장치이다 . 반도체이나 일반적인 메모리 반도체와 달리 전원이 꺼져도 정보가 유지되는 비휘발성 (Non- Volatile) 기억 장치이다 . 순수 전자식으로 작동하므로 기계식인 HDD 의 문제인 긴 탐색 시간 , 반응 시간 , 기계적 지연 , 실패율 , 소음을 크게 줄여 준다 . 또한 가볍고 전원도 적게 사용한다 . 예전에는 데이터 접근 시간이 아닌 연속적인 읽기와 쓰기에 대해 HDD 보다 느린 경우가 많았지만 최신 기술이 적용된 SSD 의 경우 연속적인 읽기 쓰기에서도 HDD 보다 빠르다 . SSD 의 최대 단점은 비싼 가격이었으나 최근에는 가격이 빠르게 하락하고 있다 .  HD (Hard Disk) / HDD (Hard Disk Drive)  SSD (Solid State Drive)
  • 32. 32 Von Neumann Architecture - History Wired 방식의 초기 컴퓨터 구조 Input Device Output Device Wire (Wired Program) CPU Von Neumann Architecture Input Device Output Device CPU Main Memory Stored Program 1943: ENIAC • 최초의 범용 전자 컴퓨터 • Hard Wired Program - 다이얼과 스위치 조작 1944: Beginnings of EDVAC • 프로그램을 메모리에 저장할 수 있는 기능 개선 이루어짐 1945: John von Neumann • “The First Draft of a Report on EDVAC” 이라는 문서를 통해 “ Stored Program” 개념 발표 • Draft 에서 설명한 기본 구조  Von Neumann Machine (or Model) 로 불림
  • 33. 33 Main Memory Von Neumann Architecture 0x0000 Instruction1 0x0004 Instruction2 0x0008 Instruction3 0x000A Instruction4 …. … 0x0100 Data1 0x0104 Data2 0x0108 Data3 Address Memory Cell CPU (Central Processing Unit) ALU (Arithmetic & Logic Unit) Register 2 Register 1 Register 3 CU (Control Unit) IR PC Input Device Output Device Stored Program: Main Memory 저장된 Sequence of Instruction 을 CPU 로 가져와 순차적으로 수행 , 필요에 따라 명령 외에 데이터도 가져옴 IR : Instruction Register PC : Program Counter Memory : Contains Instructions & Data Control Unit : interpreting Instructions Arithmetic & Logic Unit : performing arithmetic and logic operations
  • 34. 34 Von Neumann Architecture CPU : ALU + CU + Registers  ALU (Arithmetic and Logic Unit)  연산을 수행하는 Unit  Register  ALU 의 연산 작업 등에 쓰이는 CPU 내의 적은 용량의 고속 Memory  CU (Control Unit)  Instruction 을 Main Memory 에서 읽어와 ALU 와 Register 를 활용하여 명령을 수행하는 과정을 제어하는 Unit  현재 읽어 들여 수행할 Instruction 이 저장된 메모리의 주소 값을 가지는 PC (Program Counter) 라고 불리는 Register 가 존재함 • PC 값을 이용해 수행할 Instruction 을 IR(Instruction Register) 라는 Register 에 읽어 옴 • Instruction 을 수행하면 일반적으로 PC = PC + 1 의 값을 가짐 , 즉 다음 Instruction 이 Main Memory 0x0000 Instruction1 0x0004 Instruction2 0x0008 Instruction3 0x000A Instruction4 …. … 0x0100 Data1 0x0104 Data2 0x0108 Data3 Address Memory Cell CPU (Central Processing Unit) ALU (Arithmetic Logic Unit) Register 2 Register 1 Register 3 CU (Control Unit) IR PC
  • 35. 35 Instruction Cycle The cycle which the CPU follows from boot-up until the computer has shut down in order to process instructions Fetch Decode Execute Store The next instruction is fetched from the memory address that is currently stored in the PC(program counter) and stored into the IR(instruction register). At the end of the fetch operation, the PC points to the next instruction that will be read at the next cycle. The encoded instruction present in the IR is interpreted by the CU. The CU passes the decoded information as a sequence of control signals to the ALU to perform mathematical or logic operations CU ALU Registers Main Memory Fetch Decod e Execute Store
  • 36. John von Neumann ( 출처 Wikipedia)  생애  1903 년 헝가리 부다페스트에서 부유한 유대인 은행가의 장남으로 출생  1926 년 23 세의 나이로 부다페스트 대학 수학 박사 학위 취득 , 1930 년까지 베를린 훔볼트 대학에서 강사 생활  1930 년 프린스턴 고등연구소로 초청을 받아 미국으로 건너가 고등연구소의 최초 4 명의 교수진 중에 한 명이 됨 . 이후 죽을 때까지 고등연구소의 수학 교수로 활동  2 차 대전 기간 핵무기 개발을 위한 맨하탄 프로젝트 참여 , 핵무기 개발에 지대한 기여 , 최초의 핵폭파 실험을 직접 관찰한 소수의 과학자 중 한 사람 , 이후 미 정부의 대륙간탄도탄 (ICBM) 위원회에 참여 , 반공 보수주의자로 적극적인 핵무기 옹호자 , 균형 이론에 기초하여 그가 주장한 상호 확증 파괴 , 즉 MAD(Mutually Assured Destruction) 는 냉전 시기 미 , 소의 핵무기 전략이었음 .  1957 년 방사능이 원인으로 추정되는 골수암에 걸려서 사망  지상 최강의 천재로 알려진 존 폰 노이만은 너무 머리가 좋아서 화성인 , 악마의 두뇌를 가진 남자라고 불리웠음 . 7 개의 외국어를 모국어 같이 자유자재로 사용할 수 있었으며 , 발음 또한 완벽하다고 전해짐 . 역사상 가장 뛰어난 기억력을 가진 인물로 평가되는데 훈련이 아니라 타고난 능력 . 양자 물리학 , 함수 해석학 , 집합 이론 , 컴퓨터 과학 , 경제학 등의 분야에서 다수의 중요한 공헌을 하였음 . 게임 이론의 창시자 . DNA/RNA 발견 이전에 그 존재를 예측한 Cellular Automata / Universal Constructor 개념의 창시자 . 그의 천재성과 관련한 수많은 일화들이 있음 . ( 참고 1, 참고 2)  EDVAC 이 완성되어 시험을 하게되었다 . 누군가 “오른쪽에서 4 번째 자리수가 7 인 가장 작은 2 의 지수는 얼마인가 ?” 컴퓨터와 폰 노이만이 동시에 문제를 풀기 시작했고 폰 노이만이 먼저 풀어 승리하였다 . 4-36

Editor's Notes

  • #15: Sun and Java are trademarks of Sun Microsystems, Inc. Intel, Pentium, Centrino, and Xeon are trademarks of Intel Corporation. AMD and Athlon and trademarks of Advanced Micro Devices, Inc. Atmel and AVR are registered trademarks of Atmel Corporation. PowerPC is a trademark of International Business Machines Corporation.