【Linux进程】再谈软件—操作系统(Operator System)
目录
操作系统(Operator System)
概念
设计OS的目的
如何理解 "管理"——先描述再组织
系统调用和库函数概念
总结
操作系统(Operator System)
概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。
笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库,shell程序等等)
操作系统是一款进行管理(硬件和软件)的软件!
设计OS的目的
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个良好的执行环境
在一套系统中,需要有管理者进行统筹。对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境,因此就有了操作系统。
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
如何理解 "管理"——先描述再组织
下面我们来列举一个管理的例子:
我们上大学的时候,在学校有很多事情都是需要我们辅导员负责。但辅导员对我们的管理规则并不是辅导员制定的,而是校长这一层的领导制定的,所以辅导员并不是我们的管理者,辅导员只能算是执行者,我们的校长这样的领导才是我们真正的管理者。比如小李在学校犯了错,辅导员并不能把他开除,但是校长可以。
- 所以区分管理者和执行者的关键是看他有没有拥有决策权!
我们把校长类比成操作系统(决策者),辅导员为驱动程序(执行者),学生是被管理者(底层硬件)。

这里可能有人会有疑问,我们平时在学校连校长的面都见不到,他是怎么管理我们的呢?其实校长(决策者)是通过辅导员(执行者)管理我们的,下面我们就来理解一下管理的方法——先描述,再组织。
管理的精髓:先描述,再组织

先描述(描述被管理对象):我们刚开始来学校的时候,每个院的学生都会到特定的地方去报道,然后填上你的基本信息,最后将你的信息录入到电脑中,这些信息就是我们的数据。每一套信息就对应着一名学生,校长通过对这些信息的管理就能够做到对学生的管理。
再组织(组织被管理对象):当学生的数量特别大的时候,校长就需要将这些信息组织起来,组织的方式有很多种,我们可以通过我们之前学过的数据结构来组织,比如说链表。每种组织方式都有其自己的优势,假设我们校长这里是通过链表的形式将学生的信息组织起来的。
因此校长对学生的管理,就变成了对这个链表的增删查改,当有新生来学校报道时,只需要在链表中增加一个节点,当有一个学生从学校毕业后,只需要将该学生的信息从该链表中移除即可。
现在我们再来回答上面的问题:我们平时在学校连校长的面都见不到,他是怎么管理我们的呢?
- 管理者和被管理者是不需要见面的
- 管理者在不见被管理者的情况下,如何做好的管理呢? 只要能够得到管理信息,就可以在未来进行管理决策 ---- 管理的本质: 是通过对_数据 的管理,达到对人的管理
- 管理者和被管理者面都不见,我们怎么拿到对应的数据呢? 通过执行者
系统调用和库函数概念
用户与操作系统的交互
操作系统里面,里面会有各种数据。可是,操作系统不相信任何用户!
所以用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用(是操作系统提供的用C实现的,自己内部的函数调用)。所有访问操作系统的行为,都只能通过系统调用完成!
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

