고급 시스템 프로그래밍 제1장 소개 창병모 숙명여대 컴퓨터과학과.

Slides:



Advertisements
Similar presentations
숙명여대 창병모 2011 가을 1. Unix/Linux 의 효과적 사용  command, shell programming, X-window,... 시스템 프로그래밍 능력 향상  file, process, network programming 시스템의 체계적 이해 및.
Advertisements

OS 변천사 UNIX-ANDROID OS 의 변천사 From UNIX To Android OS.
1 장 유닉스 소개 1. 강의 목적 및 내용 2 강의 목적  유닉스 / 리눅스 시스템의 체계적 이해 및 활용  시스템 프로그래밍 능력 향상 강의 내용  유닉스 / 리눅스의 효과적 사용 명령어, 파일 시스템, 네트워킹, X- 윈도우, 쉘 프로그래밍  유닉스 / 리눅스.
Understanding of Computers 3rd Chapter 03 소프트웨어와 운영체제.
2016 유성환 Hybrid MOBILE.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
IF(Infinite Fork) 유닉스 시스템 / 정상훈 / 이재형
1장 유닉스/리눅스 소개.
컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Basic of Buffer Over Flow
Linux/UNIX Programming
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
제3장 C 프로그래밍 환경.
제 2장 컴퓨터 구조.
1장 리눅스의 기본 개념과 프로그램 작성 리눅스의 기본 개념 시스템에 접속하기 리눅스의 프로그래밍 환경
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
제 11장 C 프로그래밍.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
강 명 수 LINUX 소개 강 명 수
System Call Linux Kernel 수업 3번째.
FUSING.
공학기초설계 Youn-Hee Han 강의 소개 & MinGW & gcc 공학기초설계 Youn-Hee Han
소개: Unix란 무엇인가? 숙명여대 창병모 2009/09.
제9장 C 프로그래밍 환경 창병모
Linux/UNIX Programming
QT 프로그래밍 발표: 김래영.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
UNIX 시스템 정보통신공학과 이 우 섭.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Computer Architecture
Term Project Team Member
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
Cross Compiler 설치.
Understanding of Computers 3rd
Linux/UNIX Programming
AVR – ATmega103(ATMEL) Compilers & ISP
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Linux/UNIX Programming
리눅스 시스템 & 커널 기초 P.46 – P.53 이름: nsh009 학번: 112 1/20.
2015 운영체제 특강 수업 소개 Special Topics on Operating Systems
Device Driver 임베디드 시스템 I.
Linux/UNIX Programming
제1장 Unix란 무엇인가?.
OS 역사 손병규.
Linux/UNIX Programming
작은 분야의 일을 훌륭하게 해내는 자그마한 도구들을 개발자들에게 제공하고 개발자들은 이 도구들을 창의적으로 결합하여 사용하자.
LabVIEW WiznTec 주임 박명대 1.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
제9장 C 프로그래밍 환경 TOPCIT (Test of Practical Competency in IT)
Linux/UNIX Programming
Homework 7… 마지막 수업시간까지 (실습) 매개변수로 입력 받아 처리할 수 있도록 수정해 보세요
Linux/UNIX Programming
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
( Windows Service Application Debugging )
뇌를 자극하는 Solaris bible.
Lab 1. 시스템 호출을 이용하는 mycp.c mycphint1.c & mycphint2.c coding & compile & run 제출 방법 (집에서도 접속 가능합니다) 2 Electronic versions: multi.incheon.ac.kr ( )의.
GDB - GNU Debugger 김진용.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
1장. C Language Synopsis.
Linux/UNIX Programming
C프로그래밍 도구 컴퓨터공학과 강성인.
Presentation transcript:

고급 시스템 프로그래밍 제1장 소개 창병모 숙명여대 컴퓨터과학과

강의 목적 시스템 프로그래밍 Unix 시스템의 체계적 이해 고급 시스템 프로그래밍 능력 향상 file, process, network programming Unix 시스템의 체계적 이해 고급 시스템 프로그래밍 능력 향상

