29
1. 컴퓨터 시스템과 프로그래밍

1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

1. 컴퓨터 시스템과프로그래밍

Page 2: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

1.1 컴퓨터 시스템

2

Page 3: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

3

컴퓨터 시스템

컴퓨터시스템

– 컴퓨터 시스템은 하드웨어와 소프트웨어로 이루어진다.

하드웨어

소프트웨어

사용자

컴퓨터시스템

Page 4: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

4

컴퓨터 시스템

컴퓨터하드웨어구성

CPU

주 메모리

보조메모리 HDD SSD DVDROM

DRAM

Pentium I7

입출력장치 키보드 마우스 모니터

Xeon FX

Page 5: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

5

컴퓨터 하드웨어구성 요소

중앙처리장치(Central Processing Unit; CPU)

– 프로그램의 명령(또는 계산)을 실행하는 주체

– Intel, AMD 에서 제조

– 초당 수백 만개 이상의 명령을 수행. 가장 빠른 컴퓨터 구성요소.

주 메모리(Main Memory)

– CPU가 일을 할 때 공급할 자료를 저장하는 곳. 프로그램과 데이터가 저장되어

있다 (DRAM). 4-16GB를 장착

– 장점 : 속도가 빠르다 단점 : 휘발성 (volatile, DRAM의 특성)

보조메모리장치(Secondary Memory)

– 프로그램이나 데이터를 영구적으로 저장하는 기억장치

– 하드 디스크 드라이브, SSD, DVD/CD-RW 드라이브

– 장점 : 자료의 영구 저장 단점 : 속도가 많이 느리다(상대적으로)

입출력장치(Input/Output Device)

– 인간과 컴퓨터의 상호 작용을 도와주는 장치

– 키보드, 마우스, 모니터, 각종 센서

Page 6: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

스마트폰하드웨어구성요소

6

중앙처리장치(Central Processing Unit; CPU)

– Application Processor (저전력 설계)

– Qualcomm, Apple, Samsung

주 메모리(Main Memory)

– Mobile DRAM (크기가 더 작고, 전력을 덜 소비)

– 1-3 GB

보조메모리장치(Secondary Memory)

– Flash Memory

– 16-128GB

입출력장치(Input/Output Device)

– 터치스크린, 스피커, WIFI, NFC, GPS, 각종 센서

모든 장치에서 전력 소비가 중요한 요소

Page 7: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

생각해 보아야 할 것들

각 장치는무엇으로연결되어있나

– System Bus, USB

시스템의성능은무엇에의해 좌우되는가

– Windows 체험 지수를 살펴보자

더 빠른 시스템을구성하는방법은무엇이고,

이를위해어떻게구성되나

CPU는계산 이외에어떤일을하는가

– 다른 장치들에게 명령

7

Page 8: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

소프트웨어

컴퓨터하드웨어를이용하여사용자의목적을달성하도록

구성된명령어의집합

– 운영체제

– 오피스 프로그램

– 게임

– 앞으로 우리가 만들 프로그램

용어

– 운영체제, 시스템 소프트웨어(프로그램), 응용 소프트웨어(프로

그램)

– 응용프로그램, 애플리케이션, App

8

Page 9: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

컴퓨터에서프로그램의실행

9

폰 노이만구조(von Neumann architecture)

– 프로그램 내장 방식(stored program)의 컴퓨터

보조 메모리 주 메모리

프로그램 데이터

명령

CPU

사용자

실행 명령

Page 10: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

스마트폰에서프로그램실행

한번에실행되는프로그램의수 제한

실행이완료된프로그램이더라도메모리에일정시간동

안 남겨둔다.

AP의일을 최대한줄여배터리소모를줄인다.

절전 !!!

Page 11: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

1.2 프로그래밍언어

11

Page 12: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

12

프로그래밍언어

프로그램을작성하기위한 언어

– 사람이 컴퓨터에게 시키고 싶은 내용을 표현하기 위한 표기법

– 그 발전 단계에 따라 기계어, 어셈블리어, 고급언어로 분류

사람 컴퓨터

사람의언어

기계의언어

중간언어

비교적 사람도 잘 이해할 수 있고 쉽게 기계의 언어로 변형할 수 있는 언어

