初识操作系统

目录

一.操作系统的概念

二.正确理解"管理"

三.操作系统对硬件进行管理

四.系统调用接口

五.用户操作接口


一.操作系统的概念

操作系统是一款进行软硬件资源管理的软件

现在我们知道了操作系统的概念了,那么为什么要有操作系统呢?

操作系统将软硬件资源管理好,给用户提供良好(稳定,安全,易用,高效)的使用环境

二.正确理解"管理"

如何理解"管理"这个词呢?一个学校的管理者是校长,他管理着众多的学生,但身为被管理者的学生,平时基本都见不到校长,可能和我们打交道最多的就是辅导员,校长只负责在某些事物上拍板决策,下达命令。

由此可见,一个管理者只负责决策,并不直接和被管理的对象打交道,管理者只需知道被管理对象的相关数据,然后分析信息,做出决策即可。

我们得到一个重要结论,管理的本质不是管对象本身,而是管理对象的数据

如何管理数据呢?例如校长手上有所有学生的相关信息,姓名,性别,年龄,班级等等,我们发现所有的学生都有各自对应的信息,把每个人的信息放在一起,不就可以描述一个学生了吗?

为了方便管理所有学生信息,于是将它们按表格形式,一人对应一行,罗列出来。

所以管理数据要先描述,再组织

而C语言中的结构体,C++中的类,就是为了描述一个对象的所有属性,数据结构中的顺序表,链表等,就是为了将这些离散的数据组织在一起。

所以操作系统对软硬件进行管理,实质上就是通过结构体将所有软件或硬件的相关属性描述出来,然后通过链表,队列等数据结构将所有数据组织起来

总结起来就两句话**:管理的本质管理数据,要想管理数据就要先描述,再组织**

三.操作系统对硬件进行管理

操作系统和底层硬件之间还有一层驱动,什么是驱动呢?驱动通俗来说就是替操作系统跑腿的。

操作系统想要收集硬件的信息,于是它就安排对应的驱动程序去和硬件打交道,把信息收集回来。

操作系统想要对硬件进行操作,也是安排驱动去跑腿办事。

所以说,当你将一个u盘插进USB接口,能说u盘就是计算机的一部分吗?不能,只有u盘驱动程序访问到了u盘的信息,u盘这个硬件被操作系统纳入了管理,才能说u盘成为计算机的一部分。

四.系统调用接口

作为用户,我们对硬件进行操作,实际上是去访问操作系统,因为操作系统管理着所有硬件,有对应硬件的相关信息。那我们怎么访问操作系统呢?我们是要系统调用接口去访问的。系统调用接口相当于操作系统开的一个个小窗口,这样做的目的是防止用户"为所欲为"。

操作系统实际上是不信任用户的,如果让用户随意地直接访问操作系统里的数据,可能遭到破坏,所以才开了一个个的系统调用接口来限制用户的可操作空间,以达到保护操作系统的目的。系统调用接口也就是一个个函数,要想访问我操作系统,必须通过系统调用,按照规定传相应的参数,如果不按规矩来就将你拒之门外。

五.用户操作接口

让用户直接去使用系统调用接口难度还是不小,为此又设计了一层外壳程序,Windows系统的外壳程序就是我们熟悉的GUI图形化界面,例如双击鼠标左键,就可以打开一个程序。LInux系统中的外壳程序是Shell(命令行解释器),例如我输入一个ls指令,Shell就能对它进行解释,调用相应的系统调用接口。

故狭义上的操作系统指的是操作系统和系统调用接口,我们称之为操作系统内核

而广义上的操作系统就是操作系统内核加上Shell外壳

还有我们经常会使用C语言的printf函数,向显示器上打印字符,显示器也是硬件呀,我们向硬件写入内容,肯定是要访问操作系统的,要使用系统调用接口的。但printf函数是C语言标准库里的函数呀,哪来的什么系统调用呀。实际上,printf函数内部封装了对应的系统调用。

将系统调用接口,封装成各种各样好用的函数,打包形成库(lib),这样一来开发人员直接调用库函数就好了,从而提高开发效率。

相关推荐
shuxianshrng4 分钟前
大气网格化精细化监管监测系统
大数据·服务器·windows·经验分享
friklogff20 分钟前
【C#生态园】构建你的C#操作系统:框架选择与实践
服务器·开发语言·c#
TravisBytes26 分钟前
linux 系统是如何收发数据包
linux·运维·服务器
平头哥在等你1 小时前
《计算机网络名词解释》
服务器·网络·计算机网络
德迅--文琪2 小时前
SCDN是服务器吗?SCDN防御服务器有什么特点?
运维·服务器
ice___Cpu2 小时前
Linux 基本使用和 web 程序部署 ( 8000 字 Linux 入门 )
linux·运维·前端
z202305082 小时前
linux 之0号进程、1号进程、2号进程
linux·运维·服务器
秋已杰爱2 小时前
HTTP中的Cookie与Session
服务器·网络协议·http
狐心kitsune3 小时前
erlang学习:Linux常用命令1
linux·学习·erlang
code bean3 小时前
【C#基础】函数传参大总结
服务器·开发语言·c#