如何理解操作系统?(Operator System)

news2024/10/6 16:30:16

文章目录

  • 一.什么是操作系统
  • 二.操作系统的层状结构
  • 三.操作系统如何管理

一.什么是操作系统

先入为主,操作系统是一款管理软件

操作系统分为两部分

  • 操作系统本身,主要做一些进程管理、内存管理、文件管理、驱动管理等工作,这种核心部分叫做内核
  • 用户界面,计算机与用户进行交互的方式

二.操作系统的层状结构

在这里插入图片描述

  • 底层硬件是以冯诺依曼的组织结构用总线所连接起来

  • 所有的硬件要与操作系统匹配使用,就需要有对应的驱动程序
    比如说,我们所使用的鼠标,当鼠标插入电脑的时候,可能需要等个一两秒,这个时间段,就是在加载鼠标所需的驱动程序

  • 操作系统在这个中间,起到一个承上启下的作用
    有了操作系统,就能帮助用户管理好下面的软硬件资源,给用户提供一个良好(安全、稳定、高效)的运行环节。

这里的用户,其实并不是指的广大普通用户,普通用户使用的各种软件,并不是真正意义上使用操作系统,这些软件都是程序员开发出来的。所以,要让程序员有一个良好的开发环境,才能在此基础上开发出各种优秀的软件。

  • 不过,操作系统不相信任何用户(包括开发人员),但是为了给用户提供服务,所以以接口的方式给用户提供调用的入口,来获取内部的数据,这种方式就成为系统调用,所有访问操作系统的行为,都只能通过系统调用。

    • 银行信任用户吗?答案是不信任,运送货币时采用武装押运、无死角的监控、保险柜,这些要保证银行的安全
    • 但如果将银行全封闭,那怎么给用户提供存钱、取钱的服务呢?
    • 所以在柜台就开了一个很小的窗口,存取钱的时候通过柜台这个小窗口,来为用户提供服务
    • 对应操作系统也是一样,不信任用户,防止有用户恶意篡改数据,所以不会让用户直接访问里面的数据,但为了不妨碍为用户提供服务,所以提供了一些接口让用户来调用访问,这样既保证了操作系统的安全,也为用户提供了满足需求的服务
  • 系统调用对应用户来说并不是那么容易,于是就有了shell外壳,操作系统提供给用户与操作系统交互的一种命令行接口。它是一个命令解释器,可以解释和执行用户输入的命令,并与操作系统进行通信(可以理解为媒婆)。

除了shell,操作系统还有一些库,这些库就是对系统调用接口进行封装(C标准库、数学库、网咯库),更加方便于用户来调用

三.操作系统如何管理

打个比方:

在一所大学里面,谁是管理者?毫无疑问——校长

那谁是被管理者?学生

但是每次都是校长对接我们学生吗?那可不是,大学四年说不定都见不到校长一两面

那我们连管理者都见不到,我们还能被管理起来,这可以说明管理者和被管理者不一定是需要见面的

那校长是如何不通过见面,还能管理到我们的呢?其实校长只需要拿到我们学生的数据就能知道了,例如学生的成绩、是否违法校纪校规、是否获得表彰什么的,就能了解到学生的各方面,从而对学生进行管理。有时候会组织访谈,坐在会议室里面聊聊天,但这是真正意义上的聊天吗?本质上还是通过聊天获取到数据:最近过的好不好、学习有没有什么困难、有没有什么意见等等,这些都是通过聊天获取到的信息

所以,管理者只要能够将信息管理起来,就能通过这些信息做出决策,从而达到对人的管理

管理者和被管理者不见面,那这么拿到数据呢?这个一般就是通过辅导员来拿到各专业学生的数据

这里的辅导员,属不属于管理者呢?管理者和被管理者的区别就是一个做决策、一个执行决策

而辅导员,只是执行校长的决策,更多做的是执行层面的事情,所以真正意义上并不是管理者

在这个体系中,校长就相当于操作系统、辅导员相当于驱动程序、学生相当于软硬件资源
操作系统通过获硬件的状态数据来进行管理,这些数据由驱动程序来收集,然后再交给操作系统

管理者(决策)——校长————操作系统
执行者——————辅导员———驱动程序
被管理者—————学生————软硬件资源

但是一个大学,学生成千上万,辅导员将数据汇总到校长,面对大量的数据,校长肯定是难以对这些数据进行分析的。

假设校长懂技术,现在就将学生的各项信息描述起来:学院、学号、姓名、性别、专业、成绩等等

