你真的了解操作系统吗?

文章目录

    • 操作系统是什么?
    • 操作系统核心功能
    • 为什么需要操作系统(目的)?
    • 操作系统的下层是什么?上层又是什么?
    • 如何理解“管理”?——“先描述,再组织”


操作系统是什么?

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。
笼统的说,操作系统包括:

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

在这里插入图片描述

操作系统核心功能

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

对什么进行管理呢?

操作系统就是一款对计算机硬件软件进行管理的软件。


为什么需要操作系统(目的)?

我们知道,一个良好的秩序是需要管理的,有了良好的秩序,做事情才可以简单而高效。以我们人类社会为例,每个国家都有政府,政府制定法律法规对人们进行管理,这是人类社会井然有序的关键,这是亘古不变的。

计算机的世界也是如此,操作系统就是“政府”,各个硬件软件就是“人民”。

所以,操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的执行环境(目的)。
这里用户其实一般指的是程序员,普通用户一般不会直接接触操作系统,一般使用的是程序员开发出来的软件。

总结

  • 操作系统帮助用户管理好下面的软硬件资源
  • 为用户提供一个良好(稳定、高效、安全)的运行环境

操作系统究竟管理些什么呢?

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

在这里插入图片描述


操作系统的下层是什么?上层又是什么?

我们知道,操作系统是对硬件进行管理的,对硬件之间的数据读取,刷新,数量等等进行管理分配。
在这里插入图片描述

那么,操作系统直接和底层硬件打交道吗?
例如,如果操作系统要自己来读取硬件的数据,那么只要改变了对硬件读取数据的方式,那么操作系统的内核源代码就需要进行重新编译,也就是重启操作系统,如此代价太高了。
因此,我们需要使用驱动程序,间接管理底层硬件,此时操作系统就只需关心何时读取数据,而不用关心数据是如何读取的了。
在这里插入图片描述
那操作系统的上层是什么呢?
第一个想到的一定是我们用户了,他一定是我们计算机的顶层

在这里插入图片描述
但是,直接让用户使用操作系统安全吗?
显然是不安全的,操作系统中会有各种数据若是被用户随意修改,会出现严重的问题。
因此,操作系统不相信任何用户!

为了保证自身数据安全,也为了保证给用户提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统的内部数据。其实就是封装起来了。

我们知道,Linux是用C语言实现的,所以系统调用是:操作系统提供的用C实现的,自己内部函数的调用

总之,所有访问操作系统的行为,都只能通过系统调用完成

在这里插入图片描述
但是,让所有用户访问操作系统都直接系统调用吗?这样对于像我们这样的普通用户的使用成本是不是太高了?
因为要使用系统调用前提条件是你得对系统有一定了解。所以在系统调用的上层又构建出了很多用户操作接口,它包括lib(函数库如libc、libc++等等,实际就是我们平时写程序时调用的库函数)、shell外壳以及部分指令。

完整结构如下:
在这里插入图片描述


如何理解“管理”?——“先描述,再组织”

我们以大学的管理为例
在大学中:

  • 最典型的管理者——校长
  • 最典型的被管理者——学生

我们想想,你在学校见过校长吗?亦或是说,所有的学生都见过校长吗?
管理者和被管理者是不需要见面的!
那不需要见面,校长是如何管理好所有学生的呢?
其实,只要能够得到被管理人的信息,就可以在未来进行管理决策。
管理的本质:通过对数据的管理,达到对人的管理

我们思考一下,做一件事情分为几步?
实际上完成任何一件事都要经过两个过程:

  1. 决策:决定要不要做这件事或是如何做这件事
  2. 执行:去做这件事情

校长管理学生,校长其实就是决策者。
那执行者是谁呢?
校长与被学生面都不见,那校长如何获取对应学生信息呢?
通过辅导员(老师),辅导员就是执行者。

在这里插入图片描述

举个例子,校长需要挑选3个学生代表学校参加算法大赛,于是校长喊来辅导员说:“给我挑出10个算法最优秀学生,把他们信息给我。”于是辅导员在校内举办了一场算法校赛,选拔出前10名的学生,将他们的信息交给了校长,校长拿到他们的信息后,挑出了3个人安排去参加算法大赛。

可以发现,管理者在不与被管理者见面的情况下,完成了管理。

校长如何管理学生数据???
成千上万个学生,难道校长一个一个找吗?
如果校长曾经是一个程序员,这可忍不了一点,他会定义一个学生类,这个类包含学生的所有属性,如姓名、学号、电话、班级、专业、绩点……。然后实例化出所有学生对象,然后用数据结构(以链表为例)将他们存储起来,最后校长只需要将这个学生链表结构管理好就可以了!

