Operating System 5주차 - System Call Analysis -

Slides:



Advertisements
Similar presentations
Geek-OS 단국대학교 정영진 Geek-OS 설치 및 개발환경구축 정영진
Advertisements

2012학년도 교내과학탐구대회 4월 16일(월요일, 5~6교시). 5 교시 활 동 실험.조립활동 - 별자리열쇠고리만들기 (5교시) 각 학급에 과학동아리학생들이 2인 1조로 들어가서 실험키트조립활동을 안내함 임장 지도교사가 컴퓨터로 탐구대회 PPT안을 띄워주고 동아리원들이.
사과가 어느 상태일 때 갈변 현상이 늦게 나타날까?
장원인의 친절세상 만들기 밝고 따뜻한 장원인.
신장,심장,간 장애 정영화 윤병란 이달해 최지희.
서울시 ‘찾아가는 동 주민센터’ 사업 시행 이후 지역사회의 변화
포사체 실험 1조 김민수 전수진 이예연 오혜윤 최지수.
Project #2-2. Pintos User Program
SYSTEM CALL (Syscall) CSLAB SEWON PARK.
Shellcode 작성 김영성.
소프트웨어와 운영체제.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
임베디드 시스템 개발을 위한 리눅스 환경설정.
Operating System 14주차 - Linux OOM Killer -
제 2장 컴퓨터 구조.
리눅스 커널의 이해 중에서 4장. 인터럽트와 예외 이성현 네트워크 실험실.
정보통신실습 및 특강(5)
But, 성공하려면 과정이 필요합니다. 목표달성을 위해 정해진 기간이 필요~! 어떤 노력을 기울여야 할가요~?
2016년도 625바로 알리기 교육 평가 보고 대한민국6∙25참전유공자회
11ㅡㅡ 공모 1. 대단위 미술마을 조성 (행복프로젝트) 작성 방법 및 제출 서류 2016마을미술프로젝트
프로젝트 1 프로젝트 공지: 1-1학기부터 4-1학기까지 프로젝트 수업 3개 이상 수강해야 졸업작품 제출할 수 있음
제 11 장 복 리 후 생 6조 김 태 찬, 양 승 원, 유 상 림, 박 미 현
102 베기 학번: 이름: 박지훈.
제6장 FUSING.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
Kernel Porting Lecture #7.
System Call Linux Kernel 수업 3번째.
제4장 Cross Compiler 설치.
Department of Computer Engineering
Linux를 이용한 Embedded 장비 개발
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
Unix Project-Final <test character device 생성>
System Call 구현 기초 (since 2004) (교재에는 7th 2006에 포함)
+ 가상 메모리 -> 물리 메모리 Selector Offset DIR Page Segmetatation
임베디드 시스템 개론 3주차 Embedded System..
Department of Computer Engineering
Linux Kernel Programming newsyscall (since 2004~ textbook 7th 2006~)
Ch 08. 부트 프로세스 Flatstar.
Term Project Team Member
운영체제 (Operating Systems) (Multi-Thread Programming)
Geek-OS Project 정영진
Xen and the Art of Virtualization
제3,4,5장 프로세스, 스레드 관리 CPU 스케줄링.
System Call 구현 기초 Linux 커널의 새로운 시스템 호출 구현은 아래 두 가지 작업으로 구성 커널 수정
실시간 자원 량 정보 제공을 결합한 Heartbeat
제2장 프로세스 이나현.
반 학생들의 컴퓨터 사용시간 ppt제작담당 : 최민수 박지호.
에버랜드 대학생 마케팅 패널 <에버랜드 마케터스> 지원서 및 지원 가이드
Linux Kernel Programming newsyscall (since 2004~ textbook 7th 2006~)
Timer CSLAB Park, Jin hui.
유고결석자 출석인정 안내 Contents 유고결석자 출석인정 사유 신청 시 유의사항 유고결석자 출석인정 절차 흐름도
Operating System 10주차 - IPC(InterProcess Communication) -
단원의 길잡이 국어 중학교 1학년/1학기 1. 문학의 즐거움〉단원의 길잡이(1/9) [화면 소개] 초기화면 : 학습 주제 제시
장원인의 친절세상 만들기 밝고 따뜻한 장원인.
Operating System Multiple Access Chatting Program using Multithread
The Party-State (1) 영 어 학 부 강물결 영 어 학 부 박우인
심리사회이론. ppt_ 곽호연 자료조사 임진섭 김유한
23. Unix 시스템 커널. 개요 커널의 기본 서비스 커널의 특징 참고서적 프로세스 관리 장치 관리 파일 관리 가상 메모리
Department of Computer Engineering
나의 과거, 현재 그리고 미래 경제학과 권오성.
제 2장 프로세스 관리와 CPU 스케줄링 2.1 프로세스의 개념 2.2 CPU 스케줄링의 목적과 유형
운영체제 (Operating System) (하드웨어와 응용 프로그램 사이의 인터페이스 역할을 담당하는 시스템 소프트웨어)
양일중학교 1학년 최경은 지도교사-이춘자선생님
쇼트트랙 스케이팅의 특성과 효과 체육 1학년 Ⅴ. 개인운동 > 3. 스케이팅 (3/5) 활용방법
8. 리눅스의 내부 군자삼락 [君子三樂] 청출어람이청어람 [ 靑出於藍而靑於藍 ] Why Linux ?
글로벌 교육 통신원 2015 해외대학 전공교육과정 우수사례 공모전 제목 소속(학과) 학번 성명.
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
2015 OS Linux Kernel Programming
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
이성준 Library 만들기 이성준
Presentation transcript:

