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

Similar documents
Microsoft PowerPoint oshw1.ppt [호환 모드]

Microsoft PowerPoint oshw1.ppt [호환 모드]

vi 사용법

6주차.key

PowerPoint 프레젠테이션

강의10


제1장 Unix란 무엇인가?

ABC 11장

untitled

PowerPoint 프레젠테이션

Sena Technologies, Inc. HelloDevice Super 1.1.0

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

/chroot/lib/ /chroot/etc/

chap7.key

Microsoft PowerPoint APUE(Intro).ppt

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

4장

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

본 강의에 들어가기 전

제9장 프로세스 제어

untitled

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

System Programming Lab

untitled

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

歯9장.PDF

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

Microsoft PowerPoint - chap12-고급기능.pptx

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

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

10.

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

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

untitled

컴파일러

01Àå

13주-14주proc.PDF

11장 포인터

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

PowerPoint 프레젠테이션

슬라이드 1

휠세미나3 ver0.4

EA0015: 컴파일러

K&R2 Reference Manual 번역본

2009년 상반기 사업계획

BMP 파일 처리

chap 5: Trees

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - 09-Pipe

제1장 Unix란 무엇인가?

untitled

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

2009년 상반기 사업계획


PowerPoint 프레젠테이션

슬라이드 1

MPLAB C18 C

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

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - lab14.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-02.pptx

C++-¿Ïº®Çؼ³10Àå

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

vi 사용법

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

PowerPoint 프레젠테이션

슬라이드 1

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

03장.스택.key


PowerPoint 프레젠테이션

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

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

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

<4D F736F F F696E74202D204C BAB8C3E6BCB3B8ED202D20C7C1B7CEB1D7B7A1B9D6C0DBBCBAB0FAC1A42C C F>

Microsoft PowerPoint - comp_prac_081223_2.pptx

商用

좀비프로세스 2

Chapter_06

Microsoft PowerPoint - [2009] 02.pptx

5.스택(강의자료).key

PRO1_02E [읽기 전용]

작성자 : 기술지원부 김 삼 수

Microsoft PowerPoint - u5.pptx

Transcription:

과제 1 : 기본이해 (4 월 8 일까지 ) 1. 1장 & 2장연습문제풀이 1 1.4 2 1.17 3 2.3 4 2.7 2. 프로그래밍과제 1» 연습문제 2.18 프로그램안에서가능한한많은 system call을사용한다. ptrace, dtrace 시스템호출추적방법은테스트한후수업시간에설명할예정이다. 3. 프로그래밍과제 2 ( 교재 p138 Chapter 3 프로젝트 Unix Shell 과히스토리기능참조 )» 표준입력으로부터명령을한줄읽어프로그램이름과매개변수로나누고 fork() 를이용하여입력된명령을실행시키는매우단순한형태의쉘을 C 언어로작성하라. 단순한쉘은명령줄로부터입력된모든매개변수들을명령으로전달하여실행시키고명령이끝날때까지기다리도록구현한다. 문법오류를조사하는파싱은하지않아도좋다. exit 또는 Control-D를입력하면쉘에서빠져나오도록구현한다. 매개변수의최대개수는적절하게제한해도좋다. ( 힌트 : Unix 완성, 10장, Background Processing 참조 ) 4. Linux 커널에시스템호출추가하기» quiz1(linux Kernel Compile) 결과화면캡쳐하여제출 OS Homework 1.1

과제 1 : 기본이해 과제제출방법» 과제 1 & 2: Electronic version 모두제출 2 Electronic versions:» csblade.incheon.ac.kr (117.16.244.157) 의지정디렉토리 /export/home/os2010hw/os2010a 또는 os2010b 에자기학번의디렉토리만들고그곳에소스파일과실행파일복사» Fedora realease 11 (117.16.244.59) 지정디렉토리 /home/os2010hw/os2010a 또는 os2010b 에자기학번의디렉토리만들고그곳에소스파일과실행파일복사 선행작업» Linux 명령익히기 : http://marvel.incheon.ac.kr/ Information Linux 기본적인쉘명령어모음참조» vi 편집기익히기» Linux 환경에서 C 언어프로그래밍익히기 (gcc, gdb) 참고문헌» Graham Glass and King Ables, UNIX for Programmers and Users, 2 nd Ed., Prentice Hall PTR, 1999. UNIX for Programmers and Users 프로그래머와 ( 사용자를위한 UNIX 완성 ), Glass and Ables 저, 조경산역, 이한출판사, 2001.» 한동훈, 이만용역 (Neil Mattew, Richard Stones 원저 ), 초보자용리눅스프로그래밍 (Beginning Linux Programming), 대림, 1998.» 기타 Linux 참고서적 OS Homework 1.2

