Microsoft PowerPoint - chap1 [호환 모드]

Similar documents
Microsoft PowerPoint APUE(Intro).ppt

chap7.key

Microsoft PowerPoint - chap4 [호환 모드]

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

歯9장.PDF

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

강의10

Microsoft PowerPoint - 제11강 파일 처리

6주차.key

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap11-1.ppt [호환 모드]

10.


vi 사용법

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Template

제1장 Unix란 무엇인가?

제1장 Unix란 무엇인가?

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

금오공대 컴퓨터공학전공 강의자료

슬라이드 1

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Sena Technologies, Inc. HelloDevice Super 1.1.0

제12장 파일 입출력

untitled

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - Chap14_FileAccess.pptx

1장. 유닉스 시스템 프로그래밍 개요

Microsoft PowerPoint 웹 연동 기술.pptx

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 09_(C_Programming)_(Korean)_File_Processing

hlogin2

BMP 파일 처리

Microsoft PowerPoint - chap06-2pointer.ppt

C Programming

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

PowerPoint 프레젠테이션

슬라이드 1

Chapter #01 Subject

PowerPoint 프레젠테이션

Microsoft PowerPoint oshw1.ppt [호환 모드]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

제1장 Unix란 무엇인가?

/chroot/lib/ /chroot/etc/

gdb 사용법 Debugging Debug라는말은 bug를없앤다는말이다. Bug란, 컴퓨터프로그램상의논리적오류를말하며, 이것을찾아해결하는과정이바로, debugging이다. 초기컴퓨터들은실제벌레가컴퓨터에들어가서오작동을일으키는경우가있었다고하며, 여기서 debug 이라는말이

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

윤성우의 열혈 TCP/IP 소켓 프로그래밊

윤성우의 열혈 TCP/IP 소켓 프로그래밊

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Solaris Express Developer Edition

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다고가정하자. / /bin/ /home/ /home/taesoo/ /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자가터미널에서다음 ls 명령입력시화면출력

hlogin7

PCServerMgmt7

13주-14주proc.PDF

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과


13 주차문자열의표현과입출력

Microsoft PowerPoint oshw1&2.ppt [호환 모드]

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Chapter 4. LISTS

Microsoft PowerPoint oshw1.ppt [호환 모드]

untitled

Microsoft PowerPoint APUE(File InO).pptx

KIDI_W_BRIEF(제1호)_본문.hwp

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

