《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第六章 系统调用

第六章系统调用系统调用与API、系统命令、内核函数系统调用处理程序及服务例程封装例程添加新的系统调用系统调用实例
第六章 系统调用 系统调用与API、系统命令、内核函数 系统调用处理程序及服务例程 封装例程 添加新的系统调用 系统调用实例

系统调用一内核的出口·系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。从逻辑上来说,系统调用可被看成是一个r内核与用户空间程序交互的接口一一它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间
• 系统调用,顾名思义,说的是操作系统提 供给用户程序调用的一组“特殊”接口。 • 从逻辑上来说,系统调用可被看成是一个 内核与用户空间程序交互的接口——它好 比一个中间人,把用户进程的请求传达给 内核,待内核把请求处理完毕后再将处理 结果送回给用户空间。 系统调用-内核的出口

系统调用与API,Linux的应用编程接口(APD)遵循POSIX标准·应用编程接口(API)其实是一组函数定义,这些函数说明了如何获得一个给定的服务;而系统调r用是通过软中断向内核发出一个明确的请求API有可能和系统调用的调用形式一致·API和系统调用关注的都是函数名、参数类型及返回代码的含义系统调用的实现是在内核完成的,而用户态的函数是在函数库中实现的KM
• Linux的应用编程接口(API)遵循 POSIX标准 • 应用编程接口(API)其实是一组函数定义,这些 函数说明了如何获得一个给定的服务;而系统调 用是通过软中断向内核发出一个明确的请求 • API有可能和系统调用的调用形式一致 • API和系统调用关注的都是函数名、参数类型及 返回代码的含义 • 系统调用的实现是在内核完成的,而用户态的函 数是在函数库中实现的 系统调用与API

系统调用与系统命令·系统命令相对应用编程接口更高一层,每个系统命令都是一个可执行程序,比如ls、hostname等r·系统命令的实现调用了系统调用·通过strace ls或strace hostname命令可以香看系统命令所调用的系统调用>
• 系统命令相对应用编程接口更高一 层,每个系统命令都是一个可执行 程序,比如ls、hostname等, • 系统命令的实现调用了系统调用 • 通过strace ls或strace hostname 命令可以查看系统命令所调用的系 统调用 系统调用与系统命令

系统调用与内核函数·内核函数在形式上与普通函数一样但它是在内核实现的,需要满足一些内核编程的要求r·系统调用是用户进程进入内核的接口层,它本身并非内核函数,但它是由内核函数实现的·进入内核后,不同的系统调用会找到各自对应的内核函数,这些内核函数被称为系统调用的“服务例程”KM
• 内核函数在形式上与普通函数一样, 但它是在内核实现的,需要满足一些 内核编程的要求 • 系统调用是用户进程进入内核的接口 层,它本身并非内核函数,但它是由 内核函数实现的 • 进入内核后,不同的系统调用会找到 各自对应的内核函数,这些内核函数 被称为系统调用的“服务例程” 系统调用与内核函数

