C Programming 컴퓨터시스템 (Computer Systems) Seo, Doo-Ok Clickseo.com clickseo@gmail.com
목 차 컴퓨터시스템 프로그래밍언어 2
컴퓨터시스템 컴퓨터시스템 컴퓨터하드웨어 컴퓨터소프트웨어 프로그래밍언어 3
컴퓨터시스템 컴퓨터시스템 하드웨어 : 물리적인장비 소프트웨어 : 프로그램 ( 명령어 ) 들의집합 Computer System Hardware Software 중앙처리장치주기억장치보조기억장치입력장치출력장치 시스템소프트웨어 응용소프트웨어 4
컴퓨터하드웨어 (1/3) 컴퓨터하드웨어의구성 중앙처리장치 (CPU) 입력장치 주기억장치 출력장치 저장장치 5
프로세서구성 컴퓨터하드웨어 (2/3) Control unit 과 Data-path 로구성 Control unit Data-path Control /Status ALU Processor Controller Registers PC IR I/O Memory 6
메모리계층구조 컴퓨터하드웨어 (3/3) Processor Datapath Control Registers On-Chip Cache Second Level Cache (SRAM) Main Memory (DRAM) Secondary Storage (Disk) Tertiary Storage (Tape) 속도빠르다느리다 용량작다크다 비용고가저가 7
컴퓨터시스템 컴퓨터소프트웨어 8
컴퓨터소프트웨어 컴퓨터소프트웨어 (1/6) 시스템소프트웨어와응용소프트웨어 Software System Software Application Software 운영체제시스템운영프로그램시스템지원프로그램시스템개발프로그램 범용소프트웨어 특정목적소프트웨어 9
컴퓨터소프트웨어 (2/6) 운영체제 (OS, Operating System) 자원관리 (resource management) 프로세스관리 메모리관리 (Memory management) 가상메모리 (Virtual memory) 시스템성능의최적화 장치관리 : 디바이스드라이버 (Device drivers) 파일관리 : 디스크접근및파일시스템 네트워크및보안 10
컴퓨터소프트웨어 (3/6) 운영체제 : 인터페이스 사용자인터페이스 (User Interface) 사용자편리성의최적화 컴퓨터하드웨어와사용자 ( 프로그램또는사람 ) 간인터페이스제공 CLI (Command Line Interface) GUI (Graphical User Interface) [ CLI, Bash (Bourne-Again Sell) - UNIX Shell ] [ GUI, X11 and KDE ] 11
컴퓨터소프트웨어 (4/6) 운영체제 : Microsoft Windows Microsoft Windows 10 [ DOS, Disk Operating Systems] [ Microsoft Windows 10 ] 12
컴퓨터소프트웨어 (5/6) 운영체제 : Apple macos macos : Mac OS X [ Apple macos ] 13
컴퓨터소프트웨어 (6/6) 운영체제 : GNU/Linux 리눅스 (Linux) 미닉스 (MINIX) 를기반으로유닉스표준화규격인 POSIX(Portable Operating System Interface for Unix) 를도입하여 PC에서동작하는유닉스계열운영체제 [ Bash, Bourne-again shell ] [ Ubuntu Desktop 18.04 ] 14
프로그래밍언어 컴퓨터시스템 프로그래밍언어 저급언어와고급언어 프로그래밍언어의역사 프로그래밍언어순위 15
저급언어와고급언어 (1/2) 시스템소프트웨어 : 시스템개발 시스템개발프로그램 어셈블러 (Assembler), 컴파일러 (Compiler), 링커 (Linker), 디버거 (Debugger) 등 /* 어셈블리언어 : 기호로된명령어 */ add A, B 어셈블러 1000110010100000 16
저급언어와고급언어 (2/2) C 언어 프로그램 temp = a; a = b; b = temp; 고급언어 어셈블리언어 프로그램 mov eax, dword ptr [ebp+8] mov dword ptr [ebp-4], eax mov ecx, dword ptr [ebp+0ch] mov dword ptr [ebp+8], ecx mov edx, dword ptr [ebp-4] mov dword ptr [ebp+0ch], edx 저급언어 기계어 프로그램 000000 00000 00101 0001000010000000 000000 00100 00010 0001000000100000.................. 17
프로그래밍언어 프로그래밍의역사 18
프로그래밍언어의역사 (1/4) 프로그래밍언어의역사 [ 출처 : 알렌터커, 프로그래밍언어 ] 19
프로그래밍언어의역사 (2/4) 절차적프로그래밍 (procedural programming) 절차적인언어 (Procedural Language) 명령형언어 (imperative language) C, FORTRAN, COBOL, PASCAL 등 Go : 현대적인절차언어 (2009년, 공식발표 ) #include <stdio.h> int main(void) { int a = 10; int b = 20; int res; C 언어의순차구조 res = a + b; } return 0; 20
프로그래밍언어의역사 (3/4) 객체지향프로그래밍 (Object-Oriented Programming) 객체 (Object) 들의모임 구성요소 : 클래스, 객체, 메소드, 메시지 특징 : 캡슐화, 추상화, 다형성, 상속, 인스턴스등 객체지향프로그래밍언어 C++, JAVA, C# 등 인터페이스 ( 멤버함수 ) 내부변수 사용자 구현자 21
프로그래밍언어의역사 (4/4) 스크립트언어 (Script Languages) 컴파일 (compile) 을하지않고, 작성해서바로실행시킬수있는언어 배치언어 (batch languages) 제어언어 (job control language) 특징 : 매우빠르게배우고작성하기위해고안 컴파일을하지않고, 변수타입을선언하지않는다. Python, JavaScript, Ruby PHP, ASP, JSP Perl, Tcl/Tk, UNIX Shell Script 등 22
프로그래밍언어 프로그래밍언어순위 23
프로그래밍언어순위 (1/5) IEEE Spectrum The 2018 Top Programming Languages [ 출처 : IEEE Spectrum, 31 Jul 2018. ] 24
프로그래밍언어순위 (2/5) PYPL Index PYPL PopularitY of Programming Language [ 출처 : PYPL Index, Pierre Carbonnelle, Feb 2018. ] 25
프로그래밍언어순위 (3/5) TIOBE Index Very Long Term History [ 출처 : TIOBE Index for January 2019, Jan 2019. ] 26
프로그래밍언어순위 (4/5) Stack Overflow Most Popular Technologies Programming, Scripting, and Markup Languages [ 출처 : Developer Survey Results, Stack Overflow, 2018. ] 27
프로그래밍언어순위 (5/5) GitHub : State of the Octoverse, 2018 Fastest growing languages [ 출처 : GitHub Octoverse 2018, GitHub, https://octoverse.github.com/, 2018. ] 28
참고문헌 [1] 서두옥, 이동호 ( 감수 ), ( 열혈강의 ) 또하나의 C : 프로그래밍은셀프입니다, 프리렉, 2012. [2] Paul Deitel, Harvey Deitel, "C How to Program", Global Edition, 8/E, Pearson, 2016. [3] Behrouz A. Forouzan, 이동호외 6인공역, 컴퓨터과학, 한티미디어, 2005. [4] David A. Patterson, John L. Hennessy, 박명순외 3인공역, 컴퓨터구조및설계, 사이텍미디어, 2005. [5] The 2018 Top Programming Languages, IEEE Spectrum, 2019 of viewing the site, https://spectrum.ieee.org/. [6] PYPL PopularityY of Programming Language, Pierre Carbonnelle, 2019 of viewing the site, http://pypl.github.io/. [7] TIOBE Index for January 2019, TIOBE Software, 2019 of viewing the site, https://www.tiobe.com/tiobe-index/. [8] Developer Survey Results 2018, Stack Overflow Insights, 2019 of viewing the site, https://insights.stackoverflow.com/. [9] GitHub Octoverse 2018, GitHub, 2019 of viewing the site, https://octoverse.github.com/. 이강의자료는저작권법에따라보호받는저작물이므로무단전제와무단복제를금지하며, 내용의전부또는일부를이용하려면반드시저작권자의서면동의를받아야합니다. Copyright Clickseo.com. All rights reserved. 29