《Linux从练气到飞升》No.11 初识操作系统

简介: 《Linux从练气到飞升》No.11 初识操作系统

操作系统概念

什么是操作系统?

任何计算机系统都包含一个基本的程序集合,进行软硬件资源管理的一个软件,称为操作系统(OS)。

设计操作系统的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

为什么要有操作系统?

答:它负责管理和控制计算机的硬件资源,提供用户与计算机之间的接口,协调和调度各个程序的执行,以及确保系统的安全和稳定运行。简而言之,操作系统存在的目的是为了有效地管理计算机系统的资源,提供良好的用户体验,并保证系统的正常运行。

操作系统定位

  • 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

以银行系统为例:

首先大家都知道是有一个银行系统的,那么银行本身上面肯定有各种各样的硬件单元,比如说桌椅、宿舍、电脑、设备、仓库、保险柜。

虽然我们进过银行里面看它是什么样子,但我们看到那些电影脑补的时候,我们应该知道,其中每一种就叫做银行系统当中的一些硬件组件,那么硬件组件其中就需要有人专门去管理这些硬件。其中桌椅板凳我们有后勤的人员,宿舍有宿舍阿姨,电脑设备有公司的 IP 部门,仓库保险柜有受过专业训练的各种保安,那么再往上,只要我们保证桌椅、宿舍、电脑、设备、仓库、保险柜我们全都有了,有了之后给他配上人。

比如说每一个人都能够把自己的各种硬件都能管好,那么桌椅板凳相关数据,宿舍的相关数据,电脑的相关设备各种数据它能够帮我采集上来就可以了。它这里面其中就是我们所谓的叫做银行的一套体系。然后怎么办?就给大家举个例子,比如说我是一个银行的行长,我想决策更换一下老的电脑,那我就要做这个决策是前提条件,是不是我得先让这个管电脑的 it 部门给我汇总一下我们现在的电脑大概都是什么年份的?什么配置,然后那么其中我们可能有一半是老的,一半是新的,那我这个时候就可以做这个决策了。

我说it 部门,给你们拨一笔预算,把电脑设备给我更新一下,好吧?我们不管 15 年之前的,我们全部更换好。当然如果我作为一个行长,我发现这个电脑都挺新的,那我就放弃他这个更新,放弃本身就是决策。

总之我只要能够在上面能够通过某些人获取到电脑设备相关的数据,我也就能够知道对该硬件做好管理,这个其实不难理解,但是同学们,那么大家要明白一个非常重要的道理,就是我们的银行系统当中银行的一套系统,首先需要有一个模块,这个模块功能点需要把所有的这些硬件以驱动程序驱动,那么把它全部管理起来,就相当于有一个专门的负责人把这些硬件全部管理起来。也就是说银行的桌椅、宿舍、电脑设备、仓库都应该被统一的一个人管理起来,这是管理我们硬件,

第二个大家可以看到我们能够理解的一个非常关键的点,就是在银行当中,他主要是给我们提供服务,比如说我去银行办事,那么就会有银行的工作人员来告诉我怎么办,而这批工作人员他根本就不关心桌椅是什么样子,宿舍什么样子,然后电脑设备什么样,保险柜在哪里?他最关心的是你要干啥?你这个客户你是要取钱还是存钱?所以银行当中还会存在大量的员工,这里就是我们所对应的正儿八经银行,在银行体系当中进行银行业务管理的相关人员。

好,下面你再想想,因为我们这些业务人员,他的业务能力其实是有的,他能够帮我们进行存取我们对应的钱,银行里面也有钱,那么这个银行的业务人员就叫做所对应的软件,桌椅板凳以及配套的这些管理人员,他就类比到对应的硬件,所以软件和硬件相结合我们就能够完成某些事情。

比如说我是银行的工作人员,有人专门给我把桌椅关好了,宿舍管好,电脑设备给我调配成最新,各种软件全给我装上,然后仓库、保险柜那么各种管理给我做好,然后我作为银行的工作人员,那么我只需要对接客户,那么这个客户想存钱,好,那么钱给我,我来给用户的账上把钱增加上去,然后把钱放到仓库里。然后如果这个用户想贷款,我就直接根据他的征信,然后评估出他能贷多少钱,甚至他如果有抵押,那我就看下他的抵押额,给他再贷钱。其中你会发现其中如果我们的业务人员和我们的硬件相配合,我们就能够完成某些贷款或者存钱或者取钱的相关业务。