(C 언어보충 ) Command-line Arguments Command $ myecho hello world Output hello, world argc 와 argv[]» argc=3» argv[0]: echo» argv[1]: hello» argv[2]: world Source code $ cat myecho.c #include <stdio.h> main(int argc, char *argv[]) int i; for (i = 1; i < argc; i++) printf( %s%s, argv[i], (i < argc-1)? : ); printf( \n ); return 0; argv: 0 myecho\0 hello\0 world\0 OS Homework 1.3

(C 언어보충 ) argv 처리: optional flag myecho2.c ( 숫자 option 처리 ) $ cat myecho2.c #include <stdio.h> main(int argc, char *argv[]) int i; for(i=1; i<argc; i++) printf("%s%s", argv[i], (i<argc-1)? " : ""); if(argv[i][0] == '-') printf( ( 제곱값은 %d) ", (atoi(argv[i]))*(atoi(argv[i]))); printf("\n"); return 0; OS Homework 1.4

(C 언어보충 ) argv 처리: optional flag myfind -n -x pattern $ cat myfind.c #include <stdio.h> #include <string.h> #define MAXLINE 1000 int getline(char *line, int max); /*find /find : print lines that match pattern from 1st arg */ main(int argc, char *argv[]) char line[maxline]; long lineno = 0; int c, except =0, number =0, found =0; while(--argc > 0 && (*++argv)[0] == '-') while(c = *++argv[0]) switch(c) case 'x': except = 1; break; case 'n': number = 1; break; default: printf("find : illegal optin %c\n",c); argc = 0; found = -1; break; if(argc!= 1) printf("usage : find -x -n patttern\n"); else while(getline(line, MAXLINE) > 0) lineno++; if((strstr(line, *argv)!= NULL )!= except) if(number) printf("%ld:", lineno); printf("%s\n", line); found++; return found; int getline(char s[], int lim) int c, i; for (i=0; i<lim-1 && (c=getchar())!=eof && c!='\n'; ++i) s[i] = c; if (c == '\n') s[i] = '\0'; ++i; s[i] = '\0'; return i; OS Homework 1.5

(C 언어보충 ) fork + exec 후면처리 (background processing) $ cat background.c #include <stdio.h> main (argc, argv) int argc; char* argv []; if(fork()==0)/* () Child */ execvp (argv[1], &argv[1]); /* Execute other program */ fprintf (stderr, "Could not execute %s\n", argv[1]); OS Homework 1.6

fork 시스템호출 printf( One\n ); pid = fork(); PC A printf(two\n ); fork BEFORE AFTER printf( One\n ); pid=fork(); printf( Two\n ); PC printf( One\n ); pid = fork(); printf( Two\n ); PC A B OS Homework 1.7

fork 와 exec호출의조합 pid = fork(); PC A BEFORE FORK AFTER FORK wait((int*)0); PC execl( /bin/ls ); PC A B /* first line of ls */ PC AFTER FORK AFTER EXEC wait((int*)0); PC A B (now runs ls) OS Homework 1.8

/*runls run ls in a subprocess */ main() int pid; pid = fork(); exec 와 fork 의공동이용 /*if parent, use wait to suspend _ execution until child finishes */ execv if(pid > 0) wait((int *)0); char *av[3]; printf( ls completed\n ); av[0]= ls ; exit(0); av[1]= -l ; av[2]=(char *)0; execv( /bin/ls, av); /*if child then exec ls*/ if(pid == 0) execl( /bin/ls, ls, -l,(char *)0); fatal( execl failed ); /*getting here means pid is negative, so error has occurred */ fatal( fork failed ); fatal(char *s) perror(s); exit(1); execlp, execvp 쉘환경변수 PATH 를따름 execlp( ls, ls, -l, (char *)0); execvp( ls, av); OS Homework 1.9

