Abstract View of System Components

Similar documents
Abstract View of System Components

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

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

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

PA for SWE2007

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

Abstract View of System Components

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

임베디드 OS 실습 환경 설정 절차(Windows XP Professional)

슬라이드 1

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

Mango220 Android How to compile and Transfer image to Target

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

PowerPoint 프레젠테이션

/chroot/lib/ /chroot/etc/

슬라이드 1

PowerPoint 프레젠테이션

고급 프로그래밍 설계

DE1-SoC Board

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

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

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

untitled

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

PA for SWE2007

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

슬라이드 1

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

Chapter #01 Subject

슬라이드 1

PowerPoint 프레젠테이션

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

PowerPoint Template

KEY 디바이스 드라이버

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

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

Microsoft Word - Network Programming_01.docx

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

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

화판_미용성형시술 정보집.0305

Code Generation in Rapid

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

PowerPoint Template

슬라이드 1

PA for SWE2007

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

PowerPoint 프레젠테이션

강의 자료

PowerPoint 프레젠테이션

강의10

Microsoft PowerPoint - chap06-5 [호환 모드]

PowerPoint 프레젠테이션

PA0 for SSE2033

Microsoft PowerPoint - 10-EmbedSW-11-모듈

vi 사용법

15 홍보담당관 (언론홍보담당) 김병호 ( 金 秉 鎬 ) 16 (행정담당) 박찬해 ( 朴 鑽 海 ) 예산담당관 17 (복지행정담당) 이혁재 ( 李 赫 在 ) 18 (보육담당) 주사 이영임 ( 李 泳 任 ) 기동근무해제. 19 (장애인담당) 박노혁 ( 朴 魯 爀 ) 기동

Adobe Flash 취약점 분석 (CVE )

슬라이드 1

슬라이드 제목 없음

Chapter 1

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

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기


<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

PowerPoint 프레젠테이션

PowerPoint Presentation

Chap 2 임베디드시스템 개발환경구성

Microsoft Word ARM_ver2_0a.docx

Microsoft PowerPoint - 03-Development-Environment-2.ppt

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

Microsoft PowerPoint - chap06-2pointer.ppt

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

PA for SWE2007

슬라이드 1


Abstract View of System Components

<4D F736F F D20B1B9B0A1BAB020BEC6C0CCC7C720C2F7B4DC20B0A1C0CCB5E5>

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

PowerPoint 프레젠테이션

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Microsoft PowerPoint - [2009] 02.pptx

hlogin7

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

Secure Programming Lecture1 : Introduction

untitled

<30352D30312D3120BFB5B9AEB0E8BEE0C0C720C0CCC7D82E687770>

歯mp3사용설명서

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

Transcription:

Operating System 4 주차 - System Call Implementation - Real-Time Computing and Communications Lab. Hanyang University jtlim@rtcc.hanyang.ac.kr yschoi@rtcc.hanyang.ac.kr shpark@rtcc.hanyang.ac.kr

Contents Ctags Cscope Ccache System Call Adding System Call 과제 2 2 2

About Linux Kernel Linux Kernel provides fundamental environment for applications to work The Kernel s responsibilities include controlling computer H/W instead of applications Applications call out functions of kernel using system call 3 3

Ctags 소스코드분석을위해인덱스파일을생성하는명령 Vim 과연동하여사용가능 인덱스파일은변수, 함수정의, 매크로선언을포함한다. Ctags 설치 $ sudo apt-get install ctags Ctags 설치확인 $ ctags --version 4 4

Ctags Vim 연동 vimrc 파일에 ctags 후생성되는인덱스파일위치지정 $vim ~/.vimrc 아래그림처럼추가입력후저장 Kernel Source 분석을위해사용하기때문에, 위와같이설정 5 5

Ctags 명령을실행하는디렉터리부터하위디렉터리를탐색하면서각소스의정보수집 Example> $ cd /usr/src/linux $ sudo ctags -R 인덱스파일 (tags) 생성 ( -R 옵션은하위디렉토리를포함하여검색 ) $ vim tags 태그명파일명정의된타입 6 6

Ctags 사용법 (vi 명령모드에서 ) :ts [target name] [target name] 가정의된위치를나열하고선택한위치로점프 현재위치는 stack 에 push 된다. Ctrl + t stack 에저장되어있는이전위치로되돌아간다. Command Ctrl+] Ctrl+t :ts <target name> 설명 함수가정의된파일로이동 이동하기전단계의위치로이동 같은이름의 function-name 이여러개일때, 목록을보여준다. 번호를이용해서선택할수있다 :tn 여러개의함수이름이존재할때, 다음함수를선택한다. :tp 이전함수를선택한다. :tf 가장처음에찾았던함수를선택한다. :tl 가장마지막함수를선택한다. 7 7

Cscope 대화식 C 소스코드분석프로그램 Ctags 만으로찾기어려운지역변수나전역변수혹은함수들의호출관계를파악하는데사용 Vim 과연동하여사용가능 Cscope 설치 $ sudo apt-get install cscope Cscope 설치확인 $ cscope --version 8 8

Cscope Cscope 프로그램을사용하기위해 mkcscope.sh 파일을작성한다. mkcscope.sh 를실행시기존의 cscope 관련파일들을정리하고, 새롭게 DB 를생성하고그것을바탕으로 cscope 프로그램을생성한다. mkcscope.sh 의권한과위치를이동시킨다. $ chmod 755 mkcscope.sh (/usr/src/ 에서사용하기위한퍼미션조정 ) $ sudo mv mkcscope.sh /usr/bin/ 9 9

