- 1、本文档共1332页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统调用总控程序负责将系统调用派发到它们各自的服务例程。进程在执行陷入指令前已把系统调用号装入寄存器,这样当系统调用总控程序运行时就可以得到系统调用号,用这个号码在系统调用表中查找相应的服务例程,然后调用它执行。 除了需要传递系统调用号以外,许多系统调用还需要传递一些参数到内核(如文件描述符、要写入的内容和写入字节数等),Linux采用CPU寄存器来传递这些参数。system_call运行时会把这些寄存器的值保存在内核堆栈中,供服务例程使用。 3. 系统调用封装函数 编写应用程序时,直接用陷入指令来执行系统调用的难度较大。所以,Linux随内核一起还提供了一套系统调用的封装(wrapper)函数。系统调用封装函数是用C函数的形式封装的系统调用,在程序中可以像使用普通C函数一样使用这些封装函数,很方便地实现对系统调用服务例程的调用。 系统调用封装函数的作用就像是图书馆为读者提供了一些服务员,这些服务员活动在读者的空间,为读者提供诸如借书、还书、预约、办证等服务。读者只要告诉负责借书的服务员要借哪本书,他就会代替读者填写和提交借书单,并将借到的书交给读者。 系统调用封装函数与系统调用服务例程是一对一的关系。在不加区分的情况下,它们都可以被称作系统调用。但习惯上程序员所说的系统调用通常是指前者,即在程序中直接使用的系统调用封装函数。在函数命名方式上,两者的对应关系是:服务例程的名字是系统调用名加“sys_”前缀。如write()系统调用对应的服务例程名是sys_write()。 4. 标准库函数 系统调用提供了系统的一个基本功能集,但编程者更多是通过C标准库函数来使用系统调用的。C库函数是对系统调用的更高一级的引用和封装,它与系统调用不是一对一的关系,可能会引用多个系统调用,或进行一些额外的处理步骤。如printf()函数引用了write()系统调用,同时还提供了格式化的输出功能,因而使用起来更加方便。 C库函数的作用就如同图书馆为用户提供了更高一级的信息服务。例如读者需要某方面的资料,只要向信息服务员描述对资料的需求,由信息服务员负责检索资料,确定要借的图书,再交借书服务员去办理。最后信息服务员将用户所需的信息摘录整理后交给用户。 从图8-12中可以看出,应用程序可以用3种方式使用系统调用:一是调用C标准函数,这种方式最简单;二是调用系统调用封装函数,当没有合适的C函数可用,或对性能有特殊要求时,则需要直接使用系统调用;三是直接用软中断指令陷入内核,这仅在特殊情况下,比如做底层软件开发时可能用到。 8.4.3 Linux系统调用 Linux系统调用在很多方面继承了Unix的系统调用,简洁而高效,但也做了许多改进。它省去了Unix系统中一些冗余的系统调用,仅仅保留了最基本和最有用的系统调用。实际上,Linux提供的系统调用比大部分操作系统都少得多,而且执行的速度也更快。 Linux内核提供了大约250多个系统调用(全部系统调用的名称、编号和个数见/usr/include/asm/unistd.h文件)。这些系统调用可以按其实现的功能划分为以下几类: 1. 进程控制类 进程控制类系统调用用于对进程进行控制,如创建进程(fork)、终止进程(exit)、等待进程(wait)、更换进程映像(exec)、获得进程标识号(getpid)、设置优先级(setpriority、nice)等。 2. 进程通信类 进程通信类系统调用用于在进程之间传递消息和信号,如向进程发信号(kill)、设置信号处理器(signal)、获得消息队列(msgget)、发送消息/接收消息(msgsend/smgrcv)、创建管道(pipe)、创建信号量(semget)、操作信号量(semop)等。 3. 内存管理类 内存管理类系统调用用于对内存进行管理,如映射虚存(mmap)、内存页面加锁和解锁(mlock/munlock)、内存缓冲区数据写回磁盘(sync)等。 4. 文件管理类 文件管理类系统调用用于对文件、目录和设备进行操作,如创建(creat)、打开(open)、关闭(close)、读(read)、写(write)、改变当前目录(chdir)等。 5. 系统控制类 系统控制类系统调用用于设置或读取系统状态及内核配置,如获取/设置系统时间(time/stime)、重新启动系统(reboot)、获取/设置系统主机名(gethostname/sethostname)等。 6. 其他类 其他系统调用包括用于进行网络管理、套接字控制、用户管理的系统调用。 有关各个系统调用的用法请查看相应的联机手册页,命令是:(man -S2系统调用名。) 8.4.4 Linux系统
您可能关注的文档
- 教学课件 DSP处理器原理与应用(鲍安平).ppt
- 教学课件 《项目管理》曾赛星.ppt
- 教学课件 《统计学基础(第3版)》(王健健).ppt
- 教学课件 Java Web程序设计基础教程(李绪成).ppt
- 教学课件 成本会计.ppt
- 教学课件 《饭店公共关系(第2版)》(姜华).ppt
- 教学课件 广告学.ppt
- 教学课件 C语言与程序设计教程(胡元义).ppt
- 教学课件 MATLAB程序设计基础教程(刘国良).ppt
- 教学课件 英语学术论文实用写作(刘宇红).ppt
- 2025-2030年中国机动船行业深度研究分析报告.docx
- 2025-2030年中国精密模具切割项目投资可行性研究分析报告.docx
- 2025-2030年中国铜煮牙盒项目投资可行性研究分析报告.docx
- 2025-2030年中国木制包装托盘行业深度研究分析报告.docx
- 湖南省醴陵市第一中学2025届高考冲刺模拟物理试题含解析.doc
- 《名著解析》课件.ppt
- 2025-2030年中国证券产品行业深度研究分析报告.docx
- 黑龙江省黑河市通北一中2025届高三3月份模拟考试物理试题含解析.doc
- 2025-2030年中国氟羟西林项目投资可行性研究分析报告.docx
- 2025-2030年中国绅仕袜行业深度研究分析报告.docx
最近下载
- 1630-2018 医疗器械唯一标识基本要求.pdf
- 统编二年级下道德与法治10《清新空气是个宝》优质示范公开课课件.pptx VIP
- 食堂外卖服务的规划与执行策略.pptx VIP
- 医疗器械唯一标识规则.docx VIP
- 第二单元 劳动光荣(单元主题)-2023-2024学年高一语文同步主题阅读(统编版必修上册)(解析版).docx
- 烧伤教学课件.ppt VIP
- T_ZAS 2001-2020 体外诊断试剂唯一标识编码规范.docx
- 【淄博高青县医养结合型养老服务模式发展情况调研分析报告9500字】.docx
- 关于增设数据科学与大数据技术专业的可行性论证报告0717.doc
- 预混料市场推广方案.pptx
文档评论(0)