PA for SWE2007

Similar documents
Microsoft PowerPoint - comp_prac_081223_2.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PA for SWE2007

PowerPoint 프레젠테이션

PA for SWE2007

10.

PA for SWE2007

ABC 11장

좀비프로세스 2

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

2009년 상반기 사업계획

리눅스 프로세스 관리

제9장 프로세스 제어

PA0 for SSE2033

Adobe Flash 취약점 분석 (CVE )

Microsoft PowerPoint UNIX Shell.ppt

<4D F736F F F696E74202D FC7C1B7CEBCBCBDBA20BBFDBCBAB0FA20BDC7C7E0205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

Microsoft PowerPoint UNIX Shell.pptx

6주차.key

/chroot/lib/ /chroot/etc/

Microsoft PowerPoint - u5.pptx

Microsoft PowerPoint - 10_Process

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

chap2

PowerPoint 프레젠테이션

Microsoft PowerPoint - u5.pptx

벤처연구사업(전동휠체어) 평가

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

01Àå

PowerPoint 프레젠테이션

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

1. exit logout 하는 command 는아주간단하다. exit 을커맨드에서입력하고 return 키를누르면 logout 된다. 2. ls & command option 현재 directory 에서 file 의 list 를보는명령어, 즉 DOS 에서의 dir 에해

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

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

제1장 Unix란 무엇인가?

Microsoft PowerPoint - chap9 [호환 모드]

Microsoft Word - PLC제어응용-2차시.doc

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

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

제2장 리눅스 사용

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - 09-Pipe

슬라이드 1

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

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

PowerPoint 프레젠테이션

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

제2장 유닉스 사용

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint 통신 및 압축 명령어.ppt

Observational Determinism for Concurrent Program Security

RVC Robot Vaccum Cleaner

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

Chap 6: Graphs

문서의 제목 나눔고딕B, 54pt

<4D F736F F F696E74202D20BFEEBFB5C3BCC1A6BDC7BDC D31C7D0B1E229202D20BDA92E BC8A3C8AF20B8F0B5E55D>

Discrete Mathematics

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

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

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

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

Microsoft PowerPoint oshw1.ppt [호환 모드]

PowerPoint 프레젠테이션

Abstract View of System Components

슬라이드 1

PowerPoint 프레젠테이션

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

슬라이드 1

System Programming Lab

untitled

<30352D30312D3120BFB5B9AEB0E8BEE0C0C720C0CCC7D82E687770>

歯mp3사용설명서

PowerPoint 프레젠테이션

Microsoft PowerPoint APUE(Intro).ppt

API 매뉴얼

untitled

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

Microsoft PowerPoint - 02-Shell-Programming

PowerPoint 프레젠테이션

메시지큐를이용한 IPC 프로그램구현과제보고서 1. 과제의목적 1 리눅스가지원하는프로세스간통신방식중다수의프로세스사이에구조화된데이터블럭, 즉메시지를전달하는데주로사용되는메시지큐방식에대하여무엇인지, 어떻게사용하는지공부한다. 2 공부한내용을점검하기위해기작성된 epda 프로세스관

SIGIL 완벽입문

2009년 상반기 사업계획

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Chapter #01 Subject

제8장 프로세스

Chap 6: Graphs

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Linux SHELL

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

3) MySQL data 백업백업방법 : dump 파일로저장저장위치 : /backup/mysqldump 백업주기 : 시간별 (/etc/cron.hourly) 또는일별 (/etc/cron.daily) 보관기간 : 7 일백업스크립트 : 아래예제 6-1). 참조 4) 웹데이

Çмú´ëȸ¿Ï¼º

Transcription:

