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

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
菜鸟刷题集

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

文章目录

    • 操作系统概念
    • 设计操作系统的目的
    • 操作系统定位
    • 操作系统的内容
    • 如何理解 "管理"
    • 系统调用和库函数概念
    • 后记

操作系统概念

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

设计操作系统的目的

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

为什么要有操作系统?

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

操作系统定位

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

以银行系统为例:
在这里插入图片描述

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

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

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

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

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

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

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

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

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

操作系统的内容

操作系统包括什么?

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

在这里插入图片描述

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

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

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

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

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

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

如何理解 “管理”

主要理解好一下两点:

  • 1.描述被管理对象

    • 描述起来,用struct结构体。
  • 2.组织被管理对象

    • 组织起来,用链表或其他高效的数据结构。

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

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

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

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

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

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

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

系统调用和库函数概念

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

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

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

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

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

后记

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/68828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python实现调用百度翻译的API

import requests import hashlib import random import jsondef translate(text, from_lang, to_lang):app_id XXXXX # 替换为你的App IDsecret_key XXXXX # 替换为你的Secret Key# 生成随机数salt random.randint(32768, 65536)# 计算签名sign app_id text str(salt) …

vue的proxy代理详解

一、proxy常用参数说明 module.exports {publicPath: "/",devServer: {proxy: {"/api": {// 代理名称 凡是使用/api开头的地址都是用此代理target: "http://1.2.3.4:5000/", // 需要代理访问的api地址changeOrigin: true, // 允许跨域请求pa…

【云原生】K8S集群

目录 一、调度约束1.1 POT的创建过程1.1调度过程 二、指定节点调度2.1 通过标签选择节点 三、亲和性3.1requiredDuringSchedulingIgnoredDuringExecution:硬策略3.1 preferredDuringSchedulingIgnoredDuringExecution:软策略3.3Pod亲和性与反亲和性3.4使…

---------------- 部署 Zookeeper 集群 ----------------

部署 Zookeeper 集群 1.安装前准备2.安装 Zookeeper修改配置文件在每个节点上创建数据目录和日志目录在每个节点的dataDir指定的目录下创建一个 myid 的文件配置 Zookeeper 启动脚本 //准备 3 台服务器做 Zookeeper 集群 192.168.109.1 192.168.109.2 192.168.109.3 1.安装前准…

Zorin OS 16.3 发布:无缝升级和卓越改进!

导读Zorin OS 团队自豪地宣布了备受期待的 Zorin OS 16.3 版本的发布,这是这个受欢迎的 Linux 发行版的一个里程碑版本。自首次发布以来不到两年时间,Zorin OS 已经获得了庞大的用户群体,截至目前已经有 530 万次下载,而 16.3 版本…

QGIS二次开发六:VS不借助QT插件创建UI界面

上一篇博客我们说了在VS中如何使用QT插件来创建UI界面,但是我们二次开发QGIS的第一篇博客就说了,最好使用OSGeo4W中自动下载的QT进行QGIS二次开发,这样兼容性是最好的,那么该如何在VS中不使用外部安装的QT以及QT的VS插件情况下进行…

B树的插入与删除过程

B树的插入 原树: 插入key后,若导致原节点关键字数超过上限,则从中间位置( ⌈ m 2 ⌉ \lceil\frac{m}{2}\rceil ⌈2m​⌉)将关键字分成两部分,左部分包含的关键字放在原节点中,右部分包含的关键…

应用程序运行报错:First section must be [net] or [network]:No such file or directory

应用程序报错环境: 在linux下,调用darknet训练的模型,报错:First section must be [net] or [network]:No such file or directory,并提示:"./src/utils.c:256: error: Assertion 0 failed." 如…

YOLOv5-7.0实例分割+TensorRT部署

一:介绍 将YOLOv5结合分割任务并进行TensorRT部署,是一项既具有挑战性又令人兴奋的任务。分割(Segmentation)任务要求模型不仅能够检测出目标的存在,还要精确地理解目标的边界和轮廓,为每个像素分配相应的…

Echarts 让饼图中间文字居中并自适应图表

背景: 产品提出需求在饼图中间放两行文字且居中 “简单,劈劈啪啪写完了” 产品再提出你这个没有自适应啊,屏幕放大、缩小你这个就没有居中了,甚至会和饼图重叠 “emmmmm…" UI图如下: 方案一:使用ti…

Arduino 项目笔记 | Arduino LED Memory Game 颜色记忆游戏机

成果展示 颜色记忆游戏机 | Arduino DIY 1. 线路链连接 1.1 原理图 1.2 PCB 免费PCB打样 Arduino LED Memory Game 颜色记忆机资料下载 1.3 烧录 Bootloader 第二部分:Burn bootloader 2. 程序实现 #define NOTE_B0 31 #define NOTE_C1 33 #define NOT…

3.正则表达式

3.1什么是正则表达式 ●正则表达式( Regular Expression) 是用于匹配字符串中字符组合的模式。在JavaScript中, 正则表达式也是对象 ●通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式 ●正则表达式在JavaScript中的使用场景: ➢…

赛码网-triangle(dp) 100%AC代码(C)

———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在准备秋招,一直在练习编程。 ⏩本篇文章对赛码网的01串的魔法 题目做…

竞赛项目 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

viewerjs 如何新增下载图片功能(npm包补丁)

文章目录 先实现正常的效果实现下载图片改变viewerjs的build函数源码改变之后,执行npm i 之后node_modules源码又变回了原样 1、viwerjs所有功能都很完善,但唯独缺少了图片的下载 2、需求:在用viwerjs旋转图片后,可以直接下载旋转…

【类和对象】收尾总结

目录 一、初始化列表 1.格式要求 (1) 初始化列表初始化 ①括号中是初始值 ②括号中是表达式 (2) 初始化列表和函数体混用 2.特点 ①初始化时先走初始化列表,再走函数体 ②拷贝构造函数属于特殊的构造函数,函数内也可以使用初始化列表进行初始化 …

【c语言】指针进阶(超详细)

文章目录 ✈ 指向函数指针数组的指针📌指向函数指针数组的指针的定义📌指向函数指针数组的数组指针的使用 ✈回调函数📌 回调函数的定义📌 回调函数的使用 ✈qsort函数📌 qsort函数的作用📌qsort函数的定义…

Rikka with Square Numbers 2023“钉耙编程”中国大学生算法设计超级联赛(8)hdu7370

Problem - 7370 题目大意&#xff1a;给出两个数a&#xff0c;b&#xff0c;每次操作可以使其中一个数加上或减去一个任意的完全平方数&#xff0c;问要使a&#xff0c;b相等需要的最少操作次数是多少 1<a,b<1e9,a!b 思路&#xff1a;我们可以将问题转化为将a和b的差w…

最强的表格组件—AG Grid使用以及License Key Crack

PS: 想要官方 License Key翻到最后面 Ag Grid简介 Ag-Grid 是一个高级数据网格&#xff0c;适用于JavaScript/TypeScript应用程序&#xff0c;可以使用React、Angular和Vue等流行框架进行集成。它是一种功能强大、灵活且具有高度可定制性的表格解决方案&#xff0c;提供了丰富…

UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数

引言&#xff1a; 所有的操作系统都为运行在其上的程序提供服务&#xff0c;比如&#xff1a;执行新程序、打开文件、读写文件、分配存储区、获得系统当前时间等等 1. UNIX体系结构 从严格意义上来说&#xff0c;操作系统可被定义为一种软件&#xff0c;它控制计算机硬件资源&…