PA for SWE2007

Similar documents
PA for SWE2007

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

서현수

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

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Chapter_02-3_NativeApp

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

PA0 for SSE2033

PA for SWE2007

PowerPoint 프레젠테이션

/chroot/lib/ /chroot/etc/

6주차.key

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Abstract View of System Components

¨ìÃÊÁ¡2

PA for SWE2007

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

untitled

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

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

Chapter #01 Subject

DE1-SoC Board

Remote UI Guide

KEY 디바이스 드라이버

매력적인 맥/iOS 개발 환경 그림 A-1 변경 사항 확인창 Validate Setting... 항목을 고르면 된다. 프로젝트 편집기를 선택했을 때 화면 아 래쪽에 있는 동일한 Validate Settings... 버튼을 클릭해도 된다. 이슈 내비게이터 목록에서 변경할

Mango220 Android How to compile and Transfer image to Target

ISP and CodeVisionAVR C Compiler.hwp

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

Orcad Capture 9.x

PowerPoint 프레젠테이션

Assign an IP Address and Access the Video Stream - Installation Guide

ODS-FM1

강의 자료

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

PCServerMgmt7

PRO1_02E [읽기 전용]

스마트월드캠퍼스 교육교제

슬라이드 1

슬라이드 1

±èÇö¿í Ãâ·Â

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Facebook API

PowerPoint 프레젠테이션

Clover 부트로더를 이용한 해킨토시 설치방법

MVVM 패턴의 이해

untitled

untitled

슬라이드 1

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

MPLAB C18 C

Microsoft Word - ASG AT90CAN128 모듈.doc

캐빈의iOS프로그램팁01

PowerPoint 프레젠테이션

Abstract View of System Components

Install stm32cubemx and st-link utility

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

Adobe Flash 취약점 분석 (CVE )

Microsoft PowerPoint APUE(Intro).ppt

PowerPoint 프레젠테이션

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

歯Phone

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

ETL_project_best_practice1.ppt

슬라이드 1

4S 1차년도 평가 발표자료

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

제 출 문 환경부장관 귀하 본 보고서를 습마트기기 활용 환경지킴이 및 교육 통합 서비스 개 발 과제의 최종보고서로 제출합니다. 주관연구기관 : 주관연구기관장 : 2015년 10월 주식회사 덕키즈 김 형 준 (주관)연구책임자 : 문종욱 (주관)참여연구원 : 김형준, 문병

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

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

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

MasoJava4_Dongbin.PDF

01장

THE TITLE

Microsoft PowerPoint - 10Àå.ppt

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Microsoft Word - ICT Report


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

슬라이드 1

리눅스 프로세스 관리

( )부록

(SW3704) Gingerbread Source Build & Working Guide

MaxstAR SDK 2.0 for Unity3D Manual Ver

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Microsoft Word - KPMC-400,401 SW 사용 설명서

Microsoft Word - VMware와 리눅스 설치_v0.11.doc

Ver 1.0 마감하루전 Category Partitioning Testing Tool Project Team T1 Date Team Information 김강욱 김진욱 김동권

Microsoft PowerPoint - Chapter_02-1_DevEnv.pptx

PowerPoint 프레젠테이션

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

1217 WebTrafMon II

Transcription:

CSE3047-41: Operating System Practice (Spring 2016) Programming Assignment #3: [Project 1] Process Status Viewer 1. Introduction Due: 2nd May. (Mon), 11:59 PM I-Campus 과제내용을필히확인하세요. 이번과제에서는수업시간에배운 Process Scheduler와 System Call, Tizen EFL을이용하여, Process Status Viewer를제작한다. Process Status Viewer는 Tizen native application과 kernel system call로이루어진다. 본과제를통하여학생들은 Process Descriptor와 Process Scheduler, System Call의동작과 Tizen Application Framework에대한전반적인이해를할수있다. 2. Problem specification 본과제는 Tizen 장치에서동작하는 process와 process scheduler의정보를추출하는 system call과, 해당정보를 Tizen 장치에 GUI로출력하는 Tizen native application을제작한다. Process와 process scheduler의정보는 kernel-level에서추출하며, system call을이용하여 user-level application으로가져온다. Tizen native application은 EFL(Enlightenment Foundation Library) 을활용하여제작한다. 해당 project의구조는아래의 Figure 1과같다. Process Status Viewer App EFL (Tizen UI library) User-level Kernel-level Elementary Evas Edje read_process_info system call task_struct & sched_entity Figure 1. Process Status Viewer Project 의구조 2.1 read_process_info System Call을 kernel에추가로구현하고, Tizen Z3 폰에반영하기 (Mandatory; 필수구현사항 ) System Call의구현은 Figure2. 와같은과정으로진행한다. 진행했던실습과차이가없으나구현하는중에사용하는커널함수등은직접 Source Code를찾아보거나 (Source Insight, ctags 등의 Source Navigator Tool 을적극사용 ) 웹사이트 (e.g. google) 를참조하여사용한다. 커널구현중에는 stdio.h 등과같은사용자표준라이브러리를사용할수없다. 따라서구현에필요한모든함수는커널코드내 include/ 에서찾아사용한다. Figure 2. 예제코드는본과제에필요한시스

