当前位置: 首页 > news >正文

《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 一个对象,然后将该对象再投入到我们所对应的链表或者各种数据结构当中。

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

系统调用和库函数概念

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

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

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

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

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

后记

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

相关文章:

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

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

什么是 XSS 攻击?

概念 XSS 攻击指的是跨站脚本攻击,是一种代码注入攻击。攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息如 cookie 等。 XSS 的本质是因为网站没有对恶意代码进行过滤,与正常的代码混合在一起了&…...

基于Spring Boot的招聘网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的招聘网站的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java springboot框…...

中级课程——CSRF

文章目录 案例原理挖掘 案例 原理 挖掘 挖掘详情 首先就是对目标敏感部位进行抓包分析,比如修改信息、转账、添加信息等等。通常一个数据包HTTP请求头里边都会有一个Referer,这个需要特别去验证。比如放到Burpsuit Repeater里边去测试:去掉…...

面试热题(岛屿数量)

给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均…...

【WebRTC---源码篇】(二十四)GCC获取码率后的分配

RtpTransportControllerSend::PostUpdates 配置码率 GoogCcNetworkController::GetPacingRates pacing_factor_默认2.5。也就是说pacer发送报文的码率是探测码率的2.5倍。 PacerConfig GoogCcNetworkController::GetPacingRates(Timestamp at_time) const {// Pacing rate …...

数据可视化工具LightningChart .NET正式发布v10.5.1——拥有全新的3D新功能

LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学…...

AWS认证SAA-C03每日一题

本题库由云计算狂魔微信公众号分享。 【SAA-C03助理级解决方案架构师认证】A company has a multi-tier application that runs six front-end web servers in an Amazon EC2 Auto Scaling group in a single Availability Zone behind an Application Load Balancer(ALB).A …...

ASP.NET Core MVC -- 将视图添加到 ASP.NET Core MVC 应用

Index页 右键单击“视图”文件夹,然后单击“添加”>>“新文件夹”,并将文件夹命名为“HelloWorld”。 右键单击“Views/HelloWorld”文件夹,然后单击“添加”>“新项”。 在“添加新项 - MvcMovie”对话框中: 在右上…...

基于R做宏基因组结果的PCoA分析

写在前面 因为公司给的PCA结果效果不佳,决定从中重新挑选部分样本进行再分析 步骤 表格结果预处理 在属水平genus参考原本结果已有的PCA图,尽可能挑选距离较远且聚团的样本 选取不同样本属水平的丰度数据,整理成逗号分隔的csv文件 代码…...

8.10 算法刷题【1道题】

8.10 算法刷题 22. 链表中环的入口结点(快慢指针) 22. 链表中环的入口结点(快慢指针) 原题链接 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x…...

Apache Maven:从构建到部署,一站式解决方案

目录 一、Maven介绍 1. Maven是什么? 2.Maven的作用? 二、Maven仓库介绍 2.1 库的分类 三、Maven安装与配置 3.1 Maven安装 3.2 Maven环境配置 3.3 仓库配置 四、Eclipse与Maven配置 五、Maven项目测试 5.1 新建Maven项目步骤及注意事项 5.…...

文章四:版本控制策略 - 穿越时光机:Git版本控制进阶技巧

开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun 概述 版本控制是Git的核心功能,它使得开发者可以记录代码的历史变更,并能够在不同版本…...

爬虫如何应对网站的反爬机制?如何查找user-agent对应的值

import requestsurl https://movie.douban.com/top250 response requests.get(url) # 查看结果 print(response)在requests使用一文中我们有讲到,当状态码不是200时表示爬虫不可用,也就是说我们获取不到网页源代码。但是我们还是可以挣扎一下&#xff…...

一个概率论例题引发的思考

浙江大学版《概率论与梳理统计》一书中的,第13章第1节例2如下: 这个解释和模型比较简单易懂。接下来,第2节的例2是一个关于此模型的题目: 在我自己的理解中,此题的解法跟上一个题目一样,第二级传输后&…...

司徒理财:8.11黄金最新走势分析早盘1914现价多

黄金昨日再次破位新低,但是下跌力度出现衰竭迹象,意味着本次下跌暂时告一段落,行情将会开启一波反弹,早盘1914现价直接多,先看反弹上涨!黄金从走势上看,日线上已经跌至前低附近,也是…...

请写一个非对称加密工具 示例包括完整的通信流程

非对称加密工具通常用于保护数据的机密性和身份验证。下面是一个简化的示例,展示了完整的通信流程,包括密钥生成、加密、解密和数字签名验证: import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.…...

近地面无人机植被定量遥感与生理参数反演技术

遥感(RS-Remote Sensing)——不接触物体本身,用传感器收集目标物的电磁波信息,经处理、分析后,识别目标物,揭示其几何、物理性质和相互关系及其变化规律的现代科学技术。 换言之,即是“遥远的感…...

卡巴斯基为基于Linux的嵌入式设备推出专用解决方案

导读卡巴斯基在其卡巴斯基嵌入式系统安全产品中引入了对 Linux 的支持。这种适应性强的多层解决方案现在为基于Linux的嵌入式系统、设备和场景提供优化的安全,合通常适用于这些系统的严格监管标准。 卡巴斯基在其卡巴斯基嵌入式系统安全产品中引入了对 Linux 的支持…...

Word转PDF工具哪家安全?推荐好用的文件格式转换工具

Word文档是我们最常见也是最常用的办公软件,想必大家都知道了Word操作起来十分的简单,而且功能也是比较齐全的。随着科技的不断进步,如今也是有越来越多类型的办公文档,PDF就是其中之一,那么word转pdf怎么转?Word转PD…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...