컴파일러란 중간 언어로 작성된 명령을 기계의 언어로 번역하는 도구

컴파일러프로그래밍

차이가 너무 크다

Page 13: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

13

C 언어의역사

1972년 Dennis Ritchie가설계함

– UNIX 운영체제 개발에 사용됨

C 언어에직접영향을준 언어들

– Algol, CPL, B 등 다수

C 언어가영향을준 언어들

– C++, Java, PHP, Python 외 대부분

현황

– 지금도 운영체제를 만들 때 C 언어를 이용한다.

– Java 가상머신, Python 등 언어의 컴파일러 모두 C 언어로 만든

다.

– 어려운 부분들은 다 C로 만든다.

Page 14: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

C 언어의특징

장점

– 성능이 좋다(처리속도가 빠르다).

– 이식성이 높다(다양한 하드웨어에서 사용 가능).

– 언어 사용에 융통성이 있다.

– 하드웨어 제어용으로 좋다.

– 운영체제의 신기술이 가장 먼저 적용된다.

– 적용 분야가 넓다.

– 구조화된 언어로서 모듈별 설계가 가능하다(OLD).

– 동적 메모리 관리가 가능하다(OLD).

단점

– 어렵다. 기계어에 가깝다.

– 개발자가 제한되고, 생산성에 한계가 있다.14

Page 15: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

C 프로그래밍의단계

15

C 언어Windows

Programming

응용프로그램개발

C++ / Java

중소 규모프로젝트 참여

모바일프로그래밍

3D 그래픽/ 게임

서버프로그래밍

그 외

Page 16: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

C 언어의활용 (전공과목)

C 프로그래밍

자료구조

알고리즘데이터베이

네트워크

운영체제

컴퓨터구조

Page 17: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

17

주요 고급 언어

옛날언어

– C 언어 이전에 개발되어 충분히 많이 사용되었던 언어들.

– FORTRAN, COBOL, BASIC

현재많이사용되는언어

– 호황을 이미 누렸던 언어로, C언어와 동시대 또는 다음 세대를 보낸 언어

– C++, C#, Objective-C, Java, Perl

최근인기를얻고있는언어

– 강력한 기능과 쉬운 사용법으로, 전문가가 아니더라도 프로그래밍을 가능하게 해준 언어

– Python, Ruby

새로나온, 기대되는언어들

– 좀 더 쉽고 좀 더 강력하다.

– GO, RUST, KOTLIN, SWIFT

Page 18: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

주요 프로그래밍언어의특징

C++

– AT&T 벨 연구소의 B. Stroustrup이개발

– C 언어의 기능을 확장하여 만든 객체 지향 프로그래밍 언어

Java

– 1990년대에 선 마이크로시스템 사의 James Gosling이 개발

– 인터넷 환경을 위해 개발된 객체지향 언어

– Java 프로그램은 JVM이 구동되는 어느 플랫폼에서나 실행 가능

Python

– 1989년 Guido van Rossum이 개발한 객체지향형 스크립트 언어

– 문법 구조가 간단하고 확장이 용이.

Page 19: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

프로그래밍언어

고급언어(고수준언어, high-level language)

– 영어와 비슷한 구문으로 표현되며, 사람이 읽고 쓰기 쉽다.

– 사람에게 가까울수록(사람이 쉽게 이해할 수 있음) 더 고급 언어이다.

저급언어(저수준언어, low-level language)

– 기계에 가까운 언어. 2진수로 이루어진 기계어

– 수행은 빠르지만, 사람이 이해하기 매우 어렵다.

대부분의프로그래밍언어는고급언어이며, 최근언어는사람에게더

가까워지는추세이다.

사람

고급언어

C : 고급언어이지만, 저급에도 가깝다.

저급언어

Java : 좀 더 고급언어

Python : 좀 더 더 고급언어

컴퓨터

어렵지만 빠르다느리지만 쉽다

어셈블리어 : 완전 저급언어

Page 20: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

컴파일러와인터프리터

컴파일러

– 소스코드 전체를 기계어로 번역한 후, CPU에서 실행

– 성능이 좋다. 컴파일에 시간이 다소 소요된다.

– C, C++ 등

인터프리터