템콜을구현한과정이며, 내부코드는 read_process_info() 에구현되어있다. 실습자료를통해다룬내용을상기해보며다음 Kernel Data Structure 및 Function들을사용하여과제를수행한다. 모든자료구조와 Function Prototype에대한정보는구현된위치에설명이되어있고웹사이트를통해서도쉽게알아낼수있다. ( 다른자료구조및함수를사용해도무방 ) struct task_struct <include/linux/sched.h> rwlock_t tasklist_lock ( 전역변수 ) <include/linux/sched.h> void *kmalloc(size_t size, gfp_t flags) <include/linux/slab.h> Mutex <include/linux/mutex.h> #define mutex_init(mutex) //mutex에는 struct mutex * 형이들어감 #define mutex_lock(lock) //lock에는 struct mutex * 형이들어감 #define mutex_unlock(lock) //lock에는 struct mutex * 형이들어감 long copy_to_user(void user *to, const void *from, unsigned long n) <include/uaccess.h> 1. sys_read_process_info 선언 (include/linux/syscalls.h) 2. sys_read_process_info 정의 (kernel/read_process_info.c) 3. Allcate a number to the syscall (arch/arm/kernel/calls.s) 4. Modify _NR_syscalls (arch/arm/include/asm/unistd.h) 1. 2. 3. 4. Figure 2. sys_read_process_info() 구현과정

2.2. ProcessStatusViewer 템플릿을완성하여, Process 정보를보여주는 Tizen Native Application 만들고, Tizen Z3 폰에서구동하기 (Mandatory; 필수구현사항 ) ProcessStatusViewer 는 7주차수업시간에제공하는 Tizen native application 템플릿으로, system call 호출부분과일부 View는구현되지않은상태다. 해당 application은 EFL이라는 Tizen UI library로구현되며, 그중 GenList 를이용하여 process 목록을구현한다. ProcessStatusViewer의 Template 소스코드를다운로드하고, Section 2.1에서만든 system call들을호출하도록수정한다. Template 소스코드 : https://github.com/skku-eslab-tizen/processstatusviewer 해당 system call을이용하여 process와 process scheduler의정보를알아내고, Figure 3과같이 Base GUI의 GenList 와 Detailed Box 화면에해당정보를출력하도록 Tizen application을작성한다. Base GUI 의 GenList Detailed Box Figure 3. Base GUI의 GenList와 Detailed Box ProcessStatusViewer에최소한출력하여야하는 Process 정보는다음과같다. Process name Thread group ID (TGID) Process ID (PID) Process를소유하는 user의 ID (UID) Process를소유하는 group의 ID (GID) Process를 user-mode에서실행한시간 (utime) ( 단위 : tick) Process를 kernel-mode에서실행한시간 (stime) ( 단위 : tick) Process를총실행한시간 (utime + stime) ( 단위 : tick)

또한, ProcessSchedViewer에최소한출력하여야하는 Process Scheduler 정보는다음과같다. Process의 nice value Process의 vruntime Tizen Native Application을작성하는데는 EFL을사용하도록한다. EFL에관한참고자료는다음과같다. EFL, Tizen Developers, https://developer.tizen.org/development/ui-practices/native-application/efl Mobile Native API Reference, Tizen Native API 2.3.1, https://developer.tizen.org/devguide/2.3.1/org.tizen.native.mobile.apireference/modules.html Mobile UI Components, Tizen Developers, https://developer.tizen.org/development/ui-practices/native-application/efl/uicomponents/mobile-ui-components 2.3. Process 정보를주기적으로갱신하기 (Advanced; 구현및정상작동시가산점부여 ) 7주차강의내용대로프로젝트를진행하면, Process Status Viewer Application을처음켤때만 process 정보를갱신하고, application 동작중에는주기적으로갱신하지는않는다. 이 application 의편의성을높이기위해, 주기적으로 process 정보를갱신하도록할수있다. Hint: Ecore timer event를이용하면, 주기적으로호출되는함수를구현할수있다. Ecore Timer, Tizen Native API 2.3.1, https://developer.tizen.org/devguide/2.3.1/org.tizen.native.mobile.apireference/group Ecore Timer Group.html 2.4. Tizen EFL 및추가 System Call을이용하여 Process Tree 출력 (Advanced; 구현및정상작동시가산점부여 ) 7주차강의내용대로프로젝트를진행하면, Process Status Viewer Application이 process의목록을동등하게출력한다. 그러나, 실제운영체제에서는 process들이 fork system call을통해자식 process를만들어서, 계층적인 process tree 형태를띄게된다. 예를들어, Windows용 Application 인 Process Explorer에는부모 process와자식 process의관계를 Figure 와같이나타낼수있다. Process Tree는기존의 Total Process List 화면과는별개의화면으로출력될수있어야한다. Touch interaction을통해부모-자식 process 관계를표현할수있어야한다. Hint 1: Tizen에서는부모-자식 process의관계를여러가지방법으로나타낼수있다. 아래의두방법중하나를사용해도좋고, 다른표현방법이있으면다른방법을사용하여 process tree 를사용해도좋다. 첫째, Tizen EFL의 GenList에는 list를 tree처럼펼치는기능 (tree mode) 이있다.