SSE2033: System Software Experiment II (Fall 2018) Programming Assignment #3 Due : 15 th Nov. (Thur),5:59 PM 1. Introduction 이번과제에선리눅스환경을위한셸인 swsh 를제작한다. 이과제의주요목표는수업전반기 에배운주제인파일, 프로세스, 시그널, IPC 를다루는프로그램을제작하는것이다. 이번과제는여타과목의중간고사와비슷한비중을지닌다. 이과제를제출하지않으면큰불이 익을받을수있다. 2. Problem specification 셸은사용자의 1) 입력을받아, 2) 해석하고, 3) 명령을실행하는프로그램이다. swsh 은아주작은 기능만구현한셸로정해진특정명령어를실행시킬수있으며, input/output redirection, pipeline 기능을지원한다. 다음표는, 사용자의입력이될수있는문자열을 BNF(Backus-Naur Form) 와유사한형태로기술 한것이다. ( 이하, < 표 > 라고표현 ). input ::= commands commands input commands ::= command command < [filename] command > [filename] command >> [filename] command < [filename] > [filename] command ::= cmd_type1 [options/arguments] cmd_type2 [options/arguments] cmd_type3 [arguments] cmd_type4 cmd_type1 ::= { ls, man, grep, sort, awk, bc } path path ::= { pathname with leading "./" } cmd_type2 ::= { head, tail, cat, cp } cmd_type3 ::= { mv, rm, cd } cmd_type4 ::= { pwd, exit } < 표 > 에서사용한표현의일부는영단어그대로의의미로해석하면된다. 간단히설명하면, filename 은임의의 [ 파일명 ] 을뜻하고, options/arguments 는해당프로그램의 [ 옵션과인자 ]

를뜻하는표현이다. 그리고, < 표 > 에서사용된일부기호는 bash 에서쓰이는기호와동일하다. Pipeline < Input redirection > Output redirection >> Output redirection (appending) 각기호의기능은 Pipe 수업시간에서배운것과같고, 간략하게다시설명하면다음과같다. Pipeline: 앞프로세스의표준출력을뒤프로세스의표준입력으로파이프를통해연결 Input redirection: 해당프로세스의표준입력 (fd 0) 을 [ 파일명 ] 파일로대체 Output redirection: 해당프로세스의표준출력 (fd 1) 을 [ 파일명 ] 파일로대체 > 으로 redirect 되었을경우, 해당파일을초기화하고새로쓴다. >> 으로 redirect 되었을경우, 해당파일의뒤에서부터덧붙인다. 또한구현의편의를위해, < 표 > 의각키워드사이는무조건한칸의 space 로구분된다고가정한 다. 만약입력이 command < filename 의경우, [ 명령어 ] 와 < 문자사이엔한칸의 space, < 와 [ 파일이름 ] 사이에도한칸의 space 로구성된다. 2.1. Interpreting inputs 사용자는 200바이트이내의문자열을입력한다. 만약사용자의입력이 < 표 > 의 input으로부터도출 (derive) 할수있는문자열이면, 유효한입력이다. 예를들면, 다음명령의경우, cd dir3 input commands command cmd_type3 [arguments] cmd_type3 cd [arguments] dir3 순으로해석될수있기때문에유효한입력이다. 다음명령또한 input 으로부터유도될수있기때문에유효하다. ls al /etc sort r > ls_sorted.txt 하지만다음명령은, less 라는프로그램을 input 으로부터유도할수없기때문에유효하지않다.

