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

你真的了解操作系统吗?

文章目录

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


操作系统是什么?

任何计算机系统都包含⼀个基本的程序集合,称为操作系统(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.dtcms.com/a/351917.html

相关文章:

  • 低代码开发实践:快速构建企业采购审批流程的技术方案
  • 无线网络中的Duration字段计算:原理、机制与实现
  • php内存缓存插件yac的安装配置--平替apcu,多进程共享内存
  • 均胜电子上半年毛利率持续提升,汽车智能化与机器人业务多点突破
  • sed流编辑:从ed到现代文本处理的进化
  • 第二篇:MySQL初始化配置与性能优化
  • 汽车零部件软件迭代开发指南
  • Spring Boot -Mybatis的使用和基础
  • 数字孪生:工厂优化的下一个前沿领域
  • GIS开源库汇总
  • Linux笔记10——shell编程基础-4
  • Web安全开发指导规范文档V1.0
  • 基于SpringBoot的美剧观影网站【2026最新】
  • WebSocket 技术详解:协议原理、握手到生产落地的一站式实践
  • AI——提示词工程认识
  • 探索高效随机地址生成器 AddressGen.top
  • STM32——Uinx时间戳+BKP+RTC实时时钟
  • Ubuntu 操作系统
  • 高速CANFD通讯接口芯片ASM1042性能分析与5Mbps多节点测验
  • 进程管理详解
  • 【ElasticSearch】客户端选择
  • Sigma规则集网络安全应用(Elasticsearch、es日志安全检查、SOC、自定义规则)
  • Linux修改服务器时区
  • S2B2B系统哪个好,商淘云、数商云、金蝶云苍穹供应链批发哪个比较靠谱
  • 模型微调训练中超长文本训练存在的问题
  • 机器视觉学习-day02-灰度化实验
  • 更新依赖失败,报错
  • 赋能增长:商城分销平台的五大核心模式与适用场景
  • 京东招java开发
  • 解决Ubuntu拉取Docker镜像失败问题。