동기 시스템 프로그래밍 OS 지원을 이용한 프로그래밍 Unix 시스템 호출 사용 파일 관리 소프트웨어 네트워크 관련 소프트웨어 file, process, IPC, networking, … 파일 관리 소프트웨어 네트워크 관련 소프트웨어 DBMS, compiler, groupware, debugger, …

Unix 운영체제 1970년대 벨 연구소의 켄 톰슨, 데니스 리치가 개발 다양한 버전 특징 유닉스 시스템의 개념 오늘날의 유닉스 시스템은 AT&T를 비롯한 여러 회사들과 버클리대학(UCB) 등 비영리 단체들이 개발한 다양한 버전 특징 다양한 시스템 사이에서 서로 이식할 수 있음 다중 사용자 및 다중 작업을 지원 유닉스 시스템의 개념 일반 텍스트 파일 명령줄 인터프리터 계층적인 파일 시스템 장치 및 특정한 형식의 프로세스 간 통신을 파일로 취급 등.

Unix 족보

유닉스 종류와 특성 Unix 1970년에 AT&T의 벨 연구소에서 개발한 운영체제로 처음에는 중형 컴퓨터에 사용하도록 고안 여러 가지 유틸리티가 공개되면서 일반 사용자들에 확산 특징 다중 사용자, 다중 작업 처리 가능 프로그램 개발이 쉬운 운영체제 대부분 통신 서비스 프로그램은 Unix를 기반으로 하고 있음

유닉스 종류와 특성 Linux 1991년 핀란드의 대학생이었던 리누스 토발즈(Linus Benedict Torvalds, 1969~ )에 의해 만들어진 운영체제 개인 컴퓨터용 UNIX에 해당 특징 프로그램 소스코드가 공개돼 있어 프로그래머가 원하는 대로 특정기능 추가 가능 어느 플랫폼에도 포팅(porting)이 가능 무료 종류 레드햇(radhat), 데비안(debian), 슬렉웨어(slackware) 등

유닉스 종류와 특성 Mac OS Apple 컴퓨터의 매킨토시 계열 개인용 컴퓨터나 워크스테이션용 운영체제로 개인용 컴퓨터에 GUI를 처음으로 도입 1984년에 처음으로 세상에 선을 보인 이후로 거듭 발전 현재 새로운 Mac OS X 특징 문서편집이나 그래픽분야에서 많은 사랑을 받고 있음 Apple의 스마트폰인 iphon과 디지털 미디어 재생기인 ipod touch에도 내장되어 사용

유닉스 종류와 특성 Solaris Unix 계열의 운영체제 중 하나 Linux보다 훨씬 먼저 출시가 된 상용 운영체제 특징 처음에는 SUN에서 제작한 스팍(Sparc) CPU를 사용한 기종에서만 사용되는 전용 운영체제로 전문가들이 주로 사용 인텔 아키텍처의 대량 보급으로 인하여 인텔용 Solaris도 출시 됨

유닉스 종류와 특성 모바일 운영체제 현재 세계시장에 공급되는 범용으로 사용되는 모바일 운영체제 모바일 운영체제들의 특징 Windows Mobile, Symbian, Falm, BlackBerry, Linux 등 모바일 운영체제들의 특징 MS사의 Windows Mobile과 Nokia의 Symbian 등은 사용하는데 편리함 Apple, MS 등은 좀 더 많은 개발자와 사용자들에게 API를 제공함 Linux는 아예 모든 것을 공개 Linux를 기반으로 모바일 운영체제 리모(LiMo) 안드로이드(Android)

시스템 프로그래밍 소개

The System architecture of UNIX Hardware CPU, Memory, Disk, Peripherals Kernel Process management File management Memory management Device management System call the programmer's functional interface to the UNIX kernel Commands, Utilities, Application programs kernel services using library routines or system calls

시스템 호출 Process System call interface File Management IPC Process Management

시스템 호출 시스템 인터페이스 역할 Application programs talk to the operating system via system calls Programmer’s functional interface to the UNIX kernel

