加入收藏 | 设为首页 | 会员中心 | 我要投稿 徐州站长网 (https://www.0516zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux操作系统原理(一)

发布时间:2022-11-16 17:01:13 所属栏目:Linux 来源:未知
导读: Linux操作系统原理(一)导论
学习FreeRTOS闲来无事,既然都学到这里了,何不将Linux的源码也分析一遍咧。说干就干。先学习原理先。(题记)
什么是操作系统

1,从用户的角度出发
用户想打

Linux操作系统原理(一)导论

学习FreeRTOS闲来无事,既然都学到这里了,何不将Linux的源码也分析一遍咧。说干就干。先学习原理先。(题记)

什么是操作系统

linux如何查使用的是什么样的linux系统_linux系统框图_linux系统怎么看系统

1,从用户的角度出发

用户想打开手机的摄像头拍照。显然用户是不可能直接自己为摄像头写驱动的程序(设置某某寄存器啥的),用户需要的是体验感,自己通过一个App就能够调动底层地硬件。

2,从硬件厂商角度

前面所述,用户是不管底层硬件结构的linux系统框图,那么底层硬件的驱动实现就要靠硬件厂家来实现了。那么硬件厂家将摄像头的驱动写好后是直接交给用户,显然也不是。所以,在用户与硬件之间必须要有一个中间商,来打通用户与硬件之间沟通的桥梁,它就是操作系统

3,操作系统的角度

如上所述,,用户通过App发出指令给操作系统,操作系统会分析是该指令内容,发现是打开摄像头,于是便向摄像头发出打开摄像头的机械指令。为此,我们可以知道操作系统是一款软件便于用户方便和高效管理底层的硬件结构,是用户与硬件沟通的桥梁。

计算机系统的组成

linux系统框图_linux系统怎么看系统_linux如何查使用的是什么样的linux系统

框图分析

如上图,在计算机系统主要的设备有CPU、磁盘、输出输出设备、内存、显示器。这些设备都被一根线连接在了一起。该线被称为"总线".其中所有的设备的终点都是指向了一个特殊的设备,该设备为"内存"。除CPU与内存之外所有的设备与总线连接的时候需要经过控制器模块如磁盘需要磁盘控制器,输入输出需要USB的控制器,显示器需要经过显示器驱动(也就是俗称“显卡”)。而我们的操作系统就是存在与磁盘上面。

操作系统提供的服务

linux如何查使用的是什么样的linux系统_linux系统框图_linux系统怎么看系统

对于普通用户来说

上图为操作系统提供的服务框图。在顶层中的user interfaces就是操作系统为用户提供的三个服务:SUI(图形界面),batch(批处理,就是一系列的命令组合起来的文件,比喻Linux的shell文件)。command line(命令行)。

对于程序员来:

第一个接口:除了能使用普通用户的操作,同时也能使用system call(系统接口)用于应用系统的开发。

第二个接口:program excution(程序运行)、IO operaction(IO接口操作)、File systems(文件系统管理,如NTFS、Exf4)、Communication(通信[主要是进程之间的通信])、resourceallocation(资源分配。主要是硬件的分配)、accounting(记录,记录当前资源的分配情况),error detection(错误功能的检测)、proection and security(保证安全,防止恶意程序的攻击). 的服务

详细分析

系统调用

系统调用提供访问和使用操作系统所提供的服务的。系统调用的实现代码是操作系统级别的,这个接口通常是面对程序员的,其中这个接口有个比较耳熟能详的名字“API”(指明了参数和返回值的函数)。应用程序APP的开发人员透过API访问了系统的调用,常用的系统调用有Windows API/POSXI API/JAVA API。

linux如何查使用的是什么样的linux系统_linux系统框图_linux系统怎么看系统

如上图所示,printf 是standa C library提供的API,printf 函数的调用引发了对应的操作系统从用户态(user mode)进入内核态(kernrl mode)然后接口调用write()函数的执行。write执行结束时的返回值会从内核态转换为用户态将数据传递到用户程序。

双重模式

如上图,我们提到了用户模式和内核模式。为啥要分两种模式?其实这与设定操作系统的初衷是一样的。为了用户能够将硬件管理权交给操作系统同时也是为防止恶意程序的攻击。确保操作系统正确运行

用户模式:执行用户程序,如App

内核模式:执行操作系统代码。

实现方式:用一个硬件模式位来表示当前模式:0表示内核模式,1表示用户模式。

模式切换原理

从上面的介绍中我们知道操作系统有用户模式和内核模式。那么这两个模式是如何切换的?

其实也很容易分析,再用户模式和内核模式下都需要对数据进行处理,那么就需要对内存进行操作,用户模式和内核模式的数据必定处于不同的内存栈中。模式切换本质就是CPU从用户栈拿数据切换到从内核栈中拿数据。从一个栈跳转到第二栈中拿取数据只有两种方式:1,直接的函数调用。再之前的分析中我们简述过,用户系统是不能随意的访问底层的硬件的。那就有人说了我经常的main函数中调用内核中的write函数。这不就是用户态直接使用内核态的API么中间也没有什么界限呀。其实,在main函数调用write函数的时候操作系统就已经自己默认进行了内核态和用户态的转换了。且如果单纯的函数调用其实和裸机的单片机没啥区别。可我们的操作系统是要实现多进程并发的显然这种方式不太适合。

linux系统框图_linux系统怎么看系统_linux如何查使用的是什么样的linux系统

2,中断:显然这就比较符合操作系统切换的途径。在我写的FreeRTOS中任务的切换都是在系统定时器中断中触发任务切换或者是直接触发PendSV异常进行触发。内核态与用户态之间的切换也是在中断服务函数中处理的。

linux如何查使用的是什么样的linux系统_linux系统怎么看系统_linux系统框图

系统调用的实现机制

每个系统调用都有一个唯一的数组编号称为系统调用编号,用户代码调用API时,API会向系统调用接口指明所要用到的接口调用号,操作系统中维护了一张索引表根据这个调用号可以检索到系统调用代码在内核中位置。

linux系统框图_linux系统怎么看系统_linux如何查使用的是什么样的linux系统

(编辑:徐州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!