SYSTEM CALL (Syscall) 15.03.03 CSLAB SEWON PARK.

Slides:



Advertisements
Similar presentations
Term Project Hints Topics Keep-alive CGI Multi-thread Multi-process Event-based.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Python Socket/HTTP overmania. 목표  소켓을 이용하여 기본적인 서버 - 클라이언트 모델을 구현할 수 있다.  간단한 웹서버를 소켓을 이용하여 작성할 수 있다.
2013학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
서울시 ‘찾아가는 동 주민센터’ 사업 시행 이후 지역사회의 변화
Vision System Lab, Sang-Hun Han
Project #2-2. Pintos User Program
Linux/UNIX Programming
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
제 1장 C 언어의 소개.
제 2장 컴퓨터 구조.
Hide Process
Understanding of Socket and File I/O
소비자 만족도 설문조사 결과.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
X64 아키텍쳐 분석과 x64와 x86 비교 분석 손충호 (StolenByte).
제6장 FUSING.
System Call Linux Kernel 수업 3번째.
TUXEDO 프로그래밍 가이드.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
FUSING.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
CDC Connected Device Configuration CLDC보다 많은 리소스를 가진 시스템을 대상으로 설정
Department of Computer Engineering
구조체 struct 구조체와 함수 구조체의 배열, sizeof 연산자 열거형 enum 형 정의 typedef
Network Lab. Seoung Hyeon, Lee
리눅스 커널의 이해 중에서 1장. 소개 이원구 네트워크 실험실.
Unix Project-Final <test character device 생성>
System Call 구현 기초 (since 2004) (교재에는 7th 2006에 포함)
Department of Computer Engineering
Linux Kernel Programming newsyscall (since 2004~ textbook 7th 2006~)
Visual C++ Programming Output and File
C ++ 프로그래밍 시작.
Term Project Team Member
Operating System 5주차 - System Call Analysis -
운영체제 (Operating Systems) (Multi-Thread Programming)
프로그래밍2 및 실습 C언어 기반의 C++ 2.
Xen and the Art of Virtualization
System Call 구현 기초 Linux 커널의 새로운 시스템 호출 구현은 아래 두 가지 작업으로 구성 커널 수정
실시간 자원 량 정보 제공을 결합한 Heartbeat
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
제2장 프로세스 이나현.
제 11 장 전처리기.
adopted from KNK C Programming : A Modern Approach
문자 디바이스 드라이버 임베디드 시스템.
Linux/UNIX Programming
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
네트워크 프로그래밍의 이해 School of Electronics and Information.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
JFS operation HP Korea / Operations JFS operation.
Linux/UNIX Programming
Operating System Multiple Access Chatting Program using Multithread
-Part2- 제1장 1차원 배열이란 무엇인가.
The Party-State (1) 영 어 학 부 강물결 영 어 학 부 박우인
Department of Computer Engineering
자바 5.0 프로그래밍.
8. 리눅스의 내부 군자삼락 [君子三樂] 청출어람이청어람 [ 靑出於藍而靑於藍 ] Why Linux ?
이번 시간에는... 지난 시간까지 2회차에 걸쳐 WML의 택스트 포맷, 이미지 처리, 페이지 이동, 태스크 수행과 이벤트 처리 및 WML 사용자 Input 처리 태그 등, WML 개발에 대해서 알아보았습니다. 이번 시간에는 2회차에 걸쳐, WML 스크립트 개발에 대해서.
성공적인 입사지원서 작성법 제이비커리어 교육수석 소 은 선.
합성. 그리고 몽타주. 평생교육학과 도은아.
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
C.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 02. C언어 기반의 C++ 2.
3장 파일 다루기 한빛미디어(주).
우수사원 연수 제안서 2-1. 항공, 호텔, 식사, 차량 세부 안내 (지역순서대로 작성 발리-싱가포르-괌)
배열, 포인터, 함수 Review & 과제 1, 2.
이성준 Library 만들기 이성준
Presentation transcript:

SYSTEM CALL (Syscall) 15.03.03 CSLAB SEWON PARK

Contents System Call System Call Number System Call Handler Realization Summary

SYSTEM CALL System Call is a Layer in between hardware and user space Abstraction Stability Virtualization *the only method for approaching kernel User Space Process Hardware System Call 사용자 공간에 하드웨어 인터페이스를 추상화된 형태로 제공 파일 입출력 시 애플리케이션은 파일시스템 형식 같은 것을 신경 쓸 필요 없다. 시스템 호출은

SYSTEM CALL printf() 호출 C 라이브러리의 printf() 함수 C 라이브러리의 write() 함수 애플리케이션 C 라이브러리 커널 POSIX SUSv3 그림: printf() 호출 시 애플리케이션, C라이브러리, 커널 사이의 관계 API Application Interface Kernel Interface

System Call Number 이름을 사용하지 않고 고유번호 사용 한번 할당 되면 변경 불가 시스템 호출번호 재사용 안함

System Call Number <asm/unistd.h> User Space Process #define __NR_restart_syscall #define __NR_exit #define __NR_fork #define __NR_read #define __NR_write #define __NR_open 1 2 3 4 5 System Call 3 sys_call_table NR_read Kernel

System Call Number Old New sys_ni_syscall() Old Program #define __NR_restart_syscall #define __NR_exit #define __NR_fork #define __NR_read #define __NR_write #define __NR_open 1 2 3 4 5 #define __NR_restart_syscall #define __NR_exit #define __NR_fork #define __NR_write #define __NR_open 1 2 3 4 5 Old New sys_ni_syscall() -ENOSYS 오류코드 반환 Old Program

System Call Handler Exception Kernel Mode Exception Handler F L F O L W Exception Handler Exception F L O W

System Call Handler int $0x80 Kernel Mode F L O W Exception vector 128 sysenter NR_syscalls ≤ EAX True False return -ENOSYS call *sys_call_table(, %rax, 8) *시스템 테이블의 각 항목의 크기:8byte If x86-32  4byte

Find the appropriate system call read() 함수 호출 Read() 함수 래퍼 System_call() Sys_read() 어플리케이션 C 라이브러리의 read() 함수 래퍼 시스콜 핸들러 sys_read() 사용자 공간 커널공간

if(!capable(CAP_SYS_BOOT)) Realization 정확히 하나의 목적 Bad Ex) ioctl() 매개변수 검사 포인터 유효성 확인 권한 유효성 확인 ex) 프로세스 관련 함수 일 때 PID값의 유효? ex) suser()  capable() *using capability system if(!capable(CAP_SYS_BOOT)) Return –EPERM; Reference::<linux/capability.h>

System Call Context Review Syscall Context State Program Syscall Kernel Program User Space Syscall Exception Handler 커널이 프로세스를 대신하여 실행 휴면상태 가능 커널의 기능 사용 가능 완전 선점 가능 다른 작업에 선점 될 수 있음 *재진입이 가능해야 함

System Call long open(const char *filename, int flag, int mode) #define __NR_open 5 _syscall3(long, open, const char *, filename, int, flags, int, mode) 매개변수 n개  2 + 2 * n 개의 인자

“Should not create a system call” Warning “Should not create a system call” 시스템 호출이 추가되면 유연성이 없어진다.

FAST Summary “Provide mechanism, not policy” Simplicity Expandability Compatibility Portability FAST ∵Context Switch And... Linux is perfect