Cscope Vim 연동 Cscope는 vim과연동하여서도사용할수있다. vimrc 파일에아래의내용추가 $vim ~/.vimrc 57 번째와 59 번째줄에서 tab 을이용한다. 10 10

Cscope 사용법 /usr/src/linux 에서다음을입력 Vim 이용 $ sudo mkcscope.sh Cscope 프로그램생성완료후, 프로그램이용혹은 vim을이용해서활용가능 여기서는 vim을이용하는방법만다룬다. Ctrl + d 를눌러 cscope 프로그램종료 Vim editor 실행후 (vi 명령모드에서 ) :cs find [ 검색유형 ] [ 검색어 ] 검색유형설명 s 심볼을검색한다. g 전역선언을검색한다. d 함수에의해호출되는함수들을검색한다. c 함수를호출하는함수들을검색한다. t 텍스트문자열을검색한다. f 파일이름을검색한다. i 이파일을 include하는파일을검색한다. 11 11

Quiz Cscope 와 Ctags 를이용하여 3 주차과제에있던 start_kernel 함수를찾아보시오. Cscope 와 Ctags 를이용하여 Kmalloc 함수정의위치를찾아보시오. Cscope 와 Ctags 를이용하여 Kfree 함수정의위치를찾아보시오. 12 12

Ccache Ccache is a software development tool that caches the output of C/C++ compilation so that the next time, the same compilation can be avoided and the results can be taken from the cache. This can greatly speed up recompiling time. [Wikipedia] Ccache Install & check 13 13

Ccache 환경변수설정 terminal을키고다음을입력한다. $ sudo vim /etc/environment 아래의그림처럼표시된부분을추가한다. 저장을하고나온다. 위와같이설정하면 gcc 를이용해컴파일을할경우자동으로 Ccache 를이용하기때문에빌드시간을단축할수있다. ex> Kernel Build 14 14

System Call 사용자수준응용프로그램에게커널이자신의서비스를제공하는인터페이스 리눅스커널은각시스템콜을 Handler 로구현해놓고, 요청되었을때해당 Handler 를호출하여서비스를제공한다. 15 15

Adding System Call Step 1: 새로운시스템콜을시스템콜테이블과헤더에추가한다. Step 2: 커널에 Handler 부분함수를구현하고커널 Makefile 을수정한다. Step 3: 새롭게컴파일후재부팅하고테스트프로그램으로동작을확인한다. 16 16

Adding System Call Step1 (64bit) /usr/src/linux/arch/x86/syscalls/syscall_64.tbl 관리자권한으로접속후아래와같이추가하려는시스템콜정보를입력한다. 17 17

Adding System Call Step1 (32bit) /usr/src/linux/arch/x86/syscalls/syscall_32.tbl 관리자권한으로접속후아래와같이추가하려는시스템콜정보를입력한다. 18 18

Adding System Call Step1 /usr/src/linux/include/linux/syscalls.h 헤더파일맨끝에아래와같이등록하고자하는핸들러함수를선언한다. 19 19

Adding System Call Step2 /usr/src/linux/kernel 내부에 handler 함수를구현한다. helloworld.c printk 함수는커널버퍼에출력하는함수이다. 커널컴파일후시스템콜동작을확인할때 terminal 에서 $ dmesg 를통해확인할수있다. asmlinkage 는어셈블리코드에서직접호출할수있다는의미로, linux/linkage.h 에정의되어있다. 20 20

Adding System Call Step2 /usr/src/linux/kernel/makefile 에다음을추가한다. 21 21

Adding System Call Step3 다음과같이 test 프로그램을만든다. 시스템콜을사용하기위해 linux/unistd.h 를 include 한다. 실행후 $ dmesg 를입력하면아래의결과를확인할수있다. $ dmesg --clear 를하면기존의 dmesg 내용을지울수있다. $ man dmesg 참조 22 22

과제 2 (System Call Implementation) 1. 위의실습자료를토대로 helloworld 시스템콜을커널에추가한다. 2. 현재 task 의정보를출력하는 get_task_info 라는시스템콜을추가한다. helloworld 시스템콜추가에서와같이 printk 를이용해커널버퍼에출력하도록한다. Hint1 : 현재실행중인 task 의정보를출력하기위해커널소스에 task_struct 구조체의내용을참고한다. Hint2 : current 라는포인터변수가 task_struct 를가리킨다. ex> current->pid 등 Hint3 : ctags 와 cscope 를이용하면쉽게 task_struct 를찾을수있다. 23 23

과제 2 (System Call Implementation) Due: 2016/04/01 실습수업시간 제출방법보고서로출력해서제출 제출물 보고서 표지 과제내용요약 task_struct의위치 ( 소스파일 ) 시스템콜을추가하는과정에대한스크린샷과캡처 각각의정보들 (get_task_info) 이의미하는것설명 결과및분석 (dmesg 출력결과 ) Quiz에서 3가지문제의경로와해당위치스크린샷캡쳐 후기 24 24

과제 2 (System Call Implementation) Example> 25 25

과제 2 (System Call Implementation) 문의사항 이름 : 임정택 Tel : 010-4780 - 9294 E-Mail : jtlim@rtcc.hanyang.ac.kr 이름 : 최윤식 Tel : 010-7970 - 0906 E-Mail : yschoi@rtcc.hanyang.ac.kr 이름 : 박성현 Tel : 010-6612 - 8957 E-Mail : shpark@rtcc.hanyang.ac.kr 실습관련질문시제목을아래의양식에맞춰서메일을보내주세요 ex> [ 운영체제 ] 학번 _ 이름 지연제출에대해서는감점이있을수있음. 26 26