Unix/Linux 프로그래밍 인천대학교 컴퓨터공학과 성 미 영 ( 成 美 暎 )
Unix 시스템 2 수업 개요 및 목표 개요 강력하고 안정적인 기능을 제공하는 중요한 운영체제인 Unix/Linux 시스템 및 Unix/Linux 프로그래밍에 대하여 학습한다. Unix/Linux 시스템의 사용법을 익 히고 Unix/Linux 환경에서의 다양한 프로그래밍 기법과 관리 기법 및 Unix/Linux 의 내부구조에 대하여 깊이 있게 이해하도록 하여 Unix/Linux 시스 템을 개념과 동작 원리를 이해하고, Unix/Linux 시스템을 효과적으로 활용하 고, 새로운 운영체제 또는 새로운 Unix/Linux 응용 시스템을 설계하고 개발할 수 있는 유능한 인재를 양성한다. 목표 Unix/Linux 시스템에서 실제 코드를 다루기 위한 기본 지식을 습득한다. 명령어 유틸리티 Unix/Linux 시스템에서 다양한 프로그래밍 기법을 익힌다. 셜 프로그래밍 고급 언어 (C 언어 ) 프로그래밍 시스템 프로그래밍 네트워크 프로그래밍 윈도우 프로그래밍 Unix/Linux 시스템의 관리 능력을 기른다. Unix/Linux 시스템의 내부구조에 대하여 깊이 있게 이해한다. Unix/Linux 시스템을 개념과 동작 원리를 이해하고, Unix/Linux 시스템을 효 과적으로 활용하고, 새로운 운영체제 또는 새로운 Unix/Linux 응용 시스템을 설계하고 구현할 수 있는 기초 능력을 배양한다.
Unix 시스템 3 Unix 교재 및 참고문헌 교재 ★조경산 역, 이한출판사, 프로그래머와 사용자를 위한 UNIX 완성, UNIX for Programmers and Users, 2 nd Ed., Graham Glass, Prentice Hall PTR, 참고문헌 W. Richard Stevens, Unix Network Programming, 2 nd Ed., Prentice Hall PTR, 개정증보판 Unix Network Programming, 2 nd Ed., Stevens 저, 김치하, 이재용 역, 교보문고, K. Havilland, D. Gray, B. Salama, Addison-Wesley, Unix System Programming, 2nd Ed., 1998(99) 한국어판 Unix 시스템 프로그래밍 Second Edition, Keith Haviland, Dina Gray, Ben Salama 저, 조유근 역, 홍릉과학출판사, Gail Anderson and Paul Anderson, The Unix C Shell Field Guide, Prentice-Hall PTR, 한국어판 The Unix C Shell Field Guide, Anderson · Anderson 저, 감창룡 역, 홍릉과학출판사, 1997 Douglas A. Young, The X Window System Programming and Application with Xt, 2nd Ed., Prentice Hall PTR, 한국어판 The X Window System Programming and Application with Xt 제 2 판, Young 저, 박승규 외 4 인 역, 대영사, Maurice J. Bach, The Design of the Unix Operating System, Prentice Hall International, Inc., 1986 Unix 의 내부구조, 조유근 역편, 홍릉과학출판사, Jim Mauro, Richard McDougall, Solaris Internals: Core Kernel Architecture, Prentice-Hall PTR, Evi Nemeth, Garth Snyder, Scott Seebass, Trent R. Hein, Prentice Hall PTR, Unix System Administration Handbook, 2nd Ed., 한국어판, Unix System administration Handbook, 2nd Ed. Nemeth, Snyderm Seebass, Hein 저, 최재영, 김명호, 김영배 역, 홍릉과학출판사, AEleen Frisch, O'Reilly, Essential System Administration, 2nd Ed., 시스템 관리의 핵심, 2nd Ed., AEleen Frusch 저, 장 훈 역, 한빛미디어, 1998.
Unix 시스템 4 Linux 참고문헌 참고문헌 ★예제로 쉽게 작성하는 LINUX 네트워크베스트 프로그래밍, 雪田修一 저, 권용진 역, 도서출판 인터비젼, 리눅스 배움터, 안귀임, 노영욱, 김영주 공저, 정익사, 와우리눅스 7.0 Kkachi 홈페이지 : Linux Kernel Programming, Third Edition, M Beck, H Böhme, M Dziadzka, U Kunitz, R Magnus, C Schröter, D Verworner, Addison Wesley, 2002.
Unix 시스템 5 수업진행 방법 및 평가 수업진행방법 주교재 및 부교재 내용을 중심으로 하여 강의와 동시에 Unix 및 Linux 컴퓨터를 이용하는 실습을 병행한다 모든 실습 내용은 과제물로 제출한다. Unix/Linux 환경에서 소프트웨어를 개발하는 단기 프로젝트를 수행 한다. 평가 중간 : 30% 기말 : 30% 실습 및 과제 : 20% 출석 및 수업 기여도 : 20% Bonus: 명예의 전당 입성자
1 장 유닉스 (Unix) 란 ?
Unix 시스템 7 오 ! 유닉스 유닉스는 세련되고 영리한 사람들을 위한 도구의 집합이다. 유닉스는 재미있다. 유닉스는 배우기는 어렵지만 사용하기는 쉽다. 기본을 공부하는 것부터 시작하라. 그런 다음 원하는 것을 순서에 상관없이 공부하라. 유닉스의 모든 것을 배우기는 힘들다. 필요한 것과 재미있을 것 같 은 부분에 관심을 쏟는 것이 좋다.
Unix 시스템 8 컴퓨터 시스템 하드웨어 CPU(Central Processing Unit) RAM(Random Access Memory) ROM(Read Only Memory) Disk Monitor Graphic card Keyboard Mouse Printer Ethernet Interface Modem Scanner MIDI(Musical Instrument Digital Interface) Video capture board Voice recognition card Synthesizer 소프트웨어 시스템 소프트웨어 : 운영체제 응용 소프트웨어 : 게임 등
Unix 시스템 9 Unix 자원 공유 CPU 공유 : time slice 메모리 공유 : page 디스크 공유 : block
Unix 시스템 10 Unix 통신 통신의 유형 출력 : 그래픽 카드와 대화 입력 : 키보드와 대화 네트워크 서비스 : 다른 컴퓨터와 대화 공동 작업 : 프로세스 사이의 대화 통신 메커니즘 파이프 (pipe): 같은 기계, one-way medium-speed data channel 소켓 (socket): 다른 기계, two-way high-speed data channel
Unix 시스템 11 Unix 프로그램, 프로세스, 파일 파일 : 디스크에 저장된 자료의 모음 프로그램 : 파일에 저장되어 있는 일련의 명령어와 자료를 표현하 는 바이트들의 집합, RAM 으로 적재되어 실행됨 프로세스 : 실행 중인 프로그램 프로그램, 프로세스, 파일 소유자 (owner) 가지며 접근이 보호됨 위치를 부여하는 계층적인 디렉토리 (directory) 가짐 생성 / 수정 / 삭제 서비스 제공
Unix 시스템 12 Unix 특징 동시에 여러 사용자가 사용 (multiuser/multiprocess system) 프로그램, 프로세스, 파일의 생성 / 수정 / 삭제 제공 프로세스와 파일의 위치를 부여하는 디렉토리 계층 제공 공정하고 효과적인 프로세서, 메모리, 디스크 공유 주변장치, 다른 기계, 프로세스 사이의 의사 소통 지원 많은 표준 유틸리티 (utilities) : GNU (GNU's Not Unix!), 시스템 호출 (system calls) 을 통한 Unix 서비스 접근 이식성 우수하여 다양한 기종에서 활용 강력한 shell programming open system : 저렴한 가격으로 소스 제공
Unix 시스템 13 Unix 철학 (Philosophies of Unix) 파이프 (pipe) 한 프로세스의 출력이 다른 프로세스의 입력이 됨 파이프 라인 여러 프로세스들이 연결되어 자료가 흐르는 파이프 라인 형성 장점 문제를 프로세스들의 정렬된 구성으로 해결 ( 예 ) $ who | sort Unix 환경에서 문제를 해결하는 단계들 파이프와 유틸리티를 이용하여 해결 시도 네트워크 상에 질문하여 해결 시도 유틸리티를 스스로 작성하여 해결 시도 ( 재사용될 수 있도록 작성 ) 응용 프로그램 작성 수퍼 유저 (super user) 모든 코드와 자료에 접근할 수 있는 특권을 갖고자 하는 사람들이 설계 특권을 여러 준 수퍼 유저 (slightly super user) 에게 나누는 시스템도 있음
Unix 시스템 14 1971 AT&T Bell Lab. Ken Thompson MIT Multics (Multiplexed Information and Computing Services) 의 영향 Unics Unix PDP-7 어셈블러로 쓰여짐 1973 C 언어로 다시 씀 1970 Ken Thompson 이 B 언어, 1973 Dennis Ritchie 가 C 언어 만듦 여러 컴퓨터로 이식됨 버전들 AT&T System V(five) 계열 BSD(Berkeley Software Distribution) 계열 Linux ( Linus Torvalds (Finnish student of Computer Science) 1991 PC 용 System V + BSD Unix GNU ( : source code is available 표준화 연구 UI (Unix International) : System V 4.1 : AT&T, SUN OSF (Open Software Foundation) : OSF/1 : IBM, DEC, HP POSIX (Portable Operating System Interface) (1986, IEEE1000.3) Unix 역사
Unix 시스템 15 Unix 제품들 Solaris 2.X (Sun) : System V + BSD ( HP-UX (HP) : System V + BSD ( IRIS (Silicon Graphics) : System V ( AIX (IBM) : System V+BSD ( OSF/1 (DEC) : BSD + System V, Ultrix 는 BSD ( BSD/OS (Berkeley) ( SunOS (Sun) : BSD NextSTEP : Mach 의 확장 ( Linux (linux Torvalds) : 내부 BSD, 인터페이스 System V, PC 용 ( NetBSD : 4.4BSD Lite 기반 ( FreeBSD : Berkeley Net/2 기반, PC 용 ( SCO (Santa Cruz Operation) Unixware: System V, PC 용 (
Unix 시스템 16 Unix 의 미래 객체 지향 프로그래밍 (object-oriented programming) 객체 지향 기법을 효과적으로 활용하여 Unix 개선 병렬, 분산 처리 (parallel & distributed processing), 멀티프로세서 시스템 지원 병렬 처리 (doing more than one task in parallel) Tightly coupled multiprocessor system Shared-resource architecture Bus, Clock, Memory, 주변기기를 공유 Shared memory 통해 교류 분산 처리 Loosely coupled multiprocessor system Shared-nothing architecture 각 processor 는 자신의 local memory 를 가짐 communication line (high-speed bus, telephone line) 통해 교류 멀티프로세서 시스템 Shared-memory or shared resource architecture) ( 예 ) Sequent 사의 Unix platform 32 비트에서 64 비트로 (the move from 32-bit to 64-bit systems) IPv6(128 비트 IP 주소 ) 지원 : IPv4(32 비트 IP 주소 ) 의 수퍼 세트 고속 통신 네트워크 (high-bandwidth network) 지원 결함 허용 Unix 시스템 (fault-tolerant systems) : hot backup system
Unix 시스템 17 Unix 사용자 비프로그래머 셸 사용자 진보된 비프로그래머 진보된 셸 사용자 프로그래머 시스템 프로그래머 시스템 개발자 시스템 관리자
Unix 시스템 18 실습 : 로그인 실습 컴퓨터 csblade.incheon.ac.kr ( ) csmail.incheon.ac.kr ( ) ① Xmanager 실행시키거나 ② 윈도우 ‘ 시작 ’ 메뉴에서 ‘ 실행 ’ 선택해서 telnet csblade.incheon.ac.kr login: s Passwd: ******
Unix 시스템 19 실습 : 명령을 입력해 보세요 $date $man date $date^M (carriage return) $date^J (line feed, new line) $echo ^G^G^G (bell) $^S (stop) [Control-S] $^Q (continue) [Contol-Q] $stty -a $ls $ls -l $ls -al $cal $bc … [Control-D] $uptime $hostname $who $who am i $echo hello $echo hello > xx 또는 $> xx echo hello $ls $cat xx $cat $cat > xx 또는 > xx cat hello $cat xx $ 한 / 영 키 눌러 보세요 !
Unix 시스템 20 Control Characters ^c Value ^c Value ^c Value a, A l, L w, W b, B m, M x, X c, C n, N y, Y d, D o, O z, Z e, E p, P [ f, F q, Q \ g, G r, R ] h, H s, S ^ i, I t, T _ j, J u, U ? k, K v, V 각 키의 의미는 ASCII Character Set ANSI X3.4 –1968 참조
Unix 시스템 21 잠깐 ? 열심히 공부할 사람 쉽고 편한 것만 좋다어렵고 힘들어도 좋다 편안하게 조금만 올라갈래힘들어도 높이 올라갈래 약해도 좋다강해지고 싶다 행복 끝 고생 시작할래고생 끝 행복 시작할래 ? 세련되고 영리한 사람
Unix 시스템 22 해 ? ! 무얼 해 ? 몸값을 ? ? ? ! 무얼 잘해 ? ? ? ? 걸 잘해야 해 ! 어떻게 해 ? ? ? 라고 해야 해 !
Unix 시스템 23 숙제 자기 소개를 1 분 이내로 이야기 한다. 왜 이 수업을 듣는지도 밝힌다. 수업시간 (1): 화 56, 수 8 수업시간 (2): 수 12, 목 1