- 库函数通常是高级语言提供的,提供了一种方便的接口,使得程序员可以执行某些常见的任务,而无需直接与操作系统进行交互。库函数通常是在编程语言的标准库中提供的,例如C语言的标准库中包含了很多常用的库函数。
- 系统调用是操作系统提供的一种机制,允许程序请求操作系统的服务。库函数通常使用系统调用来与操作系统内核进行交互,以实现更高级的功能。例如,C语言中的库函数如printf()和scanf()等都使用了系统调用。
因此,库函数和系统调用的关系是上下层的调用与被调用的关系,库函数使用系统调用与操作系统进行交互,以实现更高级的功能。
总结
操作系统对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境。
操作系统中,注定了,一定存在大量的数据结构!
计算机管理硬件——先描述再组织
1. 描述被管理对象,用struct结构体。
2. 组织被管理对象,用链表或其他高效的数据结构。
用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。
库函数和系统调用的关系是上下层的调用与被调用的关系,库函数使用系统调用与操作系统进行交互,以实现更高级的功能。
相关文章:
【Linux进程】再谈软件—操作系统(Operator System)
目录 操作系统(Operator System) 概念 设计OS的目的 如何理解 "管理"——先描述再组织 系统调用和库函数概念 总结 操作系统(Operator System) 概念 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。 笼统的理解,操作系统…...
创建超过1G内存大小的程序
正常情况一个进程最大占用内存为1G一下,如果程序有需求要使用超过1G大小的程序,可进行如下操作 VS修改设置:属性--->链接器--->系统--->启用大地址 【选择是】 测试申请堆内存代码 #include <stdlib.h> #include <stdio…...
如何本地部署Jellyfin影音服务器并实现在公网访问
文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…...
docker fixuid
docker fixuid 一、fixuid是什么二、使用场景三、问题dockerfiledocker run 一、fixuid是什么 fixuid是用go语言编写的,当容器起来后可以修改容器中非root用户的UID/GID和文件权限。 项目地址:https://github.com/boxboat/fixuid 二、使用场景 当容器…...
MySQL笔记--SQL语句
目录 1--SQL的通用语法 2--SQL语句的分类 3--DDL语句 3-1--数据库操作 3-2--表操作 3-3--数据类型 3-4--修改和删除 4--DML语句 4-1--插入数据 4-2--修改数据 4-3--删除数据 5--DQL语句 5-1--基本查询 5-2--条件查询 5-3--聚合函数 5-4--分组查询 5-5--排序查…...
线扫相机DALSA-相机平场矫正详细步骤
在相机视野下铺放白色亚克力板或纯白纸,采集图像。打开曲线图。 选择 Line Profile 模式。调节好相应所需的曝光时间、光源、增益和镜头光圈,让白平衡纸显示出来的灰度值大概在 150-200 左右。 在Calibration Algorithm 中将显示的数值设置好。 先暗场…...
求购供应发布农业副业产品市场行情小程序开发
农业副业产品求购供应发布市场行情小程序H5开源版开发 后台同步:一键获取全国近200家农产品批发市场的商品价格,包括蔬菜、水果、水产、粮油和农副产品等。 实时更新和同步市场价格动态,保障信息的准确性和时效性。 前端VIP权益功能&…...
框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现
目录 服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP概述PHP-开发框架安全-Thinkphp&Laravel漏洞复现Thinkphp-3.X RCEThinkphp-5.X RCELaravel框架安全问题- CVE-2021-3129 RCE JAVAWEB-开发框架安全-Spring&Struts2Struts2框架安全…...
【腾讯云 HAI域探秘】宝妈也能快速入门AI绘画
活动背景 本次活动是由腾讯云和CSDN联合推出的开发者技术实践活动。我通过技术交流直播、动手实验、征文等形式,深入沉浸式体验腾讯云高性能应用服务 HAI。从活动中汲取到技术上的精华。在本次活动中,只要完成各个环节任务,不仅可以参与 AIGC…...
归并排序,自顶向下
归并排序主要两步,一步是划分区间,另一步是合并两个区间 这个算法的稳定性更好,对比快排这种,如果整体是倒序的话,快排的复杂度会达到o(n^2),归并会更稳定。 划分区间主要是递归去实现,下面给…...
【案例】3D地球(vue+three.js)
需要下载插件 <template><div class"demo"><div id"container" ref"content"></div></div> </template> <script> import * as THREE from three; // import mapJSON from ../map.json; import { Or…...
C语言中float byte char uint_8 转换方法
1.float转Byte[] #include <stdio.h>int main() {float floatValue 3.141592; // 浮点数值// 存储到字节数组unsigned char *byteArr (unsigned char *)&floatValue;// 打印字节数组for (int i 0; i < sizeof(float); i) {printf("Byte %d: 0x%02X\n&q…...
瑞明达:脚踏实地,为实体经济贡献“瑞明达”力量
实体经济是指以实际物质生产和经营为主要特征的经济形态,是经济发展的基础和主体。瑞明达团队一直关注着实体经济的发展,也在不断探索如何运用科技手段和管理经验助力实体经济的发展。团队将从几个方面介绍瑞明达团队的看法和实践经验。 实体经济在国家经…...
ChatGPT-自然语言处理模型
前言 GPT(Generative Pre-trained Transformer)是一种自然语言处理模型,具有强大的文本生成和理解能力。 使用场景 它可以用于各种场景,包括但不限于: 1. 自动文本生成:GPT可以生成连贯、流畅的文章、故…...
Apache Dolphinscheduler如何不重启解决Master服务死循环
个人建议 Apache Dolphinscheduler作为一个开源的调度平台,目前已经更新到了3.X版本,4.0版本也已经呼之欲出。3.0版本作为尝鲜版本,新添加了许多的功能,同时也存在非常多的隐患,本人使用3.0版本作为生产调度也踩了很多…...
绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!
在数字化的时代,我们所接触的信息呈现指数级的增长。无论是办公资料、学习资源,还是各种生活中的点滴,所有这些信息以各种形式——文本、图片、视频、音乐等——出现在我们面前,如何有效地同步和管理这些内容成为一个挑战。 就跨…...
阿昌教你如何优雅的数据脱敏
阿昌教你如何优雅的数据脱敏 Hi,我是阿昌,最近有一个数据脱敏的需求,要求用户可自定义配置数据权限,并对某种类型数据进行脱敏返回给前端 一、涉及知识点 SpringMVCJava反射Java自定义注解Java枚举 二、方案选择 1、需求要求…...
力扣每日一题80:删除有序数组中的重复项||
题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...
SQL——插入已经存在的数据
现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试…...
【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧
一,工具资源下载 百度网盘资源下载链接地址: 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
