• 검색 결과가 없습니다.

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
29
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

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

(2)

1.1 컴퓨터 시스템

2

(3)

컴퓨터 시스템

컴퓨터 시스템

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

하드웨어 소프트웨어

사용자

컴퓨터시스템

(4)

4

컴퓨터 시스템

컴퓨터 하드웨어 구성

CPU 주 메모리

보조메모리 HDD SSD DVDROM

DRAM

Pentium I7

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

Xeon FX

(5)

컴퓨터 하드웨어 구성 요소

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

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

Intel, AMD 에서 제조

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

주 메모리(Main Memory)

CPU가 일을 할 때 공급할 자료를 저장하는 곳. 프로그램과 데이터가 저장되어 있다 (DRAM). 4-16GB를 장착

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

보조 메모리 장치(Secondary Memory)

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

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

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

입출력 장치(Input/Output Device)

(6)

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

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, 각종 센서

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

(7)

생각해 보아야 할 것들

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

– System Bus, USB

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

– Windows 체험 지수를 살펴보자

더 빠른 시스템을 구성하는 방법은 무엇이고, 이를 위해 어떻게 구성되나

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

– 다른 장치들에게 명령

(8)

소프트웨어

컴퓨터 하드웨어를 이용하여 사용자의 목적을 달성하도록 구성된 명령어의 집합

– 운영체제

– 오피스 프로그램 – 게임

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

용어

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

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

8

(9)

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

폰 노이만 구조(von Neumann architecture)

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

보조 메모리 주 메모리

프로그램 데이터

명령

CPU 사용자

실행 명령

(10)

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

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

실행이 완료된 프로그램이더라도 메모리에 일정 시간 동 안 남겨둔다.

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

절전 !!!

(11)

1.2 프로그래밍 언어

(12)

12

프로그래밍 언어

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

– 사람이 컴퓨터에게 시키고 싶은 내용을 표현하기 위한 표기법 – 그 발전 단계에 따라 기계어, 어셈블리어, 고급언어로 분류

사람 컴퓨터

사람의 언어

기계의 언어

중간 언어

비교적 사람도 잘 이해할 수 있고 쉽게 기계의 언어로 변형할 수 있는 언어 컴파일러란 중간 언어로 작성된 명령을 기계의 언어로 번역하는 도구

프로그래밍 컴파일러

차이가 너무 크다

(13)

C 언어의 역사

1972년 Dennis Ritchie가 설계함

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

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

– Algol, CPL, B 등 다수

C 언어가 영향을 준 언어들

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

현황

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

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

(14)

C 언어의 특징

장점

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

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

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

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

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

– 적용 분야가 넓다.

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

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

단점

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

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

(15)

C 프로그래밍의 단계

C 언어 Windows Programming

응용 프로그램

개발

C++ / Java

중소 규모 프로젝트 참여

모바일 프로그래밍

3D 그래픽 / 게임

서버 프로그래밍

그 외

(16)

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

C 프로그래 자료구조

알고리즘 데이터베이

네트워크

운영체제 컴퓨터구조

(17)

주요 고급 언어

옛날 언어

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

– FORTRAN, COBOL, BASIC

현재 많이 사용되는 언어

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

최근 인기를 얻고 있는 언어

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

– Python, Ruby

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

(18)

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

C++

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

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

Java

– 1990년대에 선 마이크로시스템 사의 James Gosling이 개발 – 인터넷 환경을 위해 개발된 객체지향 언어

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

Python

– 1989년 Guido van Rossum이 개발한 객체지향형 스크립트 언어 – 문법 구조가 간단하고 확장이 용이.

(19)

프로그래밍 언어

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

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

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

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

– 기계에 가까운 언어. 2진수로 이루어진 기계어 – 수행은 빠르지만, 사람이 이해하기 매우 어렵다.

대부분의 프로그래밍 언어는 고급언어이며, 최근 언어는 사람에게 더 가까워지는 추세이다.