ls al /etc less < 표 > 의 path 경우, 셸에서현재디렉토리내의프로그램을실행하는것을의미하는표현이다. 현재디렉토리의 a.out 파일을실행시킨땐통상적으로다음명령을사용한다../a.out 즉, [ 명령어 ] 가 "./" 로시작하는문자열 ( 경로 ) 일경우 cmd_type1 에서유도될수있다고본다. ( 과제의단순화를위해, 절대경로등의방식은고려하지않는다. 또한, 홈디렉토리를의미하는 ~ 또한사용하지않는다.) 입력이유효할경우입력을평가하고, 유효하지않은경우다음과같은에러메시지를표준에러 (fd 2) 에출력한다. swsh: Command not found 2.2. Evaluating inputs 입력값을평가하는과정을구현하는방식은사람마다다르겠지만, 일반적으로다음과같은방식을취할수있다. 1) 명령어의개수를파악 (pipeline 등으로명령어들이연결된경우 ) ( 각명령에대해 ) 2) Input/output redirection이사용되었는지파악 3) 명령어종류를분석하여, A. 직접구현한경우, ( 필요하다면 ) 자식프로세스를생성하여해당루틴을호출 B. 구현하지않은경우, 자식프로세스를생성하여해당프로그램을로드하여실행 4) 자식프로세스를생성했을경우, 종료될때까지기다림 2.2.1. Input/output redirection 셸의명령으로 redirection이사용될경우, 사용자가명시한파일이존재하는지, 혹은존재하더라도해당파일이정상적인파일인지 ( 디렉토리가아닌지 ), 해당파일을사용할권한이있는지등을확인할필요가있다. 하지만, swsh에선아래다음과같은경우만파악한다. 만약 input redirection 으로명시된파일이파일이존재한다면, 무조건읽기권한이있는정상적인 파일이고, 존재하지않으면다음과같은문자열을출력한다.

명령이파이프로연결되었다고생각하자. A B C D Input redirection 는제일앞의 A 프로세스에서만존재할수있고, output redirection 는제일뒤의 D 프로세스에서만존재할수있다. (B 와 C 에서 redirection 이존재하는지검사할필요가없음 ) A < file1 B C D > file2 2.2.2. command swsh에서처리할명령은크게 4가지종류로구분된다. 간단히설명하자면, cmd_type1: 해당프로그램을로드 (fork - exec*) 해서실행해야하는프로그램 cmd_type2: 로드하거나, 구현할지선택할수있는프로그램 cmd_type3: 구현해야하는프로그램 ( 인자가있음 ) cmd_type4: 구현해야하는프로그램 ( 인자가없음 ) cmd_type1 에해당하는명령은, 옵션이나인자를추출해자식프로세스를생성해 exec계열함수를통해해당바이너리를로드하여실행한다. cmd_type2 의경우, 스스로구현하던지이미존재하는 exec를통해실행할지선택할수있다. 당연히, 직접구현한경우높은평가를받는다. 직접구현하더라도, 파이프등을통해서다른프로세스와연결될수있다는점을고려한다. cmd_type3 와 cmd_type4 에해당하는명령은직접구현해야한다. 구현해야하는명령에대해선아래 3 장에서각명령의기능을정의하고필요한시스템콜 / 라이브 러리함수를언급할것이다. 2.3. Process group swsh가새로운자식프로세스를생성할경우, 해당프로세스를새로운 process group에속하도록한다. ( 해당자식프로세스의 pgid는자기 pid와일치하도록만든다 ) 만약, 파이프의사용으로인해두개이상의프로세스를생성할경우, 모든프로세스는제일먼저생성한프로세스의그룹에속하도록한다. ( 프로세스의 pgid는제일먼저생성한자식프로세스의 pid와일치해야함 ) 2.4. Reaping child processes swsh 가자식프로세스를생성했다면, wait 계열시스템콜를이용해자식프로세스를확인하고 제거하여좀비프로세스가생기지않도록한다.

프로세스가실행도중 Ctrl+Z 키를통해생성하는 SIGTSTP 시그널을수신하면, 일반적인경우프로세스실행을멈추고중단된다. 동시에부모프로세스는 SIGCHLD 시그널을수신하고, 이때부모가다음과같이 waitpid 를호출해서얻는 status 값에 WIFSTOPPED 매크로함수를실행하면 true가반환된다. (waitpid 시스템콜의옵션 WUNTRACED) waitpid(-1, &status, WNOHANG WUNTRACED) ( 참고 : $ man 2 waitpid) 만약자식프로세스가중지되었을경우 (WIFSTOPPPED 가 true 일때 ), 해당자식이속한프로세스 그룹에 SIGKILL 시그널을보내모든연관프로세스를강제로종료시킨다. 2.5. Signals swsh 는 SIGINT, SIGTSTP 시그널을수신해도종료되지않는다. 3. Programs 구현할프로그램은기존프로그램과동일한작업을수행하지만, 쉽게구현할수있도록단순화된 버전이다. 3.1. head head [OPTION] file file 파일의위에서부터 10 라인을표준출력으로출력한다. -n K 10 라인대신 K 라인을출력한다. file 파일이존재하지않는경우는없다. 3.2. tail tail [OPTION] file file 파일의아래에서부터 10 라인을표준출력으로출력한다. -n K 10 라인대신 K 라인을출력한다.