好,那么其中对我们来讲这是银行的工作人员,那么其中银行里面还有各种各样的什么保安,什么大堂经理,乱七八糟的这种人,当然这些其实都是在银行当中办事的,他们的更多角色其实是属于一个共同构成我们银行系统的一些环节。所以对我们来讲,只要有了这样的一套系统,那么只需要让我们的银行行长统一把这批人管理起来好就可以。而其中比如说桌椅板凳出问题了,那么上层这部分就能做管理,那么同样的这一批工作人员,那么他的业务能力怎么样?有没有出问题?其中我们也是需要由我们的行长来对他进行管理,我们可以把这一套东西统一可以看作成叫做银行的管理。

操作系统的内容

操作系统包括什么?

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

用户部分:自主开发,指令,yum。

用户操作接口部分:库函数,把系统调用的函数再次封装了一遍,提供出来的函数。

system call部分:操作系统为程序员提供的接口。

操作系统部分:内存管理,进程管理,文件管理,驱动管理。

驱动程序:网卡驱动,硬盘驱动,其他驱动,有多少种硬件就对应对少驱动。

硬件部分:网卡,硬盘,其他。

如何理解 “管理”

主要理解好一下两点:

  • 1.描述被管理对象
  • 描述起来,用struct结构体。
  • 2.组织被管理对象
  • 组织起来,用链表或其他高效的数据结构。

操作系统是怎么做管理的?

比如说实际上我们在学校当中,校长和学生之间就是典型的管理和被管理者,但是我们实际发现校长和学生是管理者和被管理者,但是他们并不直接沟通,我们从来没见过他,也没见过我,我也没见过他,但是他照样把我管理得明明白白的。

那么为什么呢?是因为那么他本质上不是对我人身做管理,而是对我的个人相关信息做管理,所以所谓的管理本质就是对数据做管理。所以我们需要在校长和学员之间有一个执行者的角色,包括我们的驱动程序,这个其实就叫做辅导员或者是驱动程序帮我能够采集到我们普通客户或者被管理对象的相关数据,然后同时还会执行一些特定的管理命令,那么其中我们的辅导人就是典型的执行者角色,而实际上,那么我们最终被管理对象的数据一定会涉及得非常多,不要觉得你计算机上学校里几万人很直观,你也不要认为计算机上那种硬件它的那些相关数据就不多,实际上它还非常多。

然后再加上操作系统内部可能也会有各种设计方式,所以那么我们最终操作系统就通过驱动程序的存在,就能够帮我们去对硬件或者软件资源进行管理,变成对数据的管理。但这种数据量比较大,操作系统如果没有一个有序的、有组织化的结构的方式把我们的数据组织起来,那么最终也就没办法管理,所以我们最后就得出了一个结论,有的操作系统要管理数据,数据管理没错,但也必须把我们对应的数据采集到之后,然后将它以特定的数据结构组织起来。

所以所谓的对进程做管理,本质上就对我们对应的对软硬件资源做管理,本质上就已经变成了对某种数据结构的管理。

假设我们以通讯录为例建立了一个管理,其实它就可以被我们在计算机当中抽象出来,让我们能够从管理的角度去理解,将管理转化成对某种数据结构的管理,所谓的管理动作最后落实到操作系统内核里,就变成了对某种结构的增删查改,然后那么有了这样的宏观认识之后,最终得出来的结论就是管理的理念。管理的理念就叫做先描述再组织好,也就是说我们要先将被管理对象描述抽象成特定的结构,那当然定义对象肯定是少不了,然后我们新增一个管理对象,其实在内核当中就是新增一个描述类别,也就是我们抽象出来的类或者是struct,用它来定义一个变量,并且的话就是 Malloc new 一个对象,然后将该对象再投入到我们所对应的链表或者各种数据结构当中。

