- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.程序接口 该接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的惟一途径。它是由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序,每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用。早期的系统调用都是用汇编语言提供的,只有在用汇编语言书写的程序中才能直接使用系统调用;但在高级语言以及C语言中,往往提供了与各系统调用一一对应的库函数,这样,应用程序便可通过调用对应的库函数来使用系统调用。但在近几年所推出的操作系统中,如UNIX、OS/2版本中,其系统调用本身已经采用C语言编写,并以函数形式提供,故在用C语言编制的程序中,可直接使用系统调用。 * 系统调用 操作系统和用户程序之间的接口是由一组操作系统提供的系统调用来定义的。 这些接口中的系统调用因操作系统不同而不同(尽管其基本概念上是类似的)。 系统调用的执行不同于一般用户程序的执行。系统调用执行是在核心态下执行系统于程序,而用户程序则是在用户态下执行。一般来说,操作系统提供的系统调用越多,功能也就越丰富,系统也就越复杂。 * 系统调用 为了更清楚地了解系统调用的机制,下面简要地介绍read系统调用。它有三个参数:第一个指定文件,第二个指向缓冲区,第三个给出读的字节数。与几乎所有系统调用一样,也是通过调用库函数从C语言来调用的,使用和系统调用同样的名称:read。C语言的调用就像这样: count = read(fd, buffer, nbytes); * 系统调用的主要类型 设备管理:该类系统调用被用来请求和释放有关设备、以及启动设备操作等。 文件管理:包括对文件的读、写、创建和删除等。 进程控制:进程是一个在功能上独立的程序的一次执行过程。进程控制的有关系统调用包括进程创建、进程执行、进程撤消、执行等待和执行优先级控制等。 * 系统调用的主要类型 进程通信:该类系统调用被用在进程之间传递消息或信号。 存储管理:包括调查作业占据内存区的大小、获取作业占据内存区的始址等。 线程管理:包括线程的创建、调度、执行、撤销等。 * 进程管理的系统调用 终止进程运行并返回状态 exit(status) 替换一个进程的核心映射 s = execve(name, argv, environp) 等待一个子进程睐终止 pid = waitpid(pid, statloc, options) 在同一双亲下创建一个子进程 pid = fork() 描述 调用 * 文件系统的系统调用 移动文件指针 position = lseek(fd, offset, whence) 获取文件的状态信息 s = stat(name, buf) 从缓冲区将数据写到文件 n = write(fd, buffer, nbytes) 从文件读取数据到缓冲区 n = read(fd, buffer, nbytes) 关闭一个打开的文件 s = close(fd) 打开文件以读、写或读写 fd = open(file, how, …) 描述 调用 * 目录管理的系统调用 装配文件系统 s = mount(special, name, flag) 卸载文件系统 s = umount(special) 删除目录入口 s = unlink(name) 创建新入口name2指向name1 s = link(name1, name2) 删除空目录 s = rmdir(name) 创建新目录 s = mkdir(name, mode) 描述 调用 * 其他任务的系统调用 向进程发送信号 s = kill(pid, signal) 从1970年1月1日起的秒数 seconds = time(seconds) 改变文件保护位 s = chmod(name, mode) 改变工作目录 s = chdir(name) 描述 调用 * 进程管理的系统调用 UNIX中进程的内存被分为三段:文本段(text segment)(即程序代码),数据段(data segment)(即变量)以及堆栈段(stack segment)。其中数据段向上增长,而堆栈段向下增长,如图1?20所示。 * 文件管理的系统调用 读或写一个文件,首先要用open打开该文件。该文件指定要打开的文件名(绝对路径名或相对路径名都可以),以及使用O_RDONLY, O_WRONLY和RDWR代码表示打开读、写或者读写。要创建新文件,使用O_CREAT。返回的文件描述符可以用于随后的读或写操作。然后,通过close可以关闭文件。而文件描述符还可以再次用于open操作。 * 系统调用 获取当前时间 GetLocalTime time Win32不支持信号 (none) kill Win32不支持安
原创力文档


文档评论(0)