中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)系统调用 syscall arm

Linux:操作系统分析 Chapter6系统调用 陈香兰(xlanchen@ustc.edu.cn) 计算机应用教研室©计算机学院 嵌入式系统实验室●苏州研究院 中国科学技术大学 Fa112014 January 14,2015 4口4四1是142刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linx操作系统分新Chapter6系统调用 3J6uary14,20151729
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linux操作系统分析 Chapter 6 系统调用 陈香兰(xlanchen@ustc.edu.cn) 计算机应用教研室@计算机学院 嵌入式系统实验室@苏州研究院 中国科学技术大学 Fall 2014 January 14, 2015 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 1 / 29

Outline 系统调用和API ② 系统调用机制的实现 ●系统调用分派表 ·系统调用处理向量的入口vector swi ●系统调用的参数传递 ●系统调用参数的验证 ●如何访问进程的地址空间 ●系统调用的返回 小结和作业 1口t4四是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【inx操作系统分新Chapter6系统玛用 January14,20152/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline 1. 系统调用和API .2 系统调用机制的实现 系统调用分派表 系统调用处理向量的入口vector_swi 系统调用的参数传递 系统调用参数的验证 如何访问进程的地址空间 系统调用的返回 .3 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 2 / 29

系统调用的意义 。操作系统为用户态进程与硬件设备进行交互提供了 一组接口一一系统调用 ●把用户从底层的硬件编程中解放出来 。极大的提高了系统的安全性 。使用户程序具有可移植性 ●在Linux用户态,通过swi指令陷入内核以执行系统调用。 。提示:反汇编arm可执行文件,搜索swi命令 。为避免程序员使用低级的汇编语言编程, 通常使用C库封装后的API接口。 1口+4四是4P在刀0C 陈香兰(xianchenoustc,edu,cn)(升算丸应Linux操件丢统分折Chapter6系统码月 J6 nuary14,20154/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 系统调用的意义 操作系统为用户态进程与硬件设备进行交互提供了 一组接口——系统调用 把用户从底层的硬件编程中解放出来 极大的提高了系统的安全性 使用户程序具有可移植性 在Linux用户态,通过swi指令陷入内核以执行系统调用。 提示:反汇编arm可执行文件,搜索swi命令 为避免程序员使用低级的汇编语言编程, 通常使用C库封装后的API接口。 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 4 / 29

API和系统调用 ●应用编程接口(application program interface,API) 和系统调用是不同的 ·API只是一个函数定义 。系统调用通过软中断向内核发出一个明确的请求 ●Libc库定义的一些API引用了封装例程(wrapper routine,唯一目的就是发布系统调用) 。一般每个系统调用对应一个封装例程 。库再用这些封装例程定义出给用户的API ·不是每个API都对应一个特定的系统调用· ●API可能直接提供用户态的服务,如一些数学函数 ●一个单独的API可能调用几个系统调用 不同的API可能调用了同一个系统调用 4口4四142刀00 陈香兰(xianchenoustc,edu,cn)(计算丸应Linx操件系统分新Chapter书系统码用 J6 nuary14,20155/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . API和系统调用 应用编程接口(application program interface, API) 和系统调用是不同的 API只是一个函数定义 系统调用通过软中断向内核发出一个明确的请求 Libc库定义的一些API引用了封装例程(wrapper routine,唯一目的就是发布系统调用) 一般每个系统调用对应一个封装例程 库再用这些封装例程定义出给用户的API 不是每个API都对应一个特定的系统调用。 API可能直接提供用户态的服务,如一些数学函数 一个单独的API可能调用几个系统调用 不同的API可能调用了同一个系统调用 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 5 / 29

API和系统调用 ●API的返回值 ·大部分封装例程返回一个整数,其值的含义依赖于相应的系统调用 。-1在多数情况下表示内核不能满足进程的请求 。Libc中定义的errno变量包含特定的出错码 以open和creat为例 int open(const char pathname,int flags); int open(const char pathname,int flags,modet mode): int creat(const char "pathname,modet mode); RETURN VALUE open()and creat()return the new file descriptor,or-1 if an error occurred (in which case,errno is set appropriately). 4口4四1是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【inux操作系统分新Chapter6系统调用 January14.20155/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . API和系统调用 API的返回值 大部分封装例程返回一个整数,其值的含义依赖于相应的系统调用 -1在多数情况下表示内核不能满足进程的请求 Libc中定义的errno变量包含特定的出错码 . 以open和creat为例 . . int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode\_t mode); int creat(const char *pathname, mode\_t mode); RETURN VALUE open() and creat() return the new file descriptor, or -1 if an error occurred (in which case, errno is set appropriately). 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 5 / 29

系统调用程序及服务例程 。当用户态进程调用一个系统调用时,CPU切换到内核态并开始执 行相应的内核函数 。在Linux中是通过执行swi指令来执行系统调用的 ●传参: 内核实现了很多不同的系统调用,进程必须指明需要哪个 系统调用,这需要传递一个名为系统调用号的参数 ●ARW中,系统调用号与swi的操作码混在一起 1口4四是42刀00 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【inux操作系统分新Chapter6系统调周 J6 nuary14,20156/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 系统调用程序及服务例程 当用户态进程调用一个系统调用时,CPU切换到内核态并开始执 行相应的内核函数 在Linux中是通过执行swi指令来执行系统调用的 传参: 内核实现了很多不同的系统调用,进程必须指明需要哪个 系统调用,这需要传递一个名为系统调用号的参数 ARM中,系统调用号与swi的操作码混在一起 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 6 / 29

系统调用程序及服务例程 ●所有的系统调用返回一个整数值。 。正数或0表示系统调用成功结束 。负数表示一个出错条件 以fs/open.c::sys_open为例 asmlinkage long sys_open(const char_user *filename,int flags,int mode)(...} 。系统调用的返回值与封装例程返回值的约定不同 。内核没有设置或使用errno变量 ●封装例程在获得系统调用返回值之后设置errno变量 。当系统调用出错时,返回的那个负值被存放在errno变量中 返回给应用程序 1口4日是42,在00 陈香兰(xianchenoustc,edu,cn)(升算丸应Linux操件系统分析Chapter6系统码月 J6 nuary14,20156/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 系统调用程序及服务例程 所有的系统调用返回一个整数值。 正数或0表示系统调用成功结束 负数表示一个出错条件 . 以fs/open.c::sys_open为例 . .asmlinkage long sys_open(const char __user *filename, int flags, int mode) {...} 系统调用的返回值与封装例程返回值的约定不同 内核没有设置或使用errno变量 封装例程在获得系统调用返回值之后设置errno变量 当系统调用出错时,返回的那个负值被存放在errno变量中 返回给应用程序 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 6 / 29

系统调用程序及服务例程 ·系统调用处理程序也和其他异常处理程序的结构类似 ①在进程的内核态堆栈中保存大多数寄存器的内容 (即保存恢复进程到用户态执行所需要的上下文) ©调用相应的系统调用服务例程sys_xxx处理系统调用 O通过ret_slow_syscal1()或者ret_fast_syscal1()等从系统调用返回 1口+4四是4P在刀0C 陈香兰(xianchenoustc,edu,cn)(升算丸应Linux操件系统分折Chapter6系统码用 J6 nuary14,20156/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 系统调用程序及服务例程 系统调用处理程序也和其他异常处理程序的结构类似 1. 在进程的内核态堆栈中保存大多数寄存器的内容 (即保存恢复进程到用户态执行所需要的上下文) 2. 调用相应的系统调用服务例程sys_xxx处理系统调用 3. 通过ret_slow_syscall()或者ret_fast_syscall()等从系统调用返回 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 6 / 29

应用程序、封装例程、系统调用处理程序 及系统调用服务例程之问的关系 User Mode Kernel Mode xyz(){ vector_swi: ++ sys_xyz(){ xyz() sys_xyz() ret_...: itet System call Wrapper routine System call System call invocation in in libc standard handler service routine application library progra圆 4口4四是42是刀0C 陈香兰(x1 anchenoustc,edu,cn)(计算丸应【inux操作系统分斯Chapter6系统调用 January14,20157/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 应用程序、封装例程、系统调用处理程序 及系统调用服务例程之间的关系 User Mode ... xyz() ... xyz(){ ... swi xxx ... } Kernel Mode vector_swi: ... sys_xyz() ... ret_...: ... itet sys_xyz(){ ... } System call invocation in application program Wrapper routine in libc standard library System call handler System call service routine 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 7 / 29

Outline 系统调用和API ② 系统调用机制的实现 ●系统调用分派表 ●系统调用处理向量的入口vector swi ●系统调用的参数传递 ·系统调用参数的验证 ·如何访问进程的地址空间 ●系统调用的返回 哈小结和作业 1口t4四是4200 陈香兰(x1 anchenoustc,edu,cn)(计算丸应Linx操作系统分新Chapter6系统玛用 January14,20158/29
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline . 1. 系统调用和API .2 系统调用机制的实现 系统调用分派表 系统调用处理向量的入口vector_swi 系统调用的参数传递 系统调用参数的验证 如何访问进程的地址空间 系统调用的返回 .3 小结和作业 陈香兰(xlanchen@ustc.edu.cn) (计算机应用教研室 Linux操作系统分析Chapter 6 系统调用 @计算机学院嵌入式系统实验室@苏州研究院中国科学技术大学Fall 2014) January 14, 2015 8 / 29
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)Linux的时钟和定时测量 clock and timer.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)进程管理.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)uC/OS-II简单分析.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)Ubuntu中的系统初始化.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)Building Embedded Linux System.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)bootloader简介和bootloader举例(u-boot和RedBoot).pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)skyeye简介.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)ArmLinux的启动(基于arm的Linux启动代码分析).pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)嵌入式操作系统和选型.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)GNU(交又)开发工具链简介 GNU Tools.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)嵌入式系统及嵌入式软件开发概述.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)课程介绍(主讲:陈香兰).pdf
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)进程的同步和通信.ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)Linux中的信号机制.ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)管理I/O设备.ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)文件系统.ppt
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(课件讲义)程序的执行.pdf
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(课件讲义)Linux中的进程地址空间.pdf
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(课件讲义)Linux中的时钟和定时测量.pdf
- 中国科学技术大学:《Linux操作系统分析》课程教学资源(课件讲义)内存管理.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)内存管理 memory.pdf
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(课件讲义)Linux中的进程地址空间(arm).pdf
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第二讲 操作系统的安全机制 SecureMechanism.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第三讲 安全需求与安全策略 Requirement & Policy.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第一讲 绪论(主讲:陈香兰).ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第四讲 操作系统安全体系结构 OSSecurityArch.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第五讲 渗透测试技术 Penetration testing.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第六讲 主流操作系统中的安全技术——Linux GOS Linux Security.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第七讲 安全操作系统的设计与实现 Design Implementation.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第八讲 主流操作系统中的安全技术——Windows GOS Windows Security.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第九讲 实验讲解——口令破解 about experiment Password cracking.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第十讲 实验讲解——文件恢复 about experiment file recovery.ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第十讲 实验讲解——文件恢复(Linux文件系统和ext2).ppt
- 中国科学技术大学:《安全操作系统》课程教学资源(PPT课件讲稿)第十一讲 国外知名安全操作系统介绍——SELinux CaseStudy SELinux.ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程PPT教学课件(分布式系统设计)分布式路由算法(1/3).ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程PPT教学课件(分布式系统设计)分布式路由算法(2/3).ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程PPT教学课件(分布式系统设计)分布式路由算法(3/3).ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程PPT教学课件(分布式系统设计)处理机分配算法举例(部分).ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程PPT教学课件(分布式系统设计)分布式进程调度和容错.ppt
- 中国科学技术大学:《高级操作系统 Advanced Operating System》课程PPT教学课件(分布式系统设计)分布式程序设计(主讲:熊焰).ppt