#include<list>class student
{
public://……
private:char* name;int age;//……
};list<student> stu_data;

将对学生的管理操作转化为了对链表的增删查改!

再同步到计算机的世界,我们就好理解了:

  • 管理者(决策者)——操作系统
  • 执行者——驱动程序
  • 被管理者——软硬件资源

在操作系统中,管理任何对象,最终都可以转化为对某种数据结构的增删查改

前者定义类的过程就是描述,后者用数据结构建立模型的过程就是组织。

这里的组织又称建模,计算机只能这么做!

管理的精髓总结为六个字:先描述,再组织

其实不仅仅对于操作系统做管理是如此,我们在计算机中管理数据也是同理的,比如我们之前写的通讯录,先定义一个联系人类,类中包含联系人的所有属性,此行为是描述。之后我们用顺序表对所有联系人进行建模,此行为是组织。最后,我们管理联系人就转化为了对这个顺序表的增删查改。

在整个计算机世界中,都遵循“先描述,再组织”!

其实还不仅如此,在现实世界中也是这样的。我们思考一下,人是怎样辨别一个事情或者一个对象的?没错,都是通过属性认识的,只要当属性足够多,这个属性集合就是目标对象!

我的意思是,如果在理想情况下,我们可以列出一个对象的所有属性,则在现实世界中,也遵循“先描述,再组织”!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1详解requests接口自动化测试

前言 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 1、理解什么是接口 接口一般来说有两种…

Linux系统操作编程——http

万维网www万维网是一个大规模的、联机式的信息储藏所 &#xff0c;实现从一个站点链接到另一个站点万维网服务器后台标记万维网数据方式&#xff1a;url&#xff1a;统一资源定位符万维网客户端与万维网服务器的通信方式&#xff1a;HTTP&#xff1a;超文本传输协议万维网客户端…

Langchian-chatchat私有化部署和踩坑问题以及解决方案[v0.3.1]