Operating System 5주차 - System Call Analysis - Real-Time Computing and Communications Lab. Hanyang University yjuly0708@hanyang.ac.kr rooterby@gmail.com

Contents Previous Class Question & Answer 시스템 콜 이란? 시스템 콜 처리 과정 IDT fork() 분석 과제 3

Previous Class Question & Answer 1. 커널 컴파일 도중 다음과 같은 메시지가 뜹니다. VirtualBox로 설정한 우분투의 메모리가 부족해서 생기는 현상으로 아래의 순서대로 해결할 수 있습니다. 1. 우분투를 완전히 종료한다. 2. Virtualbox 설정옵션으로 들어가서 메모리를 2048Mb이상 할당한다. 3. 처음부터 다시 컴파일을 시도한다.

Previous Class Question & Answer 2. 컴파일 도중 오류가 났을 때, 의존성 있는 파일들을 지우는 방법 /usr/src/linux 에서 다음과 같은 명령어를 입력해줍니다. $ sudo make clean $ sudo make mrproper 주로 컴파일 도중 에러가 발생하였을 때 사용하시면 됩니다.

Previous Class Question & Answer 3. 커널 컴파일은 꼭 다음과 같은 순서로 진행하여야 하며, 앞의 명령어에서 문제가 발생하면 나머지 부분이 제대로 진행되지 않습니다. $ sudo make menuconfig $ sudo make $ sudo make modules $ sudo make modules_install (‘_’ 언더바 주의할 것) $ sudo make install

Previous Class Question & Answer 4. 커널 컴파일 후 설치가 제대로 되었는지를 확인하고 싶으면, 다음의 명령어를 입력하여 확인할 수 있습니다. $ sudo update-grub Found linux image: /boot/vmlinuz-3.xxxxxx 를 통해 설치된 커널 버전을 확인할 수 있습니다.

Previous Class Question & Answer 5. grub 설정을 변경하지 않고, 우분투를 킴과 동시에 커널버전을 선택하고 싶으면 검은색화면에서 F12를 누르시면 됩니다. 4주차 ppt를 마지막 부분을 보시면, 항상 선택 창이 나오도록 설정을 변경할 수 있으니 참고하시기 바랍니다.

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

시스템 콜 이란? 사용자는 각 언어에서 제공하는 라이브러리를 이용하거나, 직접 시스템 콜을 사용하여 프로그램을 개발한다. 시스템 콜은 User Application이 수행할 수 없는, 권한이 없는 작업을 수행하기 위해 필요하다. User Applications System Calls Kernel Hardware Library

