初步认识操作系统(Operator System)

简介: 管理者管理被管理者,实际上是先将被管理者的各种信息进行描述,然后再将多个被管理者的描述信息根据某种数据结构组织起来,最后管理者管理被管理者实际上就是对数据结构的管理。


目录

对操作系统认识的初步定位
简单来说,操作系统就是一款进行软硬件资源管理的软件。其本身也是软件!!!

换句话说操作系统就是在整个计算机软硬件框架中,操作系统的定位时:一款纯正的“搞管理”的软件。

操作系统的概念
任何计算机系统都包含一个基本的程序集合,我们将其称之为操作系统(OS)。笼统的理解,操作系统包括:

内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)
设计操作系统的目的
与硬件进行交互,管理所有的软硬件资源。
为用户程序(应用程序)提供一个良好的执行环境。
操作系统之上之下分别有什么
我们经常说硬件啊,软件啊。但是这俩到底是什么呢?

首先,我们买回来一台电脑。肉眼可见的就是计算机实物,也就是计算机底层的硬件。比如说:主板,中央处理器(CPU),内存(RAM),硬盘或固态硬盘(HDD/SSD),显卡(GPU)......这些硬件看似是一个个罗列出来的,但实际在底层都遵守冯诺依曼的组织形式。你要问为什么要遵守冯诺依曼体系的结构,那原因就是冯诺依曼体系结构就是这么要求的。

而单单只有这些硬件设备是远远不够的,还需要将他们管理的软件。例如,在冯诺依曼体系结构中,内存何时从输入设备读取数据?读取多少数据?内存何时刷新缓冲区到输出设备?是按行刷新还是全刷新?这些都是由软件进行管理的,而这个软件就是操作系统(Operator System),缩写OS。

此时我们就会产生另一个疑问:难道操作系统直接和底层硬件打交道吗?

举个例子,如果操作系统自己来完成键盘的读取操作,那么只要你的键盘读取方式(比如说由原来的有线改为了蓝牙)进行了改变,那么操作系统的内核源代码就需要进行重新编译,这对操作系统来说维护成本太高了。

于是我们又在操作系统与底层硬件之间增加了一层驱动层,驱动层的主要工作就是单独去控制底层硬件的。例如,键盘有键盘驱动,网卡有网卡驱动,硬盘有硬盘驱动,磁盘有磁盘驱动。驱动简单来说就是去访问某个硬件,访问这个硬件的读、写以及硬件当前的状态等等,驱动层就是直接和硬件打交道的。而驱动一般是由硬件制造厂商提供的,或是由操作系统相关的模块进行开发的(例如网卡)。
此时操作系统就只需关心何时读取数据,而不用关心数据是如何读取的了,也就是完成了操作系统与硬件之间的解耦。

那操作系统究竟管理些什么呢?操作系统主要进行以下四项管理:

内存管理:内存分配、内存共享、内存保护以及内存扩张等等。
驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作。
文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。
进程管理:其工作主要是进程的调度。

而操作系统再往上就是我们所处的位置,在这里我们就可以用命令行或是图形化界面进行各种操作,这一层被称为用户层。

但操作系统为了保护自己,对上只暴露了一些接口,而不会让用户直接访问操作系统,这一系列接口被称为系统调用接口。就好比我们去银行取钱,银行是不会让你直接接触到钱,而是由他们的工作人员帮助你,为你服务,并且在服务期间,你与工作人员之间还有着一个厚厚的钢化玻璃,这就就是说,你可以去银行,也可以访问银行,但是终归银行是不信任你的,毕竟群众之中有坏人,你所有访问银行的操作,都是要由工作人员代替你去完成,你只需要去与银行工作人员去商量。

那么在这个过程中你就是作为用户,银行就是操作系统,工作人员就是系统调用接口。你所有访问操作系统的行为都是只能通过系统调用接口来完成。

但这些系统调用接口对我们普通用户来说使用成本又太高了,因为要使用系统调用前提条件是你得对系统有一定了解。所以在系统调用接口之上又构建出了一批库,例如libc和libc++。实际上在语言级别上使用的各种库,就是封装了系统调用接口的,我们就是通过调用这些库当中的各种函数(例如printf和scanf)进行各种程序的编写。

最后,我们对这部分进行分类,分为三部分,分别是硬件部分,系统软件部分,用户部分。

管理的精髓:先描述,再组织
最后,要想学好操作系统,那么就必须正确理解操作系统到底什么怎么管理软硬件的。其原理就是先描叙在组织。