– 실시간으로 인터프리터가 소스코드를 한 행씩 번역 후 실행

– 다양한 기능을 제공하고, 융통성이 있다.

– 인터프리터가 항상 동작해야 한다. 성능에 한계가 있다.

– Python

중간형태

– 소스코드 전체를 중간코드로 일괄 번역한 후, 한 행씩 실행

– 컴파일러와 인터프리터의 장점.

– Java

소스코드

기계어 명령

CPU

컴파일

소스코드

인터프리터

CPU

. . . . . . .

한 행씩 번역, 실행

인터프리터

CPU

한 행씩 실행

소스코드

중간코드컴파일

Page 21: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

C 언어의성장

ANSI란

– 표준협회

ANSI C란

– 표준협회에서 정한 C 언어

C언어는성장한다.

– C89, C99

– C11

21

Page 22: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

1.3 소프트웨어의개발 단계

22

Page 23: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

23

소프트웨어개발과정

앞 단계가끝나야다음단계가진행된다.

앞 단계의결과물이다음단계에사용된다.

요구사항 정의

분석/설계

개발

시험

유지보수

Page 24: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

24

소프트웨어개발과정

요구사항정의(requirement analysis)

– 사용자의 필요사항과 소프트웨어가 해야 할 일을 파악하는 단계

분석(analysis), 설계(design)

– 요구 사항을 만족시키는 소프트웨어/시스템의 구조를 만들고 이를상세화하는 과정

개발(implementation)

– 설계된 소프트웨어/시스템의 내용을 구체적인 프로그래밍 언어로작성하는 단계

테스트(testing)

– 프로그램의 오류를 찾아내고 이를 수정하는 단계

유지보수(maintenance)

– 개발된 소프트웨어를 실제 상황에서 운영하면서 상황 및 변화된 요구에 따라 소프트웨어를 적절하게 수정하는 단계

Page 25: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

1.4 그 외

25

Page 26: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

26

이진 저장 단위

단위 크기(2𝐧) 크기(𝟏𝟎𝐧)

KB (kilo) 210 대략 103

MB (mega) 220 대략 106

GB (giga) 230 대략 109

TB (tera) 240 대략 1012

PB (peta) 250 대략 1015

EB (exa) 260 대략 1018

ZB (zetta) 270 대략 1021

YB (yotta) 280 대략 1024

Page 27: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

27

이진수와십진수

십진수

– 열 개의 숫자(0에서 9)를 이용하여 값을 표현한다.

– 사람이 이용하는 단위

– 123 = 1 x 102 + 2 x 101 + 3 x 100

이진수

– 두 개의 숫자(0과 1)를 이용하여 값을 표현한다.

– 컴퓨터가 이용하는 단위

– 10102 = 1 x 23 + 0 x 22 + 1 x 21 + 0 x 20

= 10 (10진수)

Page 28: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

28

16진수

16진수(hexadecimal)

– 사람의 10진수와 기계의 2진수의 중간 단계의 수

– 0 ~ 9, A(10), B(11), C(12), D(13), E(14), F(15)로 표현

– 2진수 네 자리를 묶으면 16진수가 된다.

– 3F4 16 = 3 x 162 + F(15) x 161 + 4 x 160

= 1012 10

– 3F4 16 = 0011 : 1111 : 0100

3 F 4

= 001111110100 2

Page 29: 1. 컴퓨터시스템과프로그래밍 - KOCWcontents.kocw.net/KOCW/document/2015/chungang/... · 프로그래밍언어 고급언어(고수준언어, high-level language) –영어와비슷한구문으로표현되며,

진수

2진수

16진수

29

2진수 10진수 2진수 10진수 2진수 10진수

25 32 211 2,048

26 64 212 4,096 220 = 1M 1,048,576

27 128 213 8,192 224 = 16M 16,777,21

6

28 256 214 16,384 230 = 1 G 약 10억

29 512 215 32,768 232 = 4 G 약 40억

210 = 1 K 1,024 216 = 16K 65,536

10진수 16진수 10진수 16진수 10진수 16진수

7 7 13 D 31 1F

8 8 14 E 32 20

9 9 15 F 48 30

10 A 16 10 64 40

11 B 17 11 160 A0

12 C 18 12 256 100