linux系统调用的来龙去脉(上)

《linux系统调用的来龙去脉》分为上下两篇,本文为上篇。

1.前言

开始正题前先讲两个生活小案例来引出系统调用的意义。

案例一:图书馆

安居不用架高堂,书中自有黄金屋。娶妻莫恨无良媒,书中自有颜如玉。

图书馆是我喜欢去的一个地方,相信大家也都去过。在图书馆我们可以自由阅读任何书,广泛的汲取各种知识。正是由于所有人都可以自由的阅读任意书籍,所以经常就会出现书籍位置出现错乱,书籍页面出现损坏,甚至还会出现书籍遗失的情况。

linux系统调用的来龙去脉(上)
根据上述两个例子得出以下结论:
如果每个用户都能自由使用“资源”,随着时间的推移,“资源”就会出现损坏。
如果“资源”由“专业人员”管理,每个用户只能间接的使用“资源”,这样就可以安全的长久的使用“资源”。

2.如何保证系统安全性

操作系统提供给应用程序运行环境,让各种应用得以运行。在应用程序运行过程中有些操作是非常危险的,如果每个应用程序都能自由进行任何操作,就有可能带来如下各种问题:

1、多个应用程序直接去操作硬件外设,就会出现相互冲突,可能会出现需要应用程序A的读取数据,被应用程序B读取的情况。

2、多个应用程序被加载到内存,应用程序A占用了一个内存区域Z,应用程序B自己强制清空内存区域Z,那么就给应用程序A带来致命问题。

3、部分应用程序需要硬件中断让自己在合适的时机开始执行,如果其它应用程序把中断关掉,那么这些依靠中断触发的应用程序将再也得不到执行。

linux系统调用的来龙去脉(上)
由图可知:FIQ,IRQ,SVC,ABT,UND,SYS这六种模式是特权模式,USR是用户模式。在用户模式下有些指令是无法操作的,如进行MMU或cache的操作,在特权模式下任何指令都是可以操作的

这就回答了第一个问题“专业人员的特权是什么”,“专业人员”可以使用处理的特权模式,这样“专业人员”就可以在处理器上进行任何操作。而应用程序则在用户模式下,只运行在处理器上进行部分操作。在ARM V7 体系架构种SVC模式是为“专业人员”提供的特权模式。

如何获取特权/strong>

硬件中断是在电平变化时引发中断操作,而软中断是通过一条具体指令SWI,当CPU执行到SWI指令时会触发中断,进入中断程序(中断模式是特权模式)。

以ARM V7 体系架构为例,软件中断指令(SVC)用于产生软中断,实现从用户模式变换到特权模式。

linux系统调用的来龙去脉(上)

4.内核态

在计算机软件系统中包含一个名为操作系统的程序集合,在这个程序集合包括内核,设备驱动程序,启动引导程序,shell程序,文件管理工具等,其中最重要的程序称为内核(kernel)计算机的软件系统的模式和能力由内核决定,内核为操作系统中的所有事物提供了主要的功能,同时决定了上层应用软件的很多特性。

linux系统调用的来龙去脉(上)
内核为何如此重要核在操作系统中完成了以下两个重要功能
1、与计算机硬件交互。
2、为计算机系统中的应用程序提供执行环境。
linux系统调用的来龙去脉(上)

5.系统调用

为了保证操作系统的安全性,比如创建进程或者硬件交互这种操作不能由应用程序去完成,而必须让操作系统内核来完成。但是应用程序就有比如创建进程或者硬件交互这种操作需求,如何满足应用程序的需求br> 系统调用提供了应用程序和操作系统之间的接口,应用程序通过系统调用实现其与操作系统的通信,并可取得操作系统的服务。

linux系统调用的来龙去脉(上)

6.系统调用模型

由于linux系统调用比较复杂,因此我们先讲述系统调用的模型,然后再讲述linux的系统调用实现。
系统调用的本质是:应用程序请求操作系统内核完成某个功能。

linux系统调用的来龙去脉(上)
根据系统调用模型,用C语言实现一个简单的系统调用,C语言代码实例如下:
linux系统调用的来龙去脉(上)
上述这个简单的系统调用,实现了一个具体功能为function函数的系统调用,并且这个系统调用只有一个功能函数,实现了从零到一的过程
接下来增加难度,不是只实现1个具体功能,而是要实现10个功能,如何实现/strong>
linux系统调用的来龙去脉(上)
策略2使用一个软中断,在软中断函数中根据传入的参数,执行不同的功能函数
linux系统调用的来龙去脉(上)
未完待续…

创作不易希望朋友们点赞,转发,评论,关注。
您的点赞,转发,评论,关注将是我持续更新的动力
作者:李巍
Github:liyinuoman2017
CSDN:liyinuo2017
今日头条:程序猿李巍

linux系统调用的来龙去脉(上)

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114805 人正在系统学习中

来源:liyinuo2017

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月5日
下一篇 2022年4月5日

相关推荐