文章目录一 langchain-chatchat项目二 本地私有部署2.1 源码下载2.2 创建虚拟环境2.3 安装Poetry2.4 安装项目依赖2.5 初始化项目2.6 修改配置信息2.7 初始化知识库2.8 启动服务三 问题和解决方法3.1 poetry和packaging版本兼容性3.2 Langchain-chatchatPDF加载错误分析[win平台…

Day3--HOT100--42. 接雨水,3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词

Day3–HOT100–42. 接雨水&#xff0c;3. 无重复字符的最长子串&#xff0c;438. 找到字符串中所有字母异位词 每日刷题系列。今天的题目是力扣HOT100题单。 双指针和滑动窗口题目。其中438题踩了坑&#xff0c;很值得看一下。 42. 接雨水 思路&#xff1a; 每个位置i&#x…

Kafka Broker 核心原理全解析:存储、高可用与数据同步

Kafka Broker 核心原理全解析&#xff1a;存储、高可用与数据同步 思维导图正文&#xff1a;Kafka Broker 核心原理深度剖析 Kafka 作为高性能的分布式消息队列&#xff0c;其 Broker 节点的设计是支撑高吞吐、高可用的核心。本文将从存储结构、消息清理、高可用选举、数据同步…

RTTR反射机制示例

1. Person类型头文件 #ifndef PERSON_H …

计数组合学7.21(有界部分大小的平面分拆)

7.21 有界部分大小的平面分拆 本节的主要目标是在 q1q 1q1 的情况下细化定理 7.20.1&#xff0c;通过限制平面分拆 π∈P(r,c)\pi \in P(r, c)π∈P(r,c) 的最大部分的大小。例如&#xff0c;考虑特殊情况 r1r 1r1&#xff0c;此时 π\piπ 只是一个不超过 ccc 个部分的普通分…

Product Hunt 每日热榜 | 2025-08-26

1. Trace 标语&#xff1a;人类与人工智能的工作流程自动化 &#x1f47e; 介绍&#xff1a;一个工作流程自动化平台&#xff0c;将任务分配给合适的处理者——无论是人类还是人工智能。通过连接像Slack、Jira和Notion这样的工具&#xff0c;Trace能够拆解现有工作流程&#…

llama.cpp reranking源码分析

大模型时代&#xff0c;reranker一直是提高RAG有效性的重要工具。相对于初筛阶段向量检索&#xff0c;精排阶段的reranker需要query和每个候选document做相关计算。初筛已经将候选documents限制在一个相对较小范围&#xff0c;但依然要进行大量的相关性计算。 llama.cpp是广泛…

ruoyi-vue(十二)——定时任务,缓存监控,服务监控以及系统接口

一 定时任务 1、 定时任务使用 1.1 概述 在实际项目开发中Web应用有一类不可缺少的&#xff0c;那就是定时任务。 定时任务的场景可以说非常广泛&#xff0c;比如某些视频网站&#xff0c;购买会员后&#xff0c;每天会给会员送成长值&#xff0c;每月会给会员送一些电影券&…

spring如何通过实现BeanPostProcessor接口计算并打印每一个bean的加载耗时

文章目录实现说明&#xff1a;注意事项&#xff1a;要在Spring中通过BeanPostProcessor接口计算并打印每个Bean的加载耗时&#xff0c;我们可以利用该接口的两个回调方法记录Bean初始化前后的时间戳&#xff0c;然后计算时间差。 以下是实现方案&#xff1a; 首先创建一个实现B…

“品种+创新销售”,恩威医药半年度业绩翻倍增长

8月25日晚&#xff0c;恩威医药发布2025年半年度报告&#xff0c;报告期内&#xff0c;公司实现营业收入4.49亿元&#xff0c;同比增长15.73%&#xff0c;归属于上市公司股东净利润达3834.42万元&#xff0c;同比增幅113.80%&#xff0c;扣除非经常性损益净利润为3527.57万元&a…

【机器学习】机器学习算法

机器学习1、K-近邻算法KNN1.1、举例&#xff1a;电影类型分析1.2、KNN算法流程1.3、Scikit-learn工具1.4、K-近邻算法API1.5、距离度量1.5.1、欧式距离Euclidean Distance&#x1f525;1.5.2、曼哈顿距离Manhattan Distance&#x1f525;1.5.3、切比雪夫距离Chebyshev Distance…

python-批量安装库

要将当前环境中已安装的Python库列表导出为一个可重用的格式&#xff08;通常为requirements.txt&#xff09;&#xff0c;以便在另一个环境中再现这些库的安装&#xff0c;可以使用pip工具提供的功能。以下是具体步骤&#xff1a;### 使用pip freeze1. **打开命令提示符或终端…

创龙3576ububuntu系统设置静态IP方法

创龙3576ububuntu系统设置静态IP方法&#xff0c;执行命令进入"/etc/systemd/network/"目录&#xff0c;请根据实际网络环境&#xff0c;下面演示修改 eth0.network 网口静态ip为192.168.1337.200执行&#xff1a;vim /etc/systemd/network/eth0.network 增加一句&am…

MySQL - 视图,事务和索引

目录一、视图1. 问题2. 视图是什么3. 定义视图4. 查看视图5. 使用视图6. 删除视图7. 视图的作用二、事务1. 定义2. 事务命令1&#xff09;回滚2&#xff09;提交3&#xff09;脏写、脏读、不可重复读和幻读三、索引1. 定义2. 索引是什么3. 索引目的4. 索引原理5. 索引的使用6. …

车载铁框矫平机:把“钣金诊所”开到工地上

——一次从原子层面开始的平整之旅一、先想一想&#xff1a;铁框为什么“脾气大” 钢板在轧制、切割、焊接、吊装、甚至太阳暴晒时&#xff0c;内部晶粒被拉得七扭八歪&#xff0c;像揉皱的纸。宏观上&#xff0c;我们就看到“翘、拱、扭”。矫平&#xff0c;实质上是给金属做一…

不安全的服务器,不支持 FTP over TLS

当服务器不支持 FTP over TLS&#xff08;也称为 FTPS&#xff09;时&#xff0c;意味着它仅支持未加密的 FTP 连接。这种情况存在显著的安全风险&#xff0c;因为&#xff1a;数据传输不加密&#xff1a;用户名、密码以及传输的文件内容都会以明文形式在网络中传输&#xff0c…

本地缓存与 Redis 缓存的区别与实际应用

缓存是提升系统性能、降低数据库压力的重要手段。Java 开发中常用的缓存方案包括 ​本地缓存&#xff08;如 Caffeine、Guava Cache&#xff09;​​ 和 ​分布式缓存&#xff08;如 Redis&#xff09;​。这两者在设计目标、使用场景、性能特点等方面有显著差异&#xff0c;合…

从“0”开始学JAVA——第十一节 I/O流

在Java编程中&#xff0c;文件操作和输入输出(IO)处理是必不可少的部分。本文将深入探讨Java IO包中的文件流操作&#xff0c;包括基础概念、分类、常用类以及实际应用场景。1. File类File类是Java IO操作的基础&#xff0c;它实现了Serializable和Comparable<File>接口。…