CSE3047-41: Operating System Practice (Spring 2016) Programming Assignment #2: 1. Introduction Due: 18th April. (Mon), 11:59 PM I-Campus 과제내용을필히확인하세요. 이번과제에서는 Linux kernel 에새로운 system call 을추가하고, Tizen native application 을이용 하여해당 system call 을호출하는실습을진행한다. 본과제를통하여학생들은 Linux system call 에대한전반적인이해를할수있다. 2. Problem specification 2.1 Linux kernel을수정하여 print_hello System Call 만들기 (Practice 2) Tizen Linux kernel의소스코드를수정하여 print_hello system call을추가한다. Kernel의소스코드를수정하고나면, 코드를빌드하여 kernel image를만든다. 만들어진 kernel image는 Tizen Z3 폰에적용한다. 이때, sys_print_hello() 의 printk() 내용에는강의자료의예시를따르지말고본인이한것임을증명할수있도록학번 / 이름등의고유한문자열을덧붙여삽입한다. ( 주의!) #include <linux/linkage.h> #include <linux/kernel.h> asmlinkage long sys_print_hello(int value) { const int answer = 10; printk(kern_emerg "Hello world: %d 2016123456 Gyeonghwan Hong\n", value); if(value == answer) { return 1; // answer } else { return -1; // error } } System call을추가하는방법은 6주차강의자료의 Practice 2(10쪽 ~13쪽 ) 을참고하며, kernel image를빌드하고 Tizen Z3에적용하는방법은 1번째과제와같은방법으로하면된다. 2.2. SystemCallApp 을수정하여 print_hello System Call 호출하기 (Practice 3) SystemCallApp 은이번 6주차수업시간에제공한 Tizen application template으로, system call 호출부분은구현되지않은상태다. SystemCallApp의소스코드를다운로드하고, Section 2.1에서만든 print_hello system call을호출하도록수정한다. 수정된 SystemCallApp 소스코드를빌드하
고, Tizen Z3폰에서구동시킨다. System call을호출하는방법은 6주차강의자료의 Practice 2(14쪽 ) 을참고한다. Tizen Application 을빌드하고 Tizen Z3폰에서구동시키는방법은 2주차강의자료를참고한다. SystemCallApp 은아래 Github 주소로접속하여다운로드할수있다. https://github.com/skku-eslab-tizen/systemcallapp 2.3. SystemCallApp 이 print_hello System Call 을호출할때, Tizen Z3 의화면찍기 Section 2.1 과 Section 2.2 를모두수행한후, 실제 Tizen Z3 장치에서 SystemCallApp 이 print_hello system call 을호출하는 팝업창 장면을사진으로찍는다. 2.4. SystemCallApp 이 print_hello System Call을호출할때, dmesg 화면찍기 Section 2.3을수행한후, Tizen Z3 장치에 USB로연결하여 dmesg를확인한다. printk로인해 Hello world 문자열과 user application에서전송한 value, 고유문자열 ( 학번 / 이름 ) 이출력되는장면을찍는다. 과제 1과같은방법으로 dmesg를확인하면된다. 3. Notes 3.1 Tizen IDE 에서 Application 빌드시 Security Profile 문제가발생한경우 Tizen IDE 에서 Application 빌드시, 아래와가은 Security Profile 문제가발생할수있다. 이경우에는, 아래와같이 Preferences 메뉴의 Tizen SDK Security Profile 에서 Add 버튼을선 택하여 profile 을새로만들고, Generate 버튼을선택하여 author certificate 를만든다.
Profile 과 author certificate 를만들때표시되는폼에는아무값이나입력해도된다. 이후, Apply 버튼과 OK 버튼을선택하여인증서를저장한다. 해당 certificate 설정은개발자용모드로설정된 Tizen Z3 에서만사용가능하며, 다른상용 Tizen 장치에서는다른방법을사용하여야한다. 3.2 SystemCallApp 을 Tizen IDE 에불러오는방법 Tizen IDE 의상단메뉴에서 File Import 를선택한후, Tizen Tizen Project 를선택한다. 그후, SystemCallApp 소스코드가다운로드된경로를선택하여 Tizen IDE 에불러온다.
3.3 커널이미지이동시주의사항커널을빌드한후빌드결과이미지인 dzimage파일은 arch/arm/boot/ 에생성된다. 본파일을 SD Card에복사할때에간혹 SD Card안의기존 dzimage가교체가되지않는경우가생기므로 SD Card 내부의 dzimage를다음과같은명령어로지우고복사한다. $sudo rm mnt/dzimage $sudo cp arch/arm/boot/dzimage mnt/dzimage 3.4 sdb 사용시주의사항 sdb는 Samsung Debug Bridge의약자로 USB로연결된스마트폰에접속해여러명령들을수행하게해주는 Tool이다. 따라서 SDB를설치하기위해서필요한것은다음과같다. Tizen Emulator Samsung Generic USB Driver Tizen Emulator의경우 http://tizen.org 를통하여 Download가가능하며 Samsung generic USB driver의경우 Google 검색, 혹은본수업웹사이트를통하여다운로드가가능하다. 두가지를설치했다면 sdb가설치된위치 ( 기본 :C:\tizen-sdk\tools) 에이동하여 sdb를사용할수있다. Target offline 이라는오류가뜰경우는대부분스마트폰을재부팅하였을때이다. 이때는아직 sdb가스마트폰의전원이켜졌다는사실을인지하지못한경우이므로재부팅후에는항상 USB를재연결하여 sdb가전원이켜진 Device가연결되어있는것을인식하도록하자. Windows cmd에서사용가능한기타 SDB 명령어는다음과같다. > sdb root on Root 모드로변경 > sdb shell Shell Terminal 로접속 > sdb devices 연결된 Device 검색및상태확인 > sdb kill-server sdb 데몬종료 > sdb start-server sdb 데몬실행일반적으로 Target offline의경우 sdb daemon 을재시작하는것으로해결가능하다. Killserver와 start-server를순차적으로사용 3.5 dmesg를했는데도본인이입력한문자열출력이되지않는경우 dmesg의 printk() 로입력한문자열을특정 Memory에저장한다. 해당 Memory 버퍼가가득찰경우, 시스템은오래된 Log Message를제거하는데우리가입력한문자열은 priority가낮으므로오랜시간이지나거나 dmesg를통해한번출력이된경우지워질수있다. 이때에는폰을재부팅한후, 빠르게 dmesg grep을사용하여 Log를확인하면정상적으로확인되는것을볼수있다. 4. Restrictions 가능한모든방법을사용해도좋다.
5. Hand in instruction 본과제수행시구현방법과디자인을설명하고, SystemCallApp 이동작할때의 Tizen Z3 화면사진과 dmesg 화면사진을포함한보고서를 PDF 포맷으로작성하여 " 학번.pdf" 이란이름을붙인다. ( 가능하면 PDF가가장좋지만, 대중적인문서포맷은다른포맷도괜찮음 ) 과제를제출하기위해 I-Campus를이용하거나 I-Campus 이용이불가할경우, 다음과같은제목으로 redcarrottt@gmail.com으로메일을보낸다. [CSE3047-41] PA #2, 학번, 이름 6. Logistics 본과제는혼자수행한다. 과제제출시간은메일도착시간을기준으로하며, 과제를지연제출하면기한직후엔 10% 가감점되고, 매 24시간마다 10% 씩추가로감점된다. 감점폭이 50% 를초과하는순간부터더이상제출을받지않는다. 다른사람의과제를 copy할경우, 개입한사람전부해당과제에대해 0점처리되고, 교수님께보고되며, 성적산정에불이익이있다. 또한, copy가적발될경우 F학점이부여될수있다. Have fun! 홍경환, 담당조교 임베디드소프트웨어연구실