struct student
{
	char faculty[];	//	院系
	char stu_num[];	//	学号
	char name[];	//	姓名
	char gender[];	//	性别
	char major[];	//	专业
	char garde[];	//	成绩
	struct sturdent* next;
};

那这样,就得到了一个个描述学生信息的结构体节点,从而得到学生的信息链表,管理好这个链表结构即可。如果要查找成绩最好的,只需要调用配套的统计成绩的方法。这就将学生的管理工作转变成了对链表的增删改查

那对于操作系统也是同理,管理任何软硬件资源对象,最终都可以转换成对某种数据结构的增删查改

校长虽然会处理这些数据,但是他也可以向辅导员发指令,比如说,某个学生违法校规,要开除,那这时候就可以和辅导员说,你哪个学生被开除了,然后再由辅导员去通知这个学生,校长只需要在这个链表中把这个学生的信息删除即可;如果新转来一个学生,辅导员把他的信息统计上来交给校长,然后校长往链表插入这个学生对象即可。

以上这些过程,都是先描述对象,再组织,这贯穿于整个编程过程,C++/Java/Python这些高级语言,都是面向对象编程,要写一个学生信息管理系统,首先肯定是定义出一个类,然后再用某种数据结构将这些对象组织起来,只不过组织这个过程,这些语言大部分已经帮我们完成了,例如C++stl

通过这些再来总结一下:六个字——先描述,在组织

  1. 管理者和被管理者不一定要交互
  2. 要做出管理,只需拿到数据即可
  3. 将数据进行描述,然后再组织起来(数据结构的增删查改)
  4. 操作系统将一个一个的软硬件设备描述起来,每个设备都有对应的结构体,根据其属性采用某种数据结构组织,所以操作系统内注定存在大量的数据结构

本文到此结束,码文不易,还请多多支持哦!!

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

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

相关文章

归并排序递归与非递归

基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序&a…

Jenkins (二)

Jenkins (二) 使用pipeline script 简单编译 发布war工程到远程tomcat中 配置所需 下载 apache-maven-3.9.3.tar.gz 解压 apache-maven-3.9.3-bin.tar.gz 拷贝到 docker jenkins 镜像里 $ docker cp apache-maven-3.9.3 37259c708ca1:/home/下载apache-tomcat-8.5.91.tar.gz …

压测工具之JMeter使用

文章目录 前言压测工具如何使用启动JMeter工具开始创建测试环境1、创建线程组2、配置元件3、构造HTTP请求4、添加HTTP请求头信息 5、添加断言6、添加查看结果树7、添加聚合报告信息8、测试计划创建完成了 执行测试计划 前言 最近公司项目需要进行压测,查验S A A S …

7.18训练总结

考场错误: 今天是一套neerc的题,难度相对较大,我犯的低级错误比较少,但是对于题目顺序的把握能力,应该提高,尝试去做自己擅长的题目,而不是跟着别人的开题顺序,这样能够更顺畅吧。 …

实验室LIMS系统检测工作流程

LIMS系统检测工作流程 检测工作流程是LIMS核心内容,通过检测工作管理可加强协同工作能力、进一步强化质量控制环节、提高数据报出速度,提高工作效率、减低数据出错率,保证质量记录的完整、监控规范的执行;检测流程以样品检测为主…

Jenkins | 获取凭证密码