학번 : 이름 : 1. 다음파일트리구조를가진유닉스시스템이있다. / /bin/ /home/ /home/taesoo/ /home/taesoo/downloads /usr/ /usr/lib/ /usr/local/lib /media 모든폴더에파일이하나도없다고가정했을때사용자 (t

Microsoft PowerPoint - chap11.ppt [호환 모드]

MPLAB C18 C

11장 포인터

Microsoft PowerPoint - Lesson13.pptx

ABC 11장


Microsoft PowerPoint - 10_C_Language_Text_Files

KNK_C_05_Pointers_Arrays_structures_summary_v02

C 언어 프로그래밊 과제 풀이

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap06-5 [호환 모드]

DE1-SoC Board

Lab 3. 실습문제 (Single linked list)_해답.hwp

본 강의에 들어가기 전

Microsoft PowerPoint - Lecture 4-1 Linux File Environment.ppt [호환 모드]

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

Microsoft PowerPoint - chap06-4 [호환 모드]

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

API 매뉴얼

PowerPoint 프레젠테이션

Transcription:

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

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

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

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

Unix 족보 5

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

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

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

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

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

시스템프로그래밍소개 11

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

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

시스템호출 시스템인터페이스역할 Application programs talk to the operating system via system calls Programmer s functional interface to the UNIX kernel User Process fgetc(), fscanf() User space Kernel space System call Library trap routine Kernel call dispatch read() rdwr() readi(), writei() 14

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

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

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

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

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

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

파일 C 의파일은모든데이터를연속된바이트형태로저장한다. 21

C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 한줄의끝 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환된다. 이진파일 (binary file) 모든데이터는있는그대로바이트의연속으로저장 이진파일을이용하여메모리에저장된변수값형태그대로파일에저장할수있다. 22

파일열기 파일을사용하기위해서는 반드시먼저파일열기 (fopen) 를해야한다. 파일열기 (fopen) 를하면 FILE 구조체에대한포인터가리턴된다. FILE 포인터는열린파일을지정한다. 23

파일열기 파일입출력과정 파일열기, 읽기 / 쓰기, 파일닫기 파일열기 fopen() #include <stdio.h> FILE *fp; fp=fopen(" 파일이름 ", " 입출력방식 "); 24

fopen 모드 모드 "r" "w"" 내용 읽기전용으로연다쓰기전용으로연다. 파일이없으면새로생성하고이미존재하면그파일내용을삭제 "a" 추가용으로연다. 파일이없으면새로생성한다. "r+" r+ 이미존재하는파일을읽기쓰기 ( 갱신 ) 용으로연다. "w+" 파일을생성하고갱신용으로연다. "a+" 파일을추가용, 갱신용으로연다. 파일이없으면새로생성한다. "rb" 이진파일을읽기용으로연다. "wb" 이진파일을쓰기용으로연다. "ab" 이진파일을추가용으로연다. 파일이없으면새로생성한다. "rb+" 이미존재하는이진파일을갱신용으로연다. "wb+" 이진파일을생성하고갱신용으로연다. "ab+" 이진파일을추가용, 갱신용으로연다. 파일이없으면새로생성한다. 25

FILE 구조체 파일관련시스템호출함수 파일디스크립터 (file descriptor) 열린파일을나타낸다. 표준입출력함수 FILE 구조체에대한포인터 열린파일을나타낸다. FILE 구조체 열린파일에대한정보를포함하는구조체 파일디스크립터 (file descriptor) 버퍼에대한포인터, 버퍼크기 에러플래그등 #include <stdio.h> 26

FILE 구조체 열린파일의상태를저장하기위한구조체 <stdio.h> 에정의되어있음 typedef struct { int _cnt; // 버퍼에남아있는문자의수 unsigned char *_ptr; // 버퍼내에다음쓸 ( 읽을 ) 위치포인터 unsigned char *_base; unsigned char _flag; unsigned char _file; // 파일디스크립터 } FILE ; // 버퍼시작주소 // 스트림의현재상태 _IOFBF, _IOLBF, _IONBUF _IOEOF, _IOERR _IOREAD, _IOWRT 27

FILE 구조체 FILE * (FILE 구조체에대한포인터 ) 파일을열면 (fopen 함수 ) 리턴된다. 열린파일에대한정보를가리키는포인터 표준 I/O 함수들의매개변수로전달된다. 프로그래머는 FILE 구조체의내부는몰라도프로그램작성가능 28

표준입력 / 출력 / 에러 표준 I/O 스트림 (stream) 프로그램이시작되면자동으로 open 되는스트림 stdin, stdout, stderr FILE* #include <stdio.h> 표준입출력포인터 설명 가리키는장치 stdin 표준입력에대한 FILE 포인터키보드 stdout t 표준출력에대한 FILE 포인터모니터 stderr 표준오류에대한 FILE 포인터모니터 29

표준입출력 : 예 30

fclose() #include <stdio.h> int fclose ( FILE *fp ); 스트림을닫는다 리턴값 : 성공하면 0, 실패하면 EOF (-1) 출력버퍼에있는모든자료는파일에저장되고, 입력버퍼에있는모든자료는버려진다. 프로세스가정상적으로종료한경우에는모든열려진스트림이저절로닫힌다 31

표준 / 파일입출력함수 표준입출력함수 표준파일입출력함수 기능 getchar() fgetc(), getc() 문자단위로입력하는함수 putchar() fputc(), putc() 문자단위로출력하는함수 gets() fgets() 문자열을입력하는함수 puts() fputs() 문자열을출력하는함수 scanf() fscanf() f() 자료형에따라자료를입력하는함수 printf() fprintf() 자료형에따라자료를출력하는함수 32

파일입출력 : 예 33

파일복사 : 예 34

C 프로그래밍개발도구 35

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

다중모듈프로그램 여러개의파일로구성된프로그램 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; } 37

다중모듈프로그램 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 38

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

gdb 명령어 break [file:]function Set a breakpoint at [file:]function run [arglist] Start t 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 40

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

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. 42

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 commandlist a list of commands that reconstructs the target files from the dependency files. 43

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 main1 main1.o reverse.o main1.c reverse.h reverse.c reverse.h Figure : make dependency tree 44