fork 실습 telnet 117.16.244.157» id: 학번» passwd: 수업시간에알려줌 ftp 117.16.244.156» id: anonymous id: ftp» passwd: 자기loginID passwd: ftp 실습 1: ~mysung/osprog/fork.c 코드분석, 컴파일, 실행 실습 2: ~mysung/osprog/exec.c 코드분석, 컴파일, 실행 실습 3: ~mysung/osprog/background.c g g 코드분석, 컴파일, 실행 실습 4: One, Two 출력하는 fork12.c 프로그램코딩, 컴파일, 실행 실습 5: 시스템호출 execl() 을이용하여 ls 프로그램을실행시키는 forkexecl.c c 프로그램코딩, 컴파일, 실행 실습 6: 시스템호출 execv() 를이용하여 ls 프로그램을실행시키는 forkexecv.c 프로그램코딩, 컴파일, 실행 OS Homework 1.10

fork 문제 #include <stdio.h> int value = 5; main () int pid; pid = fork (); /* Duplicate. Child and parent continue from here */ if (pid!= 0) /* pid is non-zero, so I must be the parent */ wait(null); printf ("Parent: value = %d\n", value); else /* pid is zero, so I must be the child */ value += 15; printf ("Child: value = %d\n", value); printf ("PID %d terminates.\n",,getpid ());/); /* Both processes execute this */ OS Homework 1.11

Vi 를이용한기본텍스트편집 커서의이동» hjkl 이용 H J K L [Vi mode] 4j» G 명령으로원하는행으로이동 7G G : 마지막행으로» 화면이동 ^F ^B ^D ^U 텍스트추가, 삽입, 수정 a(append) i(insert) o(open) O(Open) R(Replace) 텍스트의삭제및취소 (undo) x(exclude?) d(delete) dw db d$ d^ r(replace) u(update) U(Update) 최근명령재실행. 파일관리» Vi를벗어나지않고저장하기 : :w» 저장않고끝내기 : :q!» 또다른파일편집 : :e xx 또는 :e! xx» 다른파일을읽어와덧붙이기 : :r xx http://marvel.inchon.ac.kr/ h / 의 Information 참조 OS Homework 1.12

Vi 편집모드 append insert open replace $Vi filename a esc i esc o esc R esc O ~ $ ~ Vi mode (Vi 명령모드 ) :q!( 기록않음 ) ~ ZZ( 기록 ) :wq x dd r 커서이동 OS Homework 1.13

Linux/Unix C 언어프로그래밍 cc compiler» man cc» $ cc o hello hello.c» $ hello gcc compiler» GNU project C and C++ Compiler GNU(GNU s Not Unix, Free Software Foundation의 Richard Stallman)» man gcc» info gcc» $ gcc hello.c» $ a.out» $ gcc o hello hello.c» $ hello OS Homework 1.14

유닉스디버거 : gdb 프로그램을기호적으로디버깅 : dbx, adb, sdb, gdb, ddd(motif) 등» 단일단계이동 (single stepping)» 정지점 (breakpoint)» 디버거내에서편집» 변수의접근및수정» 함수의탐색» 추적 (tracing) gdb» GNU debugger, 별도의프롬프트표시» 관련정보는, 프롬프트에서 help를입력» dbx executablefilename 디버그를위한프로그램준비» cc 의 -g 옵션으로프로그램을번역» 목적모듈내에디버깅정보포함 OS Homework 1.15

유닉스디버거 : gdb gdb 실행 gdb 실행파일이름 : 실행파일을디버그함 ( 실행파일은반드시 -g 옵션을사용하여컴파일되어야함 ) gdb 명령어» b (breakpoint) : 실행중디버그를위해멈추는위치지정» b 함수명 : 함수명에서멈춤» b 라인번호 : 라인번호에서멈춤» r (run) : 실행시작» n (next) : 현재라인실행 ( 함수의경우실행하고다음라인으로넘어감 )» s (step) : 현재라인실행 ( 함수의경우호출된함수내로들어가실행계속 )» c (continue) : 다음 breakpoint까지실행» l (list) : 현재수행되고있는라인부터 10개라인씩연속적으로소스코드를프린트» p (print) 변수명 : 변수명으로저장되어있는내용을프린트» h(h (help) : 도움말» q (quit) : gdb 종료 OS Homework 1.16