사용자 모드/커널 Kernel User process open(char *name, int mode) { Address of kernel close() Address of kernel open() result=open(“file.txt”, O_RDONLY); Address of kernel write() User code open(char *name, int mode) { <Place parameters in registers> <Execute trap instruction, switching to kernel code > <Return result of system call> } kernel code for open() { <Manipulate kernel data> . . . <Return to user code> } Kernel system call code C runtime library

시스템 호출 요약 파일 관련 시스템 호출 프로세스 관련 시스템 호출 시그널 관련 시스템 호출 IPC 관련 시스템 호출 open(), close(), read(), write(), dup(), seek(), … 프로세스 관련 시스템 호출 fork(), exec(), exit(), wait(), getpid(), getppid(), … 시그널 관련 시스템 호출 signal(), alarm(), kill(), sleep(), … IPC 관련 시스템 호출 pipe(), socket(), …

시스템 호출과 C 라이브러리 함수

시스템 호출과 라이브러리 함수 시스템 호출(System Calls) C 라이브러리 함수(Library Functions) Unix 커널에 서비스 요청하는 호출 UNIX man의 Section 2에 설명되어 있음 C 함수처럼 호출될 수 있음. C 라이브러리 함수(Library Functions) C 라이브러리 함수는 보통 시스템 호출을 포장해 놓은 함수 보통 내부에서 시스템 호출을 함

시스템 호출과 라이브러리 함수 application code user process C library functions system calls kernel kernel hardware (harddisk…)

C Standard I/O Library 1975년에 Dennis Ritchie에 의해 작성 많은 OS 상에 구현됨 ANSI C Standard Library 버퍼 할당(Buffer allocation) 최적 크기 단위로 I/O를 수행 디스크 I/O 횟수 최소화 스트림(Stream) 열린 파일을 스트림이라고 한다. 문자의 흐름으로 파일 입출력을 다룬다

C 프로그래밍 개발 도구

컴파일러 gnu c compiler 실행 파일 지정 컴파일 실행 gcc sample.c a.out gcc –o sample sample.c sample

다중 모듈 프로그램 여러 개의 파일로 구성된 프로그램 #include <stdio.h> reverse.h void reverse(); /* 선언 */ reverse.c #include <stdio.h> #include “reverse.h” void reverse(char *before, char *after) { int i, j, len; len = strlen(before); for (j = len-1, i=0; j>=0; j--, i++) after[i] = before[j]; after[len] = NULL; }

다중 모듈 프로그램 main1.c gcc –c reverse.c main1.c #include <stdio.h> #include “reverse.h” main() { char str[100]; reverse(“cat”, str); printf(“reverse (\”cat\”) = %s\n”, str); reverse(“noon”, str); printf(“reverse (\”noon\”) = %s\n”, str); } gcc –c reverse.c main1.c gcc –o main1 reverse.o main1.o main1

디버거 gdb gdb 기능 컴파일 gdb 실행파일 단일 단계 이동(single stepping) 정지점(breakpoint) 변수 접근 및 수정 함수 탐색 추적(tracing) 컴파일 gcc –g 옵션을 이용하여 컴파일 gdb 실행파일 help

gdb 명령어 break [file:]function run [arglist] bt print expr c next step Set a breakpoint at [file:]function run [arglist] Start program bt Backtrace: display the program stack. print expr c Continue running program next Execute next line (after stopping); step over any function calls in the line. step Execute next line; step into any function calls in the line. quit

DDD on Linux Data Display Debugger (DDD) Graphical gdb on Linux

The File Dependency System Make Why do we use make ? gcc "reverse.c" gcc -o main1 reverse.o , main1.o … to produce a new version gcc -o main2 reverse.o , main2.o … to produce a new version We want to update files automatically based on dependency rules  make [ -f makefile] - updates files based on a series of dependency rules in "make file". - If no option is specified, the name "makefile" is assumed.

The File Dependency System Make make files consist of make rules targetList: dependencyList commandList targetList a list of target files dependencyList a list of files that the files in targetList depend on a list of commands that reconstructs the target files from the dependency files.

The File Dependency System Make main1: main1.o reverse.o gcc main1.o reverse.o -o main1 main1.o : main1.c reverse.h gcc -c main1.c reverse.o : reverse.c reverse.h gcc -c reverse.c Figure : make dependency tree main1 main1.o reverse.o main1.c reverse.h reverse.c reverse.h