操作系统——系统调用
1.简介
操作系统作为用户和计算机的接口,需要向上提供一些简单易用的服务,主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成
系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
2.为什么要提供系统调用?
小红和小明一起去打印作业,按下打印按钮之后,打印内容并没有混淆。如果进程可以随便使用打印机,两个打印的作业就会混杂。
解决混淆的方法:操作系统提供系统调用功能,用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统发出请求,操作系统会对各个请求进行协调管理。
3.系统调用定义
应用程序通过系统调用请求操作系统的服务。
系统中各种共享资源都由操作系统统一掌握,因此在用户程序中,凡是与资源有福安的操作,都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。
这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
4.系统调用功能
设备管理: 完成设备的请求、释放、启动 等功能。
文件管理: 完成文件的 读、写、创建、删除等功能。
进程控制: 完成进程的 创建、撤销、阻塞、唤醒等功能
进程通信: 完成进程之间的 消息传递、信号传递 等功能
内存管理: 完成内存的 分配、回收等功能
(备注:系统调用相关处理涉及到对系统资源的管理、对进程的控制等需要执行特权指令才能完成的功能,因此系统调用需要在核心态下进行。)
5.系统调用与库函数
应用程序理论上可以直接使用汇编语言进行系统调用
但是由于软件开发大都使用java等高级语言,所以我们中间用了一层库函数
系统调用的相关处理在核心态
普通应用程序 | 可直接进行系统调用,也可以使用库函数,有的库函数涉及系统调用,有的不涉及 |
编程语言 | 向上提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,向上层进行系统调用更方便。 |
操作系统 | 向上提供系统调用 |
不涉及系统调用的库函数 eg:"取绝对值“函数
涉及系统调用的库函数 eg:"创建一个新文件”的函数
6.系统调用的过程
高级语言——编译——汇编语言——处理系统调用 的相关代码
传递系统调用参数——执行陷入指令(用户态)
——执行系统调用相应服务程序(核心态)——返回用户程序
1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
2. 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令
操作系统——系统调用相关推荐
- 操作系统--系统调用
操作系统–系统调用 系统调用的目的和作用 系统调用是操作系统提供给应用程序的接口 作用: 应用程序可以系统调用(程序接口)请求获得操作系统的服务 系统调用会使得处理器从用户态切换为核心态 系统调用的分 ...
- 操作系统系统调用_操作系统中的系统调用
操作系统系统调用 系统调用简介 (Introduction to System calls) The interface between the operating system and the us ...
- 操作系统系统调用实验
操作系统实验一(记录) 思路: 1.实验目标及要求 2.实验结果演示 3.实验流程 4.遇到的问题及解决 5.实验思考 一.实验目标 题目5:把指定文件变为长度为0的空文件 要求: 添加系统调用: \ ...
- 为什么 Linux 系统调用会消耗较多资源
本文转载自:公众号真没什么逻辑,作者Draveness,特此感谢! 系统调用是计算机程序在执行的过程中向操作系统内核申请服务的方法,这可能包含硬件相关的服务.新进程的创建和执行以及进程调度,对操作系统 ...
- c语言strcat_s用于调用的参数太少_为什么系统调用会消耗较多资源呢
为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...
- 超干货!当初我要是这么学习操作系统就好了(附带思维导图)
点击蓝色"小詹学Python"关注我哟 加个"星标",一起走向人生巅峰! 1 下面是本文的思维导图 我们平常说的进程和线程更多的是基于编程语言的角度来说的,那么 ...
- Linux系统调用相关概念
目录: 1. Linux系统调用原理 2. 系统调用的实现 3. Linux系统调用分类及列表 4.系统调用.用户编程接口(API).系统命令和内核函数的关系 5. Linux系统调用实例 6. Li ...
- Linux内核深入理解系统调用(1):初始化-入口-处理-退出
Linux内核深入理解系统调用(1):初始化-入口-处理-退出 rtoax 2021年3月 1. Linux 内核系统调用简介 这次提交为 linux内核解密 添加一个新的章节,从标题就可以知道, 这 ...
- 为什么系统调用会消耗较多资源?系统调用的三种方法:软件中断(分析过程)、SYSCALL指令、vDSO(虚拟动态链接对象linux-vdso.so.1)
Table of Contents 软件中断 汇编指令 vDSO 总结 参考文章 系统调用是计算机程序在执行的过程中向操作系统内核申请服务的方法,这可能包含硬件相关的服务.新进程的创建和执行以及进程调 ...
最新文章
- python 编程该看那些书籍_初学者自学Python要看什么书?
- java 自旋锁_java锁的种类以及辨析(一):自旋锁
- 【Linux】【Services】【nfs】nfs安装与配置
- php redis 投票_高性能Redis服务架构分析与搭建
- 大龄打工者的出路在哪里
- numpy 维度与轴的问题
- python有什么用-学了Python一般可以用来干什么?老男孩教育告诉你!
- 广西2021各校高考成绩查询入口,2021广西高考成绩查询时间广西高考分数查询入口和查分方式_高三网...
- SLAB内存泄露分析实践
- ubuntu查看端口
- 简单爬取京东商品名称、价格(仅供学习)
- mysql 左连接都是null_sql左连接有疑问,为什么查出来都是null,而不是没有数据?...
- java导出excel 序号_java web将数据导出为Excel格式文件代码片段
- error: cannot lock ref 'refs/remotes/origin/master': unable to resolve reference 'refs/remotes/origi
- 浙大MPA常规批复试上岸经验分享
- axure流程图模式_Axure基础教程:产品流程图的制作方法详解
- 计算机网络到底该怎么学?
- OpenGL程序VC框架:Bezier 曲线
- boost spirit 解析字符串 (一)
- 网络测试工具netperf