系统调用的概念和作用
一、什么是系统调用,有何作用
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. 爬虫的概念 模拟浏览器,发送请求,获取响应 浏览器相当于客户端 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(如网易云音乐)(主要 ...
- 细说进程、应用程序域与上下文之间的关系(一)——进程的概念与作用
引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作. 虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提 ...
- (常用API)正则表达式的概念和作用
正则表达式的概念 正则表达式(英语:Regular Expression,在代码中常简写为regex). 正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字 ...
- java 常用流_Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数...
Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观 ...
- Spring4.x(2)--SpringIOC的概念和作用
SpringIOC的概念和作用 一.什么是IOC? Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着 ...
- 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 的体 ...
- 系统调用的概念及原理
系统调用与内核函数 内核函数与普通函数形式上没有什么区别,只不过前者在内核实现,因此要满足一些内核编程的要求. 系统调用是用户进程进入内核的接口层,它本身并非内核函数,但它是由内核函数实现的,进入内核 ...
- 数字证书的概念以及作用
1.1 数字证书的概念以及作用 数字证书又称为数字标识,是标志网络用户身份信息的一系列数据.它提供了一种在互联网上身份验证的方式,是用来标志和证明网络通信双方身份的数字信息文件.通俗地讲,数 ...
- Android Vendor Test Suite (VTS) 的概念、作用及测试方法
Android Vendor Test Suite (VTS) 的概念.作用及测试方法 Qidi 2017.08.01 (Markdown & Haroopad) 注意:本文基于 Androi ...
最新文章
- IOS 笔试题(二)
- python cx_oracle_Python3安装cx_Oracle连接oracle数据库实操总结
- rnn神经网络 层次_精讲深度学习RNN三大核心点,三分钟掌握循环神经网络
- 详解GaussDB(for MySQL)服务:复制策略与可用性分析
- 怎么访问原生php类,关于如何利用php的原生类进行XSS
- JavaScript 中数组 sort() 方法的基本使用
- mylyn提交到JIRA的日期格式错误
- 2.查看conv卷积的函数实现过程,原理,试用c语言编写调试.,西南科技大学信号与系实验报告.doc...
- Promise对象和运算符
- 群晖nas服务器的虚拟机,群晖NAS用于虚拟化的存储
- 形容词,名词记忆(五):ing ,ed 后缀常用词
- 跨界融合 | 零数科技正式成为上海现代服务业联合会会员单位
- 中医大2020年7月网考计算机应用基础,2020年7月网络教育统考计算机应用基础模拟题试卷9...
- html设置点击变换图标,【css】css实现点击Toggle功能/icon切换
- 技术方向决策的几点思考
- 极限类题之积分上限的函数的极限
- python 中文字符转换
- 使用VMware测试U盘启动盘是否制作成功
- Oracle篇--04 Oracle SQL高级查询、分页查询
- 文件上传绕过之00截断