系统调用与内核函数·系统调用 getpid在内核中对应的服务例程为sys_getpid(·sys_getpid(在内核的具体实现:rasmlinkage long sys_getpid(void)FLreturn current->pid;1
• 系统调用 getpid在内核中对应的 服务例程为sys_getpid() • sys_getpid()在内核的具体实现: asmlinkage long sys_getpid(void) { return current->pid; } 系统调用与内核函数

系统调用与内核函数#inciude#include#include#includeint main(void) Iong ID1, ID2;r1*直接调用内核函数*/ID1=syscall(SYSgetpid):printf ("syscall(SYS_getpid)=%ldin", ID1);/*调用系统调用*/*/7ID2= getpidO;printf ("getpid()=%ldIn",ID2)return(0);儿
#include #include #include #include int main(void) { long ID1, ID2; /*-*/ /* 直接调用内核函数*/ /*-*/ ID1 = syscall(SYS_getpid); printf ("syscall(SYS_getpid)=%ld\n", ID1); /*-*/ /* 调用系统调用 */ /*-*/ ID2 = getpid(); printf ("getpid()=%ld\n", ID2); return(0); } 系统调用与内核函数 系统调用与内核函数

系统调用处理程序及服务例程·当用户态的进程调用一个系统调用时,CPU切换到内核态并开始r执行一个内核函数·系统调用处理程序执行下列操作:一在内核栈保存大多数寄存器的内容一调用所谓系统调用服务例程的相应的C函数来处理系统调用-通过ret from sys_call()函数从系统调用返回
• 当用户态的进程调用一个系统调 用时,CPU切换到内核态并开始 执行一个内核函数 • 系统调用处理程序执行下列操作: –在内核栈保存大多数寄存器的内容 –调用所谓系统调用服务例程的相应 的C函数来处理系统调用 –通过ret_from_sys_call( )函数从系统 调用返回 系统调用处理程序及服务例程

调用一个系统调用用户态内核态system_call:xyz(-.sys_xysys_xyz()zOintxyz()0x80ret_from_sys_...1call:iret在应用程序在libc标准库系统调用系统调用服务例程调用中的中的封装例程处理程序系统调用<>
. xyz() . system_call: . sys_xyz() . ret_from_sys_ call: . iret xyz(){ . int 0x80 . } sys_xy z(){ . } 在应用程序 在libc标准库 系统调用 系统调用 调用中的 中的封装例程 处理程序 服务例程 系统调用 用户态 内核态 调用一个系统调用

初始化系统调用·内核初始化期间调用trap init()函数建立IDT表中128号向量对应的表项:set system gate(0x80, &system call)r该调用把下列值装入该门描述符的相应域:一段选择子:-偏移量:指向systemcall()异常处理程序一类型:置为15,表示该异常是一个陷阱-DPL(描述符特权级):置为3,这就允许用户态进程调用这个异常处理程序
• 内核初始化期间调用trap_init( )函数 建立IDT表中128号向量对应的表项: – set_system_gate(0x80,&system_call); • 该调用把下列值装入该门描述符的相应域 : –段选择子: –偏移量:指向system_call( )异常处理程序 –类型:置为15,表示该异常是一个陷阱 –DPL(描述符特权级):置为3,这就允许用户 态进程调用这个异常处理程序 初始化系统调用
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第四章 内存管理.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第三章 进程.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第一章 操作系统概述.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第二章 虚拟内存管理的硬件机制.ppt
- 《网络操作系统》课程教学资源(PPT课件)第十一章 LInux远程登录.ppt
- 《网络操作系统》课程教学资源(PPT课件)第十章 Linux防火墙Iptables.ppt
- 《网络操作系统》课程教学资源(PPT课件)第九章 DNS及DHCP服务器.ppt
- 《网络操作系统》课程教学资源(PPT课件)第七章_Linux服务器的配置.ppt
- 《网络操作系统》课程教学资源(PPT课件)第八章_VSFTP.ppt
- 《网络操作系统》课程教学资源(PPT课件)第六章 配置网络连接.ppt
- 《网络操作系统》课程教学资源(PPT课件)第五章 软件包管理.ppt
- 《网络操作系统》课程教学资源(PPT课件)第四章 Linux服务与进程管理.ppt
- 《网络操作系统》课程教学资源(PPT课件)第三章 用户管理及组管理.ppt
- 《网络操作系统》课程教学资源(PPT课件)第一章 建立Linux系统.ppt
- 《网络操作系统》课程教学资源(PPT课件)第二章 Linux终端操作.ppt
- 《操作系统》课程教学资源(PPT课件)第7章 操作系统接口.ppt
- 《操作系统》课程教学资源(PPT课件)第5章 设备管理.ppt
- 《操作系统》课程教学资源(PPT课件)第6章 文件管理.ppt
- 《操作系统》课程教学资源(PPT课件)第4章 存储器管理.ppt
- 《操作系统》课程教学资源(PPT课件)第3章 处理机调度与死锁.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第五章 中断与异常.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第七章 内核中的同步.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第八章 文件系统.ppt
- 《Linux操作系统原理与应用》课程教学课件(PPT讲稿)第九章 设备驱动.ppt
- 常用的计算机术语及英文缩写.pdf
- 《Office高级应用》课程教学资源(参考资料)Excel常用函数.pdf
- 内蒙古农业大学:《Office高级应用》课程教学资源(课件讲稿)1 基本数据结构与算法.pdf
- 内蒙古农业大学:《Office高级应用》课程教学资源(课件讲稿)2 软件工程与程序设计基础.pdf
- 内蒙古农业大学:《Office高级应用》课程教学资源(课件讲稿)3 数据库基础.pdf
- 石河子大学:《三维动画设计》课程授课教案(任课教师:肖志强).doc
- 《三维动画设计》课程教学资源(案例)3ds Max实例教程利用赛车模型制作汽车动画.doc
- 《三维动画设计》课程教学资源(案例)CG经典教程成功做出真实的人头模型.doc
- 《三维动画设计》课程教学资源(案例)3DMax教程3Dmax打造办公立体空间教程.doc
- 《三维动画设计》课程教学资源(案例)使用3ds Max建造体育馆实例制作过程.doc
- 《三维动画设计》课程教学案例(效果图设计制作)15、建筑日景.doc
- 《三维动画设计》课程教学案例(效果图设计制作)16、鸟瞰效果图的制作.doc
- 《三维动画设计》课程教学案例(效果图设计制作)11-12、清晨客厅.doc
- 《三维动画设计》课程教学案例(效果图设计制作)13-14、建筑夜景.doc
- 《三维动画设计》课程教学案例(效果图设计制作)4、常用贴图的调整.doc
- 《三维动画设计》课程教学案例(效果图设计制作)6、效果图的美学知识.doc