操作系统究竟是什么?在计算机体系中扮演什么角色?
- 一、操作系统概念
- 二、操作系统如何管理软硬件资源
- 2.1 何为管理者
- 2.2 操作系统如何管理硬件
- 三、系统调用接口作用
- 四、用户操作接口
- 五·、广义操作系统和狭义操作系统
一、操作系统概念
下面是来自百度百科对操作系统的概念:
操作系统(英语:Operating System,缩写:OS)是一种内置的程序,用来协作计算机的各种硬件,以与用户进行交互。常见有Windows,macOS 和开源的 Linux。
根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
操作系统是人与计算机之间的接口,也是计算机的灵魂。
emmm… 非常抽象
通俗来讲,操作系统是一款进行软硬件资源管理的软件。操作系统通过将软硬件资源管理好(手段),从而给用户提供一个良好(稳定、高效、安全)易用的使用环境(目的)。
emmm…那操作系统是如何管理软硬件资源?如何给操作用户提供一个良好易用的使 用环境?
下面是计算机软硬件架构图,下面博主基于此图分析上述两个问题,以及图中每个部分的意义!
二、操作系统如何管理软硬件资源
在整个计算机软硬件架构中,操作系统被定义为一款纯正的搞“管理”的软件!
2.1 何为管理者
生活中,所有的事情宏观上大致可分为两大类:做决策、做执行。而对于管理者来说,基本以做决策为主。但管理者如何做决策,作出正确决策?
现在假设校长要管理学生,比如让张三退学。但校长没有和张三见过面,凭什么让张三退学?原来校长通过辅导员拿到了全校所有学生的各科成绩信息。校长拿到了完善的数据,发现张三挂科严重,才作出让张三退学的决定。所以管理的本质不是管人,而是管理数据!
但现在学生人数过多,校长管理学生需要得到更多相关信息(诸如:姓名、入学年份、紧急联系人等等)。其中一种解决办法就是将所有学生的相关信息写入一张excel表格中,从而实现结构化管理。但如果人数过多,这样管理起来还是很麻烦,那怎么办?
我们可以通过编程中面向对象的知识,通过一个结构体将所有的信息封装起来,比如:
struct Student
{
char name[4];//学生名字
int age;
string numbers;//电话号码
// .....
}
我们可以将所有学生的信息都转化为一个结构体对象,然后通过链表的形式链接起来。
这就是对学生管理的一个建模过程,最终将管理学生转化成对链表的增删查改!!
管理可总结为“先描述,在组织”。即被管理的对象以什么样的结构体形式来描述,然后将结构体设定具体对象,通过特定的数据结构组织起来。
2.2 操作系统如何管理硬件
我们已经知道管理的本质是管理数据,所以操作系统要管理底层硬件,首先得到相应硬件的数据信息(比如磁盘已使用空间、数据存放区域、是否正常等的)。但操作系统和硬件没有直接接触,所以中间存在驱动程序。驱动程序将硬件的相关信息传递给操作系统。同时由于各种信息庞杂,为例更好管理,操作系统需要将相关信息通过结构体方式(操作系统主要是C写的)进行描述,在通过特定的数据结构组织起来。从而将对硬件的管理转化成这些数据结构的管理。
当操作系统作出某种决策时,操作系统将信息传递给驱动程序,通过驱动程序来完成操作系统对硬件的控制。
三、系统调用接口作用
在所有的计算机体系中,都不允许用户直接对操作系统进行操作。原因在于操作系统不相信用户。就像银行系统一样,银行为什么要柜台和玻璃,为什么不让用户自己取钱后自己修改以下数据。原因在于银行不相信我们,但又必须要为我们提供相关服务,所以安装了玻璃,并在玻璃上开了一个洞。同样用户中存在坏人,所以操作系统不允许用户直接操作控制它。但操作系统要为我们提供相应的服务(比如向磁盘中写数据),所以提供了system call(系统调用接口)。所以的用户请求只能通过系统调用借口传给操作系统!!
四、用户操作接口
系统调用使用起来比较麻烦,所以对于站在系统上的人提供了一些外壳程序(Linux中为shell外壳,windows为图形化界面),而这写外壳程序大多是由C/C++写的,其中必然存在系统调用借口。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高。所以,大佬们对部分系统调用进行适度封装,从而形成库。有了库,就很有利于更上层用户或者开发者进行二次开发。