컴퓨터개론및실습 한국외국어대학교컴퓨터및정보통신공학부김정국 2007.3
Contents What is Computer? History of Computers Computer Organization Number Systems Operating Systems Programming Languages Programming in C/C++ in LINUX & Windows Environment 2
참고사항 text Big C++, Horstmann, 손기락, 김차성.. 역, 사이텍미디어 강의노트 (rtdcs.hufs.ac.kr) References LINUX On-line manual Win32 API Bible, Visual C++ 관련서적 실습 ( 목 ) : 이승연조교 jgkim@hufs.ac.kr 3
컴퓨터란? 일반적의미 계산할수있는모든장치 컴퓨터 + 통신장치 -> 정보가전, ubiquitous (pervasive) computing, embedded everywhere) 현대적의미 : Electronic Computer 데이터, 명령어를입력하고저장할수있으며 (Input) 이를빠른속도로처리하여 (Processing) 정확하게출력 / 저장해낼수있는 (Output) 전자적데이터처리장치 4
컴퓨터의구성과역할 하드웨어 입력장치 : 키보드, 마우스, 스캐너, 조이스틱, 디지털카메라, 통신장비 중앙처리장치 (CPU: Central Processing Unit): 연산장치 (ALU), 제어장치 (CU), FPU 주기억장치 (Main Memory): DRAM, SRAM FRAM (Ferroelectric Random Access Memory): 강유전체메모리, RAM/ROM, 비휘발성 보조기억장치 : Flash Memory, 하드디스크, 플로피디스크, Compact Disc, Magnetic tape 출력장치 : Monitor (CRT, LCD), 프린터, 플로터, 통신장비 5
컴퓨터의구성과역할 소프트웨어 시스템소프트웨어 : 운영체제 (Operating Systems, Kernel) 언어처리기 (Translator) : Compilers (C, C++) Interpreter (Java,,) 개발환경 (Development environment) : editor, debugger, compiler, 등 미들웨어 : WIPI, JVM, CORBA, DCOM, etc 응용소프트웨어 : WP, 게임, 데이터베이스, 그래픽, etc. 6
컴퓨터의구성과역할 응용 SW 사무도구 응용 SW 자동제어 시스템소프트웨어 하드웨어 응용 SW 그래픽 응용 SW 데이터베이스 응용 SW 통신 7
컴퓨터의특징 Huge and low cost data/information storage/retrieval Fast processing Digital processing ( 오차포함 ) Network server/terminal device 나는연결되어있다. 고로존재한다 모든생활분야에의이용 ( 통신, 보안, 정보가전, 예술, 사무, 환경, 도로, 무기 ) : Servers Desktops Embedded devices 8
컴퓨터의분류 성능 / 크기에의한분류 Embedded System : PDA(Personal Data Assistant: 개인정보단말기 ), STB, 휴대폰, 무기, 통신장비, sensors 등 Ubiquitous/Pervasive & wearable computing Notebook, micro computer, PC, Work Station, Thin server mini computer, main frame computer, (server) super computer 사용목적에의한분류 범용컴퓨터 (general purpose computer) 특수용컴퓨터 (special purpose computer) 9
컴퓨터의역사 기계식계산기 초기의전자식컴퓨터 제 1세대컴퓨터 (1951 ~ 1958) 제 2세대컴퓨터 (1959 ~ 1964) 제 3세대컴퓨터 (1965 ~ 1970) 제 4세대컴퓨터 (1971 ~ ) 현재와미래 10
기계식계산기 주판 중국 Pascal 의계산기 (1642) Leibniz 의계산기 (1690) 젝쿼드 (18 세기초 ) Babbage 의자동기계식계산기 (analytic engine) (18 세기초 ) Hollerith 11
초기의전자식컴퓨터 ABC (Atanasoff-Berry Computer) : 1939 년견본, 1942 년개발 Mark I : 1944 년착수 ENIAC (Electronic Numerical Integrator and Calculator) : 1946 년 프로그램내장컴퓨터 (Stored Program Computer, Von- Neuman Architecture) 비교 : Calculator vs. Stored program computer 12
제 1 세대컴퓨터 (1951 ~ 1958) 특징 진공관사용 : 크고열이많이나기때문에넓은공간과특별한냉방장치 저장매체 : 자기드럼, 입출력 : 천공카드 프로그래밍언어 : 기계어, symbolic code 응용분야 : 급여및경리부문 상용제품 UNIVAC (Universal Automatic Computer) 13
제 2 세대컴퓨터 (1959 ~ 1964) 특징 Transistor (1948 년발명 ) 주기억장치 : magnetic core, 보조기억장치 : magnetic tape, magnetic disk Batch operating systems 모듈식하드웨어설계 고급프로그래밍언어 (FORTRAN, COBOL) On-line input and output 상용제품 CDC 6600: 최초의슈퍼컴퓨터등장 IBM 1130, 360 series 14
제 3 세대컴퓨터 (1965 ~ 70 후반 ) 특징 집적회로 (IC: Integrated Circuit) 의발명 (1958 년 ) 과사용 (IC CPU, IC memory) Time-Sharing Operating Systems Multi-tasking Interactive terminals (Motivation : Airline reservation) 최초의미니컴퓨터 (1965 년 DEC 의 PDP-8) 판매 소프트웨어의중요성대두 -> 소프트웨어산업등장 15
제 4 세대컴퓨터 ( 70 후반 ~) LSI (Large Scaled IC), VLSI (Very LSI) 사용 Virtual storage system 마이크로프로세서등장 -> 마이크로컴퓨터 One chip CPU, One board computer (super) Mini computer 의확산 Main frame computer, Super computer 의발전 새로운프로그래밍언어의등장 ( 객체지향언어 ) PC 의발전과대중화 16
현재와미래 인공지능컴퓨터 추론, 지식베이스, 전문가시스템, 자동번역및통역 분산 (distributed), 병렬 (parallel) 시스템 Super computer :network of poly computing components in a computer Cluster : network of cooperating servers (or PCs) in a cabinet, seen as a computer Distributed system : network of servers (or PCs) in an area (Lab., building, country,..), seen as a system 17
현재와미래 정보의멀티미디어화, 공유화, 내장형화. 인간친화성 Internet, 차세대 internet 화상회의, VoD, Virtual reality, 3-D Animation, Simulation 전자도서관 전자상거래 ( 보안 ) Desktop collaboration (3D 공동설계등 ) 지능형로봇, 무인항공기, 무기체계, 전자전, 자동차제어 (x-by-wire) DMB, Telematics, Home automation/network 18
현재와미래 초고속통신 / 무선통신 ATM, Gigabit, xdsl Optical fiber, Cable, Twisted pair,.. Mbps, Gbps, Tera-bps Mobile - computing Embedded systems (Embedded everywhere) Ubiquitous/Pervasive & Wearable computing 정보가전, 휴대폰, sensor network Home-automation, set-top box 19
현재와미래 Real-time systems, Embedded systems 공장자동화, 자동차 무기제어 훈련용 simulator Fault-takeover / Fault-tolerance systems 무기제어 원전제어 20
Computer Hardware 컴퓨터시스템하드웨어 중앙처리장치 (CPU) 주기억장치 입출력모듈 (Interface, Controller) Interconnection Structure 외부장치 (Peripheral devices) 보조기억장치 입출력장치 21
컴퓨터시스템하드웨어 Memory CPU Interconnection (Bus, Switch, etc) 입력장치 IO Module 출력장치 보조기억장치 22
컴퓨터시스템하드웨어 (BUS) 중앙처리장치 호스트버스 Cache 호스트 /PCI 브리지 주기억장치 PCI 버스 LAN 보드그래픽보드 MPEG-2 보드확장버스제어기 EISA 또는 ISA 버스 보조기억장치 기타입출력장치 모뎀 / 팩스보드 BIOS ROM 23
중앙처리장치 (CPU) 주기억장치에 load 된기계어프로그램을 execution (Stored program computer) CPU 가수행하는명령어종류 자료이동, 연산 제어이동, 자료변환 입출력 시스템명령 24
중앙처리장치 (CPU) CPU 구성 ALU (Arithmetic Logic Unit) Registers Internal Bus : CPU 내자료의이동 CU (Control Unit) : CPU 동작제어 System Clock : 정규적인간격으로펄스를발생하여 CPU 의가장미세한단위의동기적 (synchronized) 연산을작동시킴 ( 예 : 100MHz) 기타 FPU (Floating Point Unit) Cache MMU (Memory Management Unit) 25
중앙처리장치 (CPU) ALU (Arithmetic Logic Unit) +, -, *, /, AND, OR ( 일반적으로 ) 한번에한개의연산수행 연산회로로수의저장기능은없음 Registers (8, 16, 32, 64 bit registers) CPU내연산및제어자료의임시저장장치 연산전후의자료를저장 (ALU의입출력장소 ) CPU speed >> IO devices 26
중앙처리장치 (CPU) Internal Bus Reg. 0 3 Reg. 1 5 ALU 8 Reg. 0 + : control signal CU (Control Unit) 27
중앙처리장치 (CPU) CPU 성능단위 MHz, GHz Mips, Gips Mflops, Gflops Lips 컴퓨터의 performance ( 성능 ) 은 CPU 의속도에의해서만결정되는것이아님 Intel x86, Arm, Alpha, Mips, Sparc CPU 들 28
주기억장치 일반적인메모리특성 최소기억단위 (bit) 기억장소단위 (byte, word) <-> Address Byte(Word) addressable machine 메모리용량 (kilo, Mega, Giga, Tera) Linear memory : address n bits space : 0 ~ 2n - 1 Access time : O(10ns) 29
주기억장치 RAM (DRAM, SRAM) : volatile FRAM : nonvolatile, RAM/ROM ROM (Read only and nonvolatile) BIOS ROM Mask ROM, PROM, EPROM, EEPROM 30
주기억장치 RAM (Random Access Memory) Access time : 주어진번지에쓰거나읽는데걸리는시간 Random access : Access time is independent of locations (addresses) Sequential access : Magnetic tapes Direct access : Hard disks Main memory 는자료의저장장치가아님 수행할프로그램을수행중에임시저장하는장치 기계어프로그램 : instructions + data 31
CPU, Memory, Instruction Execution Machine language instruction Add A, B : 1101001 00010000, 00010001 B= A + B (A+B -> B) : memory 의 16 번지의내용과 17 번지내용을더하여 17 번지에저장하라 수행과정 (CU 의통제에의해일어남 ) Fetch an instruction (from memory to a register) Decode the instruction ( 해석 ) Fetch operands (Memory 16, 17 번지 -> registers) Add using ALU, results -> register Store result in a register into mem. location(17 번지 ) 32
보조기억장치 Flash memory nonvolatile, read에비해느린write, 제한된수명 Flash와 FRAM의 buffering으로 flash file system 구현경향 Direct access storage devices 하드디스크 플로피디스크 CD-ROM Optical disks Sequential access storage devices DAT (Digital Audio Tape) Magnetic tape 33
Direct Access Storage Devices track sector moving head and arm Seek time : head -> track Latency : hear -> sector Read/Write time : RW and transfer Seek time is a major portion of IO. 34
입출력장치 (IO Modules and Devices) IO devices 보조기억장치 키보드, 마우스, Joy Stick Monitor Printer Speaker/Mike Scanner, Digital Camera, Digital Video 35
입출력장치 (IO Modules and Devices) IO Modules Interface cards (graphic, sound, printer,..) Controller (HDD, FDD,..) IO Processors : controller에 CPU가탑재된형태 IO Module의필요성 CPU와 Device 사이의제어및자료중계 CPU와 IO device의속도차이극복 (buffering) Data format conversion 호환성 36
운영체제 (OS:Operating System) 운영체제의종류 사용범위 동작방식 운영체제의구성 커널 서비스프로그램 커널의기능 37
운영체제의종류 사용범위 단일작업용 MS-DOS, Windows 3.1 다중작업용 (multi-tasking) Windows 98/NT/2000/XP/Vista, MacOS, OS/2 UNIX, LINUX 다중사용자 (multi-user, multi-tasking, server) UNIX, Windows NT, LINUX (Server) 38
운영체제의종류 동작방식 일괄처리시스템 (Batch Processing System) : 초기시스템 다중처리시스템 (Multi-Processing System, Multi-Tasking System) : off-line 시분할시스템 (Time Sharing System) : multi-tasking, CPU 시간을분할하여 (time-slice) 사용, 대화식 (interactive, online) 39
운영체제의종류 차세대운영체제 인공지능형운영체제 차세대인터넷지원 OS 고신뢰운영체제 실시간시스템 : 처리시간을보장하는운영체제 결함허용시스템 Embedded OS, RTOS, 초소형센서 OS 40
운영체제의구성 커널 주기억장치에상주, 자주쓰이는부분 자원관리 (Resource Management, Traffic Control) Virtual Machine 스케줄링, 인터럽트처리, 커널 API 서비스프로그램 (Utilities) 필요에따라주기억장치로로드되어수행 보다편리하게사용할수있도록하거나프로그램을수행하도록도와줌 41
프로그래밍언어 프로그래밍언어란 Syntax( 문법 ) : Context Free Grammar, Semantics ( 의미론 ) : 기계어로의번역을위한 Semantic Gap : 사람이생각하는방식과기계어의차이 High-level lang. : To reduce semantic gap Low-level lang. (Machine-level) 프로그램의구성 입력처리부분, 계산부분, 출력처리부분 42
프로그래밍언어 프로그래밍 과정 수준 프로그램의예 프로그래밍언어들 43
문서화프로그래밍과정 프로그래머 요구분석설계코딩, 테스트디버깅 프로그램 Maintenance (Upgrade) 44
프로그래밍수준 기계어 01011100 프로그래머 어셈블리어 ADD 1, 2 고급어 어셈블러 컴파일러 실행프로그램 ( 기계어 ) 하드웨어 PRINT 1+2 인터프리터 45
프로그래밍언어들 FORTRAN: 1958년, 과학계산용, FORTRAN90, HPF COBOL: 1959년말, 업무처리용 PL/1: 1960년대중반, 모든정보처리작업용, 방대함. ALGOL, PASCAL: 교육용, algorithm Ada: 84년, 군사프로젝트목적, 병렬처리개념도입 VRML 등 : 3-D modeling, HTML, XML : Web 문서제작 46
프로그래밍언어들 C: 72년, 운영체제작성용, 저급 / 고급지원, 광범위하게사용 LISP, PROLOG: 인공지능용언어 SQL : DB query C++, SmallTalk: 객체지향형언어 C# :.NET JAVA : 객체지향, Network computing VHDL, Verilog: 하드웨어기술언어 VRML 등 : 3-D modeling, 47