目录 方法一:查看所有账号及密码 方法二:查看指定账号密码 方法一:查看所有账号及密码 Jenkins > 系统管理 > 脚本命令行 com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach{i…

element-ui message消息提示组件 ①延长提示消息在页面停留时间②提示消息换行

以实现下面的效果为示例 完整代码&#xff1a; let msgList ["数据1被引用", "数据2被引用"];// 使用html的换行标签拼接信息&#xff0c;默认行距太小&#xff0c;此处用两个<br/><br/>let message 以下数据不能删除&#xff0c;原因是&…

【Spring core学习四】Bean作用域和生命周期

目录 一、Bean的作用域 &#x1f308;1、被修改的Bean值现象 &#x1f308;2、 Bean 的 6 种作⽤域 &#x1f308;3、设置作用域 二、Spring的执行流程 三、Bean的生命周期 &#x1f308;1、Bean生命周期的过程 &#x1f308;2、演示生命周期 一、Bean的作用域 &…

[MySql]JDBC编程

JDBC&#xff0c;即Java Database Connectivity&#xff0c;java数据库连接。是一种用于执行SQL语句的Java API&#xff0c;它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成&#xff0c;它为Java开发人员操作数据库提供了一个标准的API&…

全域Serverless化,华为云引领下一代云计算新范式

近日&#xff0c;华为开发者大会2023&#xff08;Cloud&#xff09;在东莞成功举办&#xff0c;期间“全域Serverless化&#xff0c;引领下一代云计算新范式”专题论坛人气满满。华为云首席产品官方国伟携手业界专家、客户、伙伴&#xff0c;面向广大开发者&#xff0c;分享了在…

Authing 身份云上线数据对象管理(元数据),助力企业构建唯一身份源

在身份管理领域&#xff0c;元数据具有重要的作用和价值。元数据有助于理解数据的结构和意义&#xff0c;提升数据处理效率&#xff1b;促进跨部门、跨组织的数据共享和协作&#xff1b;以及支持数据分析&#xff0c;为业务决策提供支持等。当前&#xff0c;Authing 身份云已经…

在ICC/ICC2/FC中运行Calibre

1. which calibre找到calibre的安装目录 > which calibre > /eda/mentor/ixl_cal_version/bin/calibre 2. 在 /eda/mentor/ixl_cal_version目录下使用find ./* -name "icc_calibre.tcl",找到icc_calibre.tcl 3. 打开icc_calibre.tcl里面有不同工具(ICC2/FC/…

《Linux0.11源码解读》理解(五) head之开启分页

先回顾一下地址长度以及组合的演变&#xff1a;16位cpu意味着其数据总线/寄存器也是16位&#xff0c;但是地址总线&#xff08;寻址能力&#xff09;与此无关&#xff0c;可能是20位。可以参考&#xff1a;cpu的位宽、操作系统的位宽和寻址能力的关系_cpu位宽_brahmsjiang的博客…

C++——map和set(multimap和multiset)

目录 1.关联式容器 2.键值对 3.树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2 set的使用 3.2 multiset 3.2.1 multiset的介绍 3.2.2 multiset的使用 3.3 map 3.3.1 map的介绍 3.3.2 map的使用 3.4 multimap 3.4.1 multimap的介绍 3.4.2 multimap的使用 …

抖音小店选品攻略:10个技巧助你选择助轻松学会选品技巧

抖音小店是目前非常火爆的电商平台之一&#xff0c;许多商家都希望能在抖音上开设自己的小店。而在开设抖音小店之前&#xff0c;选品是一个非常重要的环节。下面是不若与众总结的一些抖音小店选品技巧&#xff0c;希望能帮助到你。 1. 确定目标受众&#xff1a;在选品之前&…

数据库应用:MySQL高级语句

目录 一、理论 1.常用查询 2.函数 3.进阶查询 二、实验 1.普通查询 2.函数 3.进阶查询 三、问题 1.MySQL || 运算符不生效 四、总结 一、理论 1.常用查询 常用查询包括&#xff1a;增、删、改、查&#xff1b; 对 MySQL 数据库的查询&#xff0c;除了基本的查询外…

(学习笔记-TCP连接断开)建立了连接,但是客户端或服务端出现问题,会怎么样?

客户端突然出现故障 客户端出现故障指的是客户端的主机发生了宕机或者断电的场景。发生这种情况的时候&#xff0c;如果服务端一直不会发送数据给客户端&#xff0c;那么服务端是永远无法感知到客户端宕机这件事的&#xff0c;也就是服务端的TCP连接将一直处于ESTABLISH 状态&…

两巨头强强联手!美国EB-5投资移民新项目侨外出国首发

7月15日&#xff0c;在侨外出国“见证辉煌历史 重启明日新章”的主题活动中&#xff0c;一个全新乡村EB-5投资移民项目——峰堡长岭天然气开发项目正式扬帆起航。 这一项目&#xff0c;由两大行业巨头——侨外出国和CanAm基金强强联手。众所周知&#xff0c;侨外出国是EB-5投资…

并发编程中常见的锁策略

本文介绍一些常见的锁策略。 锁策略是多线程编程中相对进阶的内容&#xff0c;它不仅仅局限于Java&#xff0c;任何和“锁”相关的话题&#xff0c;都可能会涉及到这些内容&#xff1b;即使是别的语言&#xff0c;只要涉及到“锁”&#xff0c;也都会涉及到锁策略。 锁策略的…

px4上传数据waiting for bootloader

输入make px4_fmu-v6c_default upload&#xff0c;出现waiting for bootloader 原因&#xff0c;可能是启动了QGC占用了端口&#xff0c;把QGC关掉&#xff0c;重新上电&#xff0c;就OK了。