操作系统:计算机架构里的幕后指挥官

Linxu系列


文章目录


前言

在上篇博客中,我们介绍了冯诺依曼体系,,但是冯诺依曼体系结构出现的都是硬件设备,难道需要用户去操作、管理硬件设备吗?这显然是不现实的,所以在计算机的组成中,开发者给用户提供了一款软件------操作系统,来帮助用户管理软硬件资源,它具体是如何管理,又是怎么做到的呢,下面我们深入探讨一下。


当然该有的流程是不能少的。

一、操作系统的概念

操作系统是计算机系统中最基本的软件, 对于设计者来说, 操作系统是资源的管理者, 对于普通终端用户来说是一个操作环境, 是执行各种操作的一个平台。主要功能是管理系统各个部件,给上层应用软件提供一个易于理解和编程的接口。

二、操作系统的工作原理

在深入讲解之前,我们首先要了解一下计算机系统架构:

从概述部分我们可以了解到,操作系统是一款帮助用户管理软硬件资源的软件,它就像一个图书管里员,底层硬件就像是书本,我们可以体会到,在我们的现实生活中,为了方便对书本进行存储、查找,我们往往会将图书进行分类,放在不同书架上,在这里驱动程序就相当于书架,当我们要查找图书是,只需找到对应的书架即可。所以为了方便操作系统对硬件进行管理,不同硬件都提供了对应的驱动程序,操作系统通过对驱动程序的调度完成对硬件资源的管理,而操作系统的目的是服务于用户,但是用户对操作系统的了解太少,操作系统内部资源又很重要,所以操作系统不相信用户,但是又要给用户提供服务(便于用户调用内部资源),该怎么办呢?对外提供服务的接口!!对于这点,可以类比银行在我们生活中的作用,银行是用来为大众提供存钱、取钱等一系列资金管理服务的,但是银行又不相信他的客户(存钱要过验钞机、取钱不让自己拿),但是又要提供相应的服务,所以它开设了许多服务窗口。**操作系统对外提供的接口我们称之为------------------系统调用接口,所有想要访问操作系统的行为都只能通过系统调用来完成。**到了这里一些厉害的程序员大佬,就将这些很基础的系统调用接口包装为库函数、shell外壳等用户调用接口,但是这依然不能满足普通用户的需求,又经过包装、开发产生了指令、软件等一些我们所熟知。

看到这里还不算完,但是我们可以进行一个小总结了
1、操作系统是什么?

  • 操作系统是进行管理的软件!它管理着计算机的软硬件资源。

2、操作系统为什么管理?

  • 操作系统通过管理好底层的软硬件资源,为用户提供一个良好(稳定、高效、安全)的执行环境。

那么操作系统是如何进行资源管理的呢?我们还以上面的方式给大家介绍。

三、操作系统对软硬件资源的管理

在我们现实生活中,是如何进行管理的呢?我们就以学校为例,来类比学习,在学校中,校长就是典型的管理者,而我们这些苦逼大学生,很显然是被管理者了,在我们的大学生涯中,很容易体会到,作为被管理者的我们,几乎见不到管理者(校长),校长在不见我们面的情况下是如何对我们进行管理的呢?对于这一点,校长只需要通过我们的数据(如:拿到我们的逃课次数、违纪次数、挂科次数、平时绩点),进行管理(判断是否开除等),那么管理者和被管理者,都不见面是如何拿到数据的呢?辅导员啊,它将我们的数据汇总后交给管理者,这时校长说"这个学生怎么违纪那么多次,开除吧"辅导员就可以通知你回家了。
在这个过程中,管理者又可以称为决策者,它只需根据数据下达指令即可,而辅导员可以称为执行者,他会更具管理者的指令执行对应的工作。
看到这里我们就可以得出管理的本质:是通过对数据的管理,达到对人的管理。

操作系统对软硬件资源的管理,也是通过对数据的管理进行的

接下来我们再通过一个故事,深入理解一些:

某天你学校要和其他学校进项一场计算机比赛,这时校长想要从各个班级挑选出,编程最好的几名同学进行培训,通知辅导员将各班成绩上报,于是校长得到了,一堆成绩单,难道要一个个看嘛?这时校长突然想到自己是一名程序员啊!于是他想设计一个结构体,来存储学生信息,该如何设计呢?虽然每个人的名字不同,但是他们都有名字、虽然成绩不同,但是都有成绩...于是他将学生身上共有的属性用一个类封装了起来,交给辅导员,辅导员就会让学生填写自己的信息,生成属于自己的对象。**这个过程就是描述的过程。**校长拿到这些结构体对象,将他们用链表穿起来,只需要一个排序就可以筛选出自己想要的结果,这时校长只需要对这个链表进行管理,就可以达到对学生的管理。这个过程就叫做组织。

看完这个故事再理解操作系统,就很简单了。操作系统,拿到硬件的数据进行管理,如何拿到的呢?驱动程序,驱动程序将硬件的各种属性数据,交给操作系统,操作系统将这些数据描述出来生成对应的对象,将这些结构体对象用容器链接起来,这时只需对容器进行管理,就可以达到对硬件的管理,而这个管理的过程----------先描述,再组织。

总结

在开发角度,操作系统对外会表现为一个整体 ,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装 ,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

至于操作系统使用什么方法描述、怎么链接等一些概念我会在下一篇进程篇给大家分享。

相关推荐
邪恶的贝利亚41 分钟前
python的运行--命令行
linux·运维·服务器
偏右右1 小时前
Linux常见命令
linux
weixin_519311741 小时前
通过多线程分别获取高分辨率和低分辨率的H264码流
linux·运维·算法
剑走偏锋o.O1 小时前
Linux常用指令学习笔记
linux·linux常用指令
刘翔在线犯法1 小时前
虚拟机IP的配置,让它上网
linux·运维·服务器
Archer1942 小时前
C语言——结构体、联合体/共用体、枚举类型、typedef关键字
c语言·开发语言
小呀小萝卜儿2 小时前
2025-02-28 学习记录--C/C++-PTA 7-34 通讯录的录入与显示
c语言·学习
西域编娃2 小时前
CentOS 7 IP 地址设置保姆级教程
linux·运维·centos
黄小耶@2 小时前
如何快速创建Fastapi项目
linux·python·fastapi
m0_582481492 小时前
qt作业day2
java·linux·前端