一、什么是系统调用,有何作用

1.概念

用户接口

命令接口-允许用户直接使用

程序接口-允许用户通过程序间接使用:由一组系统调用组成

系统调用

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。会使处理器从用户态进入核心态

2.作用

生活场景:你去学校打印店打印论文,当你按下“打印”之后,打印机开始工作。你的论文打印到一半时,另一位同学按下了“打印”按钮开始打印他自己的论文。最终,你的论文和该同学的论文页面并没有混杂在一起,都是按顺序依次打印的。

思考:如果各个进程可以随意地使用打印机,会发生什么情况?

你的论文打印到一半时,另一位同学按下了“打印”按钮开始打印他自己的论文。结果,你的后半部分论文与该同学的页面混杂在一起了。

解决方法:

操作系统提供“系统调用”功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发出请求。操作系统会对各个请求进行协调管理。

3.系统调用的分类

应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成

这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

具体分类-按功能分类:

1.设备管理:完成设备的请求/释放/启动等功能

2.文件管理:完成文件的读/写/创建/删除等功能

3.进程控制:完成进程的创建/撤销/阻塞/唤醒等功能

4.进程通信:完成进程之间的消息传递/信号传递等功能

5.内存管理:完成内存的分配/回收等功能

注意:

系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,*因此系统调用的相关处理需要在核心态下进行

二、系统调用和库函数的区别

操作系统向编程语言提供系统调用

编程语言向普通应用程序提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使上层进行系统调用更加方便

普通应用程序可以直接进行系统调用,也可以使用库函数,有的库函数涉及到系统调用,有的不涉及

不涉及系统调用的库函数:如“取绝对值”的函数——abs()

涉及系统调用的库函数:如“创建一个新文件”的函数——用到文件管理

三、系统调用背后的过程

高级语言——编译——汇编语言

使用库函数write("abc");该库函数内部封装了系统调用的复杂细节

转换为汇编指令-运行在用户态:

前期处理相关指令

movl指令将(“abc")作为系统调用参数放到某个通用寄存器中

int x指令( trap/陷入/访管指令)——int是interrupt,参数x指明了系统调用号,可以操作系统知道该执行什么操作

后续处理相关指令

处理系统调用的相关代码(运行在核心态)

1.具体过程

传递系统调用参数→执行陷入指令(在用户态下执行这个指令)→执行系统调用相应服务程序(转到核心态)→返回用户程序

注意:

1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态

2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行

3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

系统调用的概念和作用相关推荐

  1. 爬虫基础(一)之概念、作用、分类和流程

    爬虫基础(一)之概念.作用.分类和流程 1. 爬虫的概念 模拟浏览器,发送请求,获取响应        浏览器相当于客户端 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(如网易云音乐)(主要 ...

  2. 细说进程、应用程序域与上下文之间的关系(一)——进程的概念与作用

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作. 虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提 ...

  3. (常用API)正则表达式的概念和作用

    正则表达式的概念 正则表达式(英语:Regular Expression,在代码中常简写为regex). 正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字 ...

  4. java 常用流_Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数...

    Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...

  5. Spring4.x(2)--SpringIOC的概念和作用

    SpringIOC的概念和作用 一.什么是IOC? Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着 ...

  6. java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】...

    第1章 Spring 概述 1.1 spring 概述[了解] 1.1.1 spring 是什么 1.1.2 Spring 的发展历程 1.1.3 spring 的优势 1.1.4 spring 的体 ...

  7. 系统调用的概念及原理

    系统调用与内核函数 内核函数与普通函数形式上没有什么区别,只不过前者在内核实现,因此要满足一些内核编程的要求. 系统调用是用户进程进入内核的接口层,它本身并非内核函数,但它是由内核函数实现的,进入内核 ...

  8. 数字证书的概念以及作用

    1.1 数字证书的概念以及作用      数字证书又称为数字标识,是标志网络用户身份信息的一系列数据.它提供了一种在互联网上身份验证的方式,是用来标志和证明网络通信双方身份的数字信息文件.通俗地讲,数 ...

  9. Android Vendor Test Suite (VTS) 的概念、作用及测试方法

    Android Vendor Test Suite (VTS) 的概念.作用及测试方法 Qidi 2017.08.01 (Markdown & Haroopad) 注意:本文基于 Androi ...

最新文章

  1. IOS 笔试题(二)
  2. python cx_oracle_Python3安装cx_Oracle连接oracle数据库实操总结
  3. rnn神经网络 层次_精讲深度学习RNN三大核心点,三分钟掌握循环神经网络
  4. 详解GaussDB(for MySQL)服务:复制策略与可用性分析
  5. 怎么访问原生php类,关于如何利用php的原生类进行XSS
  6. JavaScript 中数组 sort() 方法的基本使用
  7. mylyn提交到JIRA的日期格式错误
  8. 2.查看conv卷积的函数实现过程,原理,试用c语言编写调试.,西南科技大学信号与系实验报告.doc...
  9. Promise对象和运算符
  10. 群晖nas服务器的虚拟机,群晖NAS用于虚拟化的存储
  11. 形容词,名词记忆(五):ing ,ed 后缀常用词
  12. 跨界融合 | 零数科技正式成为上海现代服务业联合会会员单位
  13. 中医大2020年7月网考计算机应用基础,2020年7月网络教育统考计算机应用基础模拟题试卷9...
  14. html设置点击变换图标,【css】css实现点击Toggle功能/icon切换
  15. 技术方向决策的几点思考
  16. 极限类题之积分上限的函数的极限
  17. python 中文字符转换
  18. 使用VMware测试U盘启动盘是否制作成功
  19. Oracle篇--04 Oracle SQL高级查询、分页查询
  20. 文件上传绕过之00截断

热门文章

  1. 进程间通信的六种常见方式
  2. Socket Sendto 可以传入不同的目的地址吗
  3. java.sql.Date引发的日期格式转换错误
  4. RAID6的Q校验算法详细解析
  5. YOLOV5—6.0 网络结构图
  6. 【Tableau 设计提示7.0】趋势线的应用
  7. ~~找工作(二)~~
  8. HDG2L-IOT-EU V2.2核心板 wifi STA模式测试
  9. KDD'20 | 如何建模互联网水军的对抗行为?
  10. 算法谜题1----狼羊菜过河