사람

고급언어

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

저급언어

Java : 좀 더 고급언어

Python : 좀 더 더 고급언 컴퓨터

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

어셈블리어 : 완전 저급언

(20)

컴파일러와 인터프리터

컴파일러

– 소스코드 전체를 기계어로 번역한 후, CPU에서 실행 – 성능이 좋다. 컴파일에 시간이 다소 소요된다.

– C, C++ 등

인터프리터

– 실시간으로 인터프리터가 소스코드를 한 행씩 번역 후 실행 – 다양한 기능을 제공하고, 융통성이 있다.

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

– Python

중간 형태

– 소스코드 전체를 중간코드로 일괄 번역한 후, 한 행씩 실행 – 컴파일러와 인터프리터의 장점.

– Java

소스코

기계어 명 CPU 컴파일

소스코

인터프리터 CPU

. . . .

한 행씩 번역, 실행

인터프리터 CPU

한 행씩 실행

소스코

컴파일 중간코드

(21)

C 언어의 성장

ANSI란

– 표준협회

ANSI C란

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

C언어는 성장한다.

– C89, C99 – C11

(22)

1.3 소프트웨어의 개발 단계

22

(23)

소프트웨어 개발과정

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

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

요구사항 정의

분석/설계

개발

시험

유지보수

(24)

24

소프트웨어 개발과정

요구사항 정의(requirement analysis)

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

분석(analysis), 설계(design)

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

개발(implementation)

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

테스트(testing)

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

유지보수(maintenance)

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

(25)

1.4 그 외

(26)

26

이진 저장 단위

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

KB (kilo) 2

10

대략 10

3

MB (mega) 2

20

대략 10

6

GB (giga) 2

30

대략 10

9

TB (tera) 2

40

대략 10

12

PB (peta) 2

50

대략 10

15

EB (exa) 2

60

대략 10

18

ZB (zetta) 2

70

대략 10

21

YB (yotta) 2

80

대략 10

24

(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진수)

(28)

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

(29)

진수

2진수

16진수

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

참조

관련 문서

낱말과 연상되는 관습적 의미는 언어적 개념 (linguistic concept)이나 어휘적 개념(lexical concept)으로서 이것은 언어로 부호화되기 위해 개념적 구조가

윈도우즈 API 응용 프로그램: C 언어로 작성, 60줄 이상의 Hello 응용(복잡) 응용 프레임워크(MFC, pclaf). MFC 응용 프로그램: C++ 언어로 작성, MFC 구조 복잡, 10줄

- Brush Affects In Tangent Handles - 앵커 포인트의 조절선 안쪽에 주름을 만든다. - Brush Affects Out Tangent Handles - 앵커 포인트의 조절선 바깥쪽에

• 디지털 시스템은 프로그래밍으로 전체 시스템을 제어할 수 있어서 규격이나 사양의 변경에 쉽게 대응할 수 있어서 기능 구현의 유연성을 높일 수 있고 개발기간을

-의사결정을 보다 쉽게 할 수 있도록 하기 위해 각종 자료를 분석해 주는 컴퓨터 응용 프로그램.  전문가시스템(EX

● 중소기업이 ①「중소기업기본법」의 규정에 따른 중소기업 외의 기업과 합병하는 경우 ②유예 기간 중에 있는 기업과 합병 ③독립성기준의 요건을 충족하지 못하게

어린 아이들에게는 흥미를 유발시켜 컴퓨터, IT에 대한 교육을 진 행할 수 있고, 아티스트, 엔지니어, 발명가 등에게는 다양한 아이디어를 구 현할 수 있는 아이템으로 활용

이렇게 컴퓨터가 사람이 내린 명령을 순서대로 하나씩 수행 할 수 있는 이유는 바로 컴퓨터가 명령을 받을 때 알고리즘이라는 것을 통하여