简单的总结就是一句话,但实际上他还有很多细节与奥妙,为了使得更好的理解与掌握,这里就不单单陈述知识了。而是采用生活中的案例进行比喻,使得更好理解。

现在给出三个角色:学生、辅导员和校长。很明显,校长在这三个人当中是管理者,学生是被管理者,那么辅导员充当什么角色呢?

仔细想象后就可以反应过来,我们对于一个事情,其实是经过决策与执行两部走,那么操作系统是由人设计出来的,那么其也应该符合人的常理,应该也是先决策,然后再执行,所以校长作为管理者,工作就是决策。辅导员的身份就是执行者,其工作是执行校长的决策。

那么在学校中,对于一个事情,校长作为管理者,其他不会直接去管理学生,而是产生决策,下达命令让辅导员去执行。

那么上过大学的就会知道一个事情,你四年见到校长的次数特别的少,甚至四年就见到过两三次,那么校长是如何做到在不看到我们的情况下对我们进行管理的呢?

在这个过程中校长是没有见到过这十个人的就完成了决策工作,就对其进行了管理,他根据的是什么?没错,他根据的是各个同学的信息,也就是计算机中的数据。

实际上,学校将我们每个学生的各种信息都进行了管理,基本信息、成绩信息以及健康信息等等。

我们规定,每一套这样的信息他都代表着一名学生,校长通过对这些信息的管理就能做到对学生的管理,就不需要直接去见到各个学生。这么一套信息在C语言当中我们抽象的称之为结构体,而在C++当中又叫做面向对象的类。

当学生数量增加时,校长可以将所有学生的信息进行有效的组织和管理,而组织方式有多种选择,如链表、顺序表或树等。每种方式各有其独特的优势,因此就有了专门教授如何管理数据的课程——数据结构。在这个假设中,我们设想校长使用双链表来组织学生信息,这种结构能够灵活地进行插入和删除操作。

此时校长对各个学生的管理,实际上就变成了对这个双链表的增删查改。当有新生时直接向该双链表加入一个结点,当学生毕业后直接将学生信息从该双链表当中移除即可。

总结
管理者管理被管理者,实际上是先将被管理者的各种信息进行描述,然后再将多个被管理者的描述信息根据某种数据结构组织起来,最后管理者管理被管理者实际上就是对数据结构的管理。
管理的本质:是通过对数据的管理,从而达到对某个准确的对象的管理。
管理者(操作系统)可由执行者(驱动程序)拿到数据。在这个过程中管理者与被管理者是二者不见面的。
操作系统的管理为:只要做描述过程(先)与组织过程(后)。描述过程就变为了对某种数据结构的增删查改。
系统调用与库函数的概念
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能呢比较基础,对用户的能力要求也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次封装。

目录
相关文章
|
11月前
|
JavaScript Linux Windows
【应用服务 App Service】NodeJS +Egg 发布到App Service时遇见 [ERR_SYSTEM_ERROR]: A system error occurred:uv_os_get_passwd returned ENOENT(no such file or directory)
【应用服务 App Service】NodeJS +Egg 发布到App Service时遇见 [ERR_SYSTEM_ERROR]: A system error occurred:uv_os_get_passwd returned ENOENT(no such file or directory)
237 0
|
Linux Shell C语言
【Linux】操作系统(Operator System)
【Linux】操作系统(Operator System)
|
数据管理 大数据 Shell
操作系统(Operator System)简介
操作系统的简单了解,为接下来学习进程管理,内存管理等操作系统方面的知识做铺垫!
操作系统(Operator System)简介
|
Web App开发 安全 Ubuntu
Linux必知词汇:操作系统(Operating system,OS)
Linux必知词汇:操作系统(Operating system,OS)
762 0
|
SQL Oracle 关系型数据库
|
监控 Oracle 关系型数据库
安装ORACLE 10G时,报告操作系统版本(operating system version)检查失败之案例一
〖Environment(环境)〗 OS:solaris 9 DB:Oracle 10G 〖Symptom现象)     〗 执行./runInstaller以后,报告下面的错误:   Checking installer requirements……   Checking operating system version: must be 5.6, 5.7, 5.8 or 5.9。
1282 0
|
8月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
333 0
Vanilla OS:下一代安全 Linux 发行版
|
5月前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
328 10
|
6月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
250 2
OS Copilot-操作系统智能助手-Linux新手小白的福音

推荐镜像

更多