해당기능을활용하여, Figure 와같이부모 item과자식 item의관계를나타낼수있다. 둘째, EFL의 NaviFrame을활용하여 multi-level navigation을구현할수있다. ios에서도 Tizen과같이 navigation UI를제공하고있으며, Figure 와같이 multi-level navigation을구현한 application이여럿존재한다. 이를활용하면, 부모 process와자식 proces의관계를나타낼수있다. Hint 2: Kernel의 task_struct 구조체내에는부모-자식 process 관계를나타내는 entry가존재한다. 이를이용하면, kernel로부터 process tree를추출할수있다. Process Explorer v16.12, Microsoft TechNet, https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx Genlist Tutorial, Tizen Native API 2.3.0, https://developer.tizen.org/devguide/native/2.3.0/org.tizen.mobile.native.appprogramming/html/tutorials/ui_tutorial/genlis t_tutorial.htm Naviframe, Tizen Native API 2.4.0 https://developer.tizen.org/devguide/2.4/org.tizen.native.mobile.apireference/group Naviframe.html Figure 3 Process Tree 가출력되는 Windows 용 Application 인 Process Explorer Figure 4 Tizen EFL 의 GenList Figure 5 ios 에서 Multi-level Navigation 를구현한예시

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를확인하면정상적으로확인되는것을볼수있다. 3.6 VirtualBox 가상머신과 Windows Host PC의파일전송이불가능한경우 VirtualBox 가상머신에별도의설정이있어야만, Windows Host PC와의파일전송을수행할수있다. 다음설정을마치면, Windows Host PC와파일전송이가능하다. VirtualBox 가상머신을실행한후, 상단메뉴의 장치 드래그앤드롭 양방향 선택 4. Restrictions 가능한모든방법을사용해도좋다. 5. Hand in instruction 구성물 과제보고서파일 본과제수행시구현방법과디자인을설명하고, ProcessStatusViewer 를구동 할때의 Tizen Z3 화면사진을포함한보고서를 PDF 포맷으로작성하여 " 학 번.pdf" 이란이름을붙인다. ( 가능하면 PDF 가가장좋지만, 대중적인문서포

맷은다른포맷도괜찮음 ) ProcessStatusViewer(Tizen Native Application) 소스코드 구현한 process status viewer 코드를 app 라는이름을붙인디렉토리에넣는다. 권고사항 : Application 소스코드디렉토리에서 Debug 폴더를삭제한다. 이작 업을수행하지않으면, 제출물의용량이지나치게커져서 icampus 에과제등록 이되지않을수있다. 수정된 Kernel 소스코드 전체 Kernel 소스코드를제출하지않고다음코드만을디렉토리형태 로제출한다. 따라서, 시스템콜에필요한모든함수및자료구조는다음코드내에서 만선언및정의한다. include/linux/syscalls.h arch/arm/kernel/calls.s arch/arm/include/asm/unistd.h kernel/read_process_info.c 제출예시 linux_kernel.tar.gz or linux_kernel.zip linux_kernel/ include/ arch/ kernel/ linux arm/ read_process_info.c kernel/ include/ syscalls.h asm/ calls.s unistd.h 위의구성물을모두압축하여제출 과제보고서파일, ProcessStatusViewer 소스코드폴더, 수정된 Kernel 소스코드

를 zip 또는 tar.gz로압축하여제출한다. 과제를제출하기위해 I-Campus를이용하거나 I-Campus 이용이불가할경우, 다음과같은제목으로 redcarrottt@gmail.com으로메일을보낸다. [CSE3047-41] PA #3, 학번, 이름 6. Logistics 본과제는혼자수행한다. 프로젝트발표는없다. 과제제출시간은메일도착시간을기준으로하며, 과제를지연제출하면기한직후엔 10% 가감점되고, 매 24시간마다 10% 씩추가로감점된다. 감점폭이 50% 를초과하는순간부터더이상제출을받지않는다. 다른사람의과제를 copy할경우, 개입한사람전부해당과제에대해 0점처리되고, 교수님께보고되며, 성적산정에불이익이있다. 또한, copy가적발될경우 F학점이부여될수있다. Have fun! 홍경환, 담당조교 임베디드소프트웨어연구실