file 파일이존재하지않는경우는없다. 3.3. cat cat file file 파일을표준출력으로출력한다. file 파일이존재하지않는경우는없다. 3.4. cp cp file1 file2 file1 파일의복사본 file2 파일을만든다. file1 파일이존재하지않는경우는없다. file2 파일을덮어쓸수없는경우는없다. 3.5. mv mv file1 file2 file1 파일의이름을 file2로바꾼다. rename(2) 3.6. rm rm file file 파일을삭제한다. unlink(2) 3.7. cd cd dir 현재 working directory를 dir로변경한다.

chdir(2) 3.8. pwd pwd 현재 working directory를표준출력으로출력한다. getcwd(3) 3.9. exit exit [NUM] 표준에러로 exit란문자열을출력한뒤, swsh를종료한다. NUM이명시되었을경우프로그램의종료값으로 NUM을, 아닐경우 0을반환한다. exit(3) 3.10. Errors mv, rm, cd 명령수행중에러가발생한경우, 에러의종류에따라아래표에명시된메시지를 다음과같이조합하여표준에러로출력한다. EACCESS EISDIR ENOENT ENOTDIR EPERM Permission denied Is a directory No such file or directory Not a directory Permission denied Other errors Error occurred: <ERRNO> ( 에러번호출력 ) command: ERROR_MESSAGE e.g.) mv: Permission denied cd: Not a directory 4. Background 4.1. strace 어떤프로그램을실행할때발생하는시스템콜을추적하는프로그램이다. 간단히,

$ strace ls 명령을수행하면, ls 명령을실행하기위해사용된시스템콜의내역을볼수있다. 또한, -p 옵션을사용하면, 현재실행중인프로세스의시스템콜을확인할수있다. bash에서, 현재자신의 pid를보는명령은 echo $$ 이다. 새로운셸을띄워, 이렇게확인한 bash 프로세스의 pid를 strace p 옵션으로넘길경우, 셸을동작시키기위해사용되는시스템콜을확인할수있다. 4.2. whereis // which 어떤파일의위치를알고싶을때, whereis 나 which 명령을사용할수있다. $ which ls /bin/ls 5. Restrictions 과제구현을위해여태까지배운리눅스시스템콜 / 라이브러리함수를이용한다. 어떤자원을동적으로할당받았다면, 프로그램종료전에반드시해제해야한다. 여기서자원이란파일, 메모리, 자식프로세스를뜻한다. 6. Hand in instruction 작성한코드상단의주석에이름과학번을작성한다. make 명령을통해프로그램이제대로만들어지는지확인한다. 제출한코드가컴파일되지않을경우, 경우에따라서해당제출은채점되지않거나심한페널티를받게될것이다. 프로그램코드를 " 학번.tar.gz" 형태로압축한다. 본과제수행시구현방법과디자인을설명하는보고서를 PDF 포맷으로작성하여 " 학번.pdf" 이란이름을붙인다 7. Logistics 본과제는혼자수행한다. 과제제출시간은메일도착시간을기준으로하며, 과제를지연제출하면기한직후엔 10% 가감점되고, 매 24시간마다 10% 씩추가로감점된다. Copy 할경우, 연구실자체규정에따라처벌하며, 상당한불이익이있을수있다. Have fun!

컴퓨터시스템연구실