网站大量收购闲置独家精品文档,联系QQ:2885784924

教学课件 Linux操作系统原理与应用(张玲).ppt

  1. 1、本文档共1332页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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系统

文档评论(0)

pehalf + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7201060146000004

1亿VIP精品文档

相关文档