Microsoft PowerPoint oshw1.ppt [호환 모드]

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

Microsoft PowerPoint oshw1.ppt [호환 모드]

vi 사용법

6주차.key

PowerPoint 프레젠테이션

강의10


제1장 Unix란 무엇인가?

ABC 11장

untitled

Sena Technologies, Inc. HelloDevice Super 1.1.0

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

chap7.key

본 강의에 들어가기 전

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

4장

PowerPoint 프레젠테이션

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

Microsoft PowerPoint APUE(Intro).ppt

PowerPoint 프레젠테이션

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

/chroot/lib/ /chroot/etc/

제9장 프로세스 제어

untitled

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

untitled

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

歯9장.PDF

System Programming Lab

Microsoft PowerPoint - chap12-고급기능.pptx

PowerPoint 프레젠테이션

컴파일러

PowerPoint 프레젠테이션

chap 5: Trees

PowerPoint 프레젠테이션

10.

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

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

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

untitled

2009년 상반기 사업계획


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

13주-14주proc.PDF

11장 포인터

vi 사용법

PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

EA0015: 컴파일러

BMP 파일 처리

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - [2009] 02.pptx

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

휠세미나3 ver0.4

untitled

The Pocket Guide to TCP/IP Sockets: C Version

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

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

2009년 상반기 사업계획

슬라이드 1

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

슬라이드 1

MPLAB C18 C

<C1A63130C0E5C7C1B7CEBCBCBDBA2E687770>

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

PowerPoint 프레젠테이션

슬라이드 1

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

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

01Àå

Chapter_06

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

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - lab14.pptx

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

제1장 Unix란 무엇인가?

Microsoft PowerPoint - chap-02.pptx

PowerPoint 프레젠테이션


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

Microsoft PowerPoint - chap05-제어문.pptx

중간고사

商用

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

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

PowerPoint 프레젠테이션

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

Transcription:

과제 1 : 기본이해 제출일 : 4월 10일 ( 목 ) 까지 과제내용» 연습문제풀이 1 1.6 2 2.8 3 3.8» 프로그래밍과제 4 $ ftp 211.119.245.75 (id: anonymous, passwd: 자기loginID) 또는 (id: ftp, passwd:ftp) 한다음 # cd pub 하고 # get p.c 하여 p 프로그램의 version 2와 3을작성하시오. Version 1: p 프로그램에서페이지출력후응답에서! 와쉘명령을입력하면 ( 예,!ls l), 해당쉘명령을실행하고나서 p 프로그램이계속수행되도록수정 Version 2: 페이지당줄수를명령줄에명시하여변수 pagesize에지정되도록수정, ( 실행예 ) $ p 10 p.c Version 3: 키보드입력값이 b 이면이전의입력부분을재출력하는기능을추가 5 $ tail n filename (default n=10) 작성 6 표준입력으로부터명령을한줄읽어프로그램이름과매개변수로나누고 fork() 를이용하여입력된명령을실행시키는매우단순한형태의쉘을 C 언어로작성하라. 단순한쉘은명령줄로부터입력된모든매개변수들을명령으로전달하여실행시키고명령이끝날때까지기다리도록구현한다. 문법오류를조사하는파싱은하지않아도좋다. exit 또는 Control-D를입력하면쉘에서빠져나오도록구현한다. 매개변수의최대개수는적절하게제한해도좋다. ( 힌트 : Unix 완성, 10장, Background Processing 참조 ) OS Homework 1.1

과제 1 : 기본이해 과제제출방법» 과제 1 & 2: Electronic version 모두제출 2 Electronic versions:» csblade.incheon.ac.kr (211.119.245.149) 의지정디렉토리 /export/home/homework/2008oshw.ab 에자기학번의디렉토리만들고그곳에소스파일과실행파일복사» csmail.incheon.ac.kr (211.119.245.75) 지정디렉토리 /home/homework/2008oshw.ab 에자기학번의디렉토리만들고그곳에소스파일과실행파일복사 선행작업» 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

/*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.8

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

Fork 실습 telnet 211.119.245.68» id: 학번» passwd: 수업시간에알려줌 ftp 211.119.245.75» Id: anonymous id: ftp» passwd: 자기 loginid passwd: ftp 실습 1: ~mysung/osprog/fork.c 코드분석, 컴파일, 실행 실습 2: ~mysung/osprog/exec.c 코드분석, 컴파일, 실행 실습 3: ~mysung/osprog/background.c c 코드분석, 컴파일, 실행 실습 4: One, Two 출력하는 fork12.c 프로그램코딩, 컴파일, 실행 실습 5: 시스템호출 execl() 을이용하여 ls 프로그램을실행시키는 forkexecl.c 프로그램코딩, 컴파일, 실행 실습 6: 시스템호출 execv() 를이용하여 ls 프로그램을실행시키는 forkexecv.c 프로그램코딩, 컴파일, 실행 실습 5와실습 6은아래자기학번숙제디렉토리에제출하세요» csblade.incheon.ac.kr ac (211.119.245.68) 119 245 의지정디렉토리 (/export/home/homework/2007oshw.ab) 에자기학번의디렉토리만들고그곳에소스파일과실행파일복사» csmail.incheon.ac.kr (211.119.245.75) 지정디렉토리 (/home/homework/2007oshw.ab) 에자기학번의디렉토리만들고그곳에 소스파일과실행파일복사 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