시스템 콜 처리 과정 1. 시스템 콜 번호 저장 2. Trap 3. Return System call Handler rax 레지스터에 시스템 콜 번호 저장 (32bit 머신의 경우 eax) 2. Trap int 0x80 IDT를 통해 system_call() 함수 호출 sys_call_table 통해 핸들러 함수 호출 3. Return System call Handler ret_from_sys_call() 함수로 사용자 프로세스로 돌아감.

시스템 콜 처리 과정 … 56 clone 57 fork 58 vfork devide_error(); Debug(); IDT user task 0x00 0x80 devide_error(); Debug(); Nmi(); ... System_call(); ENTRY(system_call) /* arch/x86/kernel/entry_64.S */ SAVE_ALL … Call *sys_call_table(, %rax, 8) ret_from_sys_call main() { ..// pid = fork(); ... } GNU C Library ... fork() { movl 2, %rax int 0x80 …} sys_call_table … 56 clone 57 fork 58 vfork /* kernel/fork.c */ do_fork();

IDT IDT(Interrupt Descriptor Table) 인터럽트 처리를 위해 사용한다. IDTR은 IDT의 위치를 가리키는 레지스터이다.

fork() 분석 아래에 간단한 fork를 이용한 프로그램을 통해, fork 시스템 콜이 커널에서 어떻게 동작하는지 알아보겠습니다.

fork() 분석 1. 사용자 수준 응용프로그램에서 clone system call에 의해 fork 호출 시스템 콜의 호출을 추적하는 strace 명령어를 통해, 확인 가능 간단한 fork 예제를 만들고, $ strace –i ./test 입력

fork() 분석 2. Compile 된 GNU C Library에서 인터럽트 발생, IDT를 보고 시스템 콜 번호에 맞는 해당 핸들러 함수호출 /arch/x86/syscalls/syscall_64.tbl 시스템 콜 번호 확인 /arch/x86/um/sys_call_table_64.c

fork() 분석 fork system call이 호출되면 핸들러 함수 do_fork(…) 호출

fork() 분석 3. do_fork(…) Process 복사하는 copy_process(…)와 wake_up_new_task(…) 호출

fork() 분석 4. copy_process(…) task_create, 정보 복사, 초기화, sched_fork(…) 호출 초기에 wake_up 상태 아님.

fork() 분석 5. sched_fork(…) fork, clone 시 timer setup 해주고, 각 CPU Ready Queue에 넣어준다 p->state = TASK_RUNNING 로 변경해준다.

fork() 분석 6. wake_up_new_task() activate_task(…) 호출, on_rq = 1 (초기에 0, 새로 시작하는 프로세스)

fork() 분석 7. activate_task(…) 8. enqueue_task(…) enqueue_task(…) 호출 sched_info 와 sched_class 정보를 업데이트 해준다.

fork() 분석 전체 함수 콜 관계도

과제3 (System Call Analysis) 1. 위의 실습 자료를 토대로 “exit” 를 분석한다. “exit” system call 프로세스 종료 시스템 콜 사용자가 직접 호출하지 않아도 컴파일러가 프로그램 말단에 자동적으로 삽입 do_exit() 핸들러 함수를 통해 호출

과제3 (System Call Analysis) “exit” system call 함수 콜 관계도

과제3 (System Call Analysis) Due: 2015/04/10 실습 수업 시간 제출방법 보고서로 출력해서 수업시간에 제출 제출물 보고서 표지 과제 내용 요약 시스템 콜 동작과정 요약 exit 시스템 콜 동작과정 분석(스크린샷을 통해서 단계적으로 설명) 최종 함수 콜 관계도 첨부(실습 PPT 참고) 후기

과제3 (System Call Analysis) 문의사항 이름 : 김연준 E-Mail : yjuly0708@hanyang.ac.kr 이름 : 하태욱 E-Mail : rooterby@gmail.com 실습관련 질문 시 제목을 아래의 양식에 맞춰서 메일을 보내주세요. ex> [운영체제] 학번_이름 지연제출에 대해서는 감점이 있을 수 있음.