最终操作系统得到的代码,它就转化成了对于这些数据结构的各种数据结构算法,也就变成了所谓的操作实践,叫做链表。比如说链表又可以实现我们所听过的增删查改,以及链表的各种各样其他的一些方式如删节点或者是查节点其实是一样的,对我们来讲,只要能够反过来有了这样的结构,我们就可以很有序地将我们的数据管理起来。数据一旦能够被我们使用特定算法管理起来之后,操作系统就可以将我们的数据再进一步地和驱动程序结合,就能够对硬件做相关管理。

系统调用和库函数概念

  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

系统,不管是银行系统还是所谓的叫做操作系统,它不相信任何人,所以他们两个对外暴露提供接口的时候,都是以统一的接口的方式去提供的,没有其他方式,只能使用系统调用接口来访问操作系统。就如同只能通过柜台的方式来访问,那么来跟银行内部的工作人员去沟通,来完成某项工作。

操作系统是一套体系,和银行体系是一样,那银行体系有自己的软件等硬件驱动,还有个所谓的管理者角色还有各种接口,基于这个接口之上就有人帮我们去搭建了各种各样的上层文件。

最典型的就是银行服务,在窗口之外的那些服务人员给我们提供出同样的操作系统,它也有它自己对外的接口,暴露的是不会暴露自己任何细节的,它只会对外以接口的方式去给用户开放适当的权限,怎么让用户去访问呢?这些操作性接口都觉得不方便,所以就有人基于系统接口去完成了各种那封装,然后有的是为了方便操作了必须具有的图形化界面,有了,是为了方便我们编程的,所以就有了我们的更多语言第三方标准后,然后甚至还有各种其他比较。所以当我们不断再去网上搭建的时候,我们会发现其实用起来就应该越来越舒服,越来越简单。

后记

我们最终得出来了两个大结论,第一个,所谓操作系统进行管理,需要先描述,再组织。第二个结论,操作系统对外提供服务是通过系统这种接口的方式来完成对外提供服务的。其他只要理解一下就好了,本篇就结束了~

相关文章
|
6月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
12月前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
11月前
|
存储 Linux iOS开发
【Linux】冯诺依曼体系与操作系统理解
本文深入浅出地讲解了计算机体系的两大核心概念:冯诺依曼体系结构与操作系统。冯诺依曼体系作为现代计算机的基础架构,通过中央处理器、存储器和输入输出设备协同工作,解决了硬件性能瓶颈问题。操作系统则是连接硬件与用户的桥梁,管理软硬件资源,提供运行环境。文章还详细解析了操作系统的分类、意义及管理方式,并重点阐述了系统调用的作用,为学习Linux系统编程打下坚实基础。适合希望深入了解计算机原理和技术内幕的读者。
293 1
|
6月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
6月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
392 0
|
6月前
|
Unix 物联网 Linux
都什么年代了,你还不懂啥是Linux操作系统
至于华为鸿蒙操作系统是不是独树一帜,这个留给各位阅读本文的网友们来讨论
169 0
|
6月前
|
Web App开发 缓存 Rust
|
6月前
|
安全 Linux iOS开发
linux属于什么操作系统
Linux是一种自由和开放源代码的操作系统,具有高度的灵活性和可定制性。与常见的操作系统如Windows和macOS相比,Linux具有自由、安全和稳定等优势。Linux已广泛应用于服务器、桌面电脑、超级计算机和嵌入式设备等领域,并且在未来的发展前景广阔。由于其自由和开放源代码的特性,Linux还促进了计算机技术和社区的发展,为全球的计算机用户提供了更多的选择和可能性。
|
6月前
|
安全 Ubuntu Unix
关于Linux操作系统,你必须要知道的事
我们可以看到无论是Debian还是Buildroot都有各自的特点,为客户提供了更大的选择空间和灵活性,大家可以根据自己的需求选择合适的版本来满足终端用户的体验和功能需求。从平技术将会一直关注更多更安全、灵敏、易于开发的Linux版本,做好适配工作,不断为客户带来“简单开发、方便应用”的使用体验。
|
6月前
|
安全 Ubuntu Linux
如何安装Linux操作系统?
此时,您可以选择重新启动计算机,然后从硬盘上的Linux系统启动。以上是一个大致的安装过程。请注意,不同的Linux发行版可能会在细节上有所差异,因此在进行安装之前,请确保您阅读并理解了相应发行版的安装指南或文档。