初步认识操作系统(Operator System)

news2024/11/26 7:34:10

操作系统

  • 一,冯诺依曼体系结构
    • 内存的重要作用
  • 二,操作系统的概念
  • 三,设计操作系统的目的
  • 三,操作系统在计算机体系中的定位
  • 四,操作系统是如何进行管理的

一,冯诺依曼体系结构

在这里插入图片描述
在众多计算机相关的书籍中,不得不提的就是冯诺依曼体系结构,冯诺依曼体系结构仍运用在当今的计算机中。
计算机硬件的五大成员:

  • 输入设备
  • 输出设备
  • 存储器
  • 控制器
  • 运算器
    一台计算机要想工作,那么这五部分是不可或缺的,计算机处理的数据都是从输入设备输入,流向存储器,CPU从存储器中读取数据,将处理的结果放回存储器,存储器将处理的结果通过输出设备输出。

内存的重要作用

存储器也就是内存,在其中起到了非常重要的作用,它作为沟通CPU与外设之间的桥梁。(外设指的就是输入设备,输出设备,例如:磁盘,显卡,网卡,键盘,显示器等等。)

由于CPU的运算速度非常快,是一般的外设的很多很多倍,如果外设与CPU直接沟通那么可想而知,外设会大大的拉低了CPU的速度,就如同木桶效应一般,一个木桶能装多少水是由最短的木板决定的。
在这里插入图片描述
内存在CPU与外设之间起到了一个缓冲的作用,内存的速度相比外设是非常快的,与CPU相比还是比较慢的,但是至少比外设快很多。在处理数据时,内存会把外设中的部分数据提前加载到内存中,以供CPU处理。
这里不得不说的就是局部性原理: 根据统计学原理,当一个数据正在被访问时,那么下一次有很大的可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据周围的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接在内存中拿数据。

关于冯诺依曼体系需要强调的几点:

  • 这里的存储器指的是内存
  • 不考虑缓存的情况,这里的CPU能且只能对内存进行读写,不能访问外设
  • 外设要输入或输出数据,也只能写入内存或从内存中读取
  • 总之,所有的设备都只能和内存打交道

现在你应该明白为什么我们编写的可执行程序在运行前要先加载到内存,是因为程序的运行是要通过CPU对其处理,而CPU只会和内存打交道。

二,操作系统的概念

任何的计算机系统都包括一个基本的程序集合,成为操作系统(OS)。

笼统的理解操作系统包括:

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

三,设计操作系统的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户提供一个良好的执行环境

三,操作系统在计算机体系中的定位

操作系统是一款管理软硬件资源的软件

首先,计算机的最底层是一些硬件,它们之间形成冯诺依曼体系结构。
在这里插入图片描述
但是,单单靠他们是完成不了工作的,需要一个软件来管理他们。
例如:我们上述介绍的内存会加载输入设备中的数据,但它是何时加载?又是加载多少的呢?没有东西管理它,他是无法完成工作的,而管理他们的软件就是操作系统(Operator System)。
但是,OS并不是与底层的硬件进行直接交流的,例如,如果操作系统完成键盘的读取操作,那么只要你的键盘读取方式进行了改变,那么操作系统的内核源代码就需要进行重新编译,这对操作系统来说维护的成本太高了。
于是在硬件和操作系统之间增加一层硬件驱动,驱动层的主要工作就是单独去控制底层硬件的。例如:键盘有键盘驱动,显卡有显卡驱动,网卡有网卡驱动,硬盘有硬盘驱动。驱动简单的来说就是去访问某个硬件,访问这个硬件的读,写以及硬件的状态等等,驱动层就是直接和硬件打交道的。而驱动一般是由硬件制造厂商提供的,或是由操作系统相关的模块进行开发的。
此时,操作系统就只需要关心何时去读取数据,而不用关心具体是怎么去读取数据的,这就完成了操作系统与硬件之间的解耦。

在这里插入图片描述
操作系统的主要工作:

  • 进程管理
  • 内存管理
  • 文件管理
  • 驱动管理

在这里插入图片描述
操作系统对下是这样进行管理的,但是对上它又做了些什么呢?
操作系统会直接让用户去操作它去管理硬件嘛?答案肯定是不会的。

操作系统是一个很谨慎的软件,它不会将自己暴露给用户,而是通过系统调用接口的方式对上提供服务,这就和现实生活中银行很像,银行里都会有一大面玻璃墙,还会提供许多服务窗口,银行通过这些窗口对外进行服务。
在这里插入图片描述
银行这样做是因为,它既要对外提供服务,但是也要保护自身的安全,万一哪个去银行办理业务的人是个坏人怎么办。
操作系统也是这样,为了防止别人的破坏,它对外提供服务的方式是暴露在外面一些系统接口
在这里插入图片描述
对与系统接口的使用只有小部分的专业人士才会,所以在系统接口上面还有一层,例如:shell命令行解释器,GUI图形化界面,函数库等,来帮助人们去调用系统接口的程序。

在这里插入图片描述
建立在这样的基础上,用户才可以得心应手的使用计算机,用户是最上面的一层。

在这里插入图片描述
可以看到,计算机的体系实际上一个层状结构。

四,操作系统是如何进行管理的

提到操作系统是如何管理软硬件资源的,先从一个例子入手,校领导是如何管理学生的?

一个大学里面至少有1万名学生,如果校长是去和每个学生直接交流进行管理的,那得管理到猴年马月,这想想就是不现实的。
校长的手里有我们每个人的数据,他是通过我们们数据对我们进行管理的,例如校长有一天找到了计算机学院的导员,告诉他要对学院前几名的学生进行表彰,难道校长会去一个一个看每个人的成绩最后找出来前几名嘛?显然不是,他手里有学生的数据,假如校长是一个懂计算机的校长,他根据学生的共同特征,创建了一个这样的结构体,里面包括姓名,学号,学分,绩点等等,这样每个同学在校长的眼里就是一个个的结构体,有了这么多结构体,怎么去查询成绩前几名的学生呢?答案是将这些结构体组织起来,比如说用链表这个数据结构存储起来,然后通过对链表的遍历找到要表彰的学生。
校长对学生的管理,其实管理的是学生们的数据。学生就好比计算机中的硬件,校长就是操作系统,硬件驱动就是辅导员,校长根本不关心它的命令是如何去实现的,他只关心他的决策是什么,至于如何实施那是辅导员的事情。

操作系统其实就是校长的角色,是一个管理者的角色,他不会直接去和硬件进行交流,而是它的手里掌握的硬件的数据,它通过硬件的数据去管理硬件,至于实施的具体步骤是硬件驱动完成的。
总结为一句话就是:操作系统进行管理是通过先描述再组织进行的,描述就是把每个软硬件描述为一个结构体,再把这些结构体组织起来进行管理的。

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

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

相关文章

linux安装docker和Docker Compose

1、安装环境 此处在Centos7进行安装,可以使用以下命令查看CentOS版本 lsb_release -a 在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上,可以使用以下命令查看 uname -r 2、用yum源安装 2.1 查看是否已安装docker列表 yum list inst…

Doom流量回放工具导致的测试环境服务接口无响应的排查过程

Doom流量回放工具导致的测试环境服务接口无响应的排查过程 现象描述: a)部分接口(A组接口)无响应 b)部分接口(B组接口)正常响应 c)还有一部分接口(C组接口),场景1无响应,场景2正常响…

ChatGPT 桌面应用程序 for macOS, Linux, Windows v0.10

请访问原文链接:https://sysin.org/blog/chatgpt/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org ChatGPT 是什么 ChatGPT 是 OpenAI 公司开发的一种基于对话优化的语言模型。用俗话说就是“人工智障”聊天机器…

三次握手-升级详解-注意问题

TCP建立连接的过程就是三次握手(Three-way Handshake),在建立连接的过程实际上就是客户端和服务端之间总共发送三个数据包。进行三次握手主要是就是为了确认双方都能接收到数据包和发送数据包,而客户端和服务端都会指定自己的初始…

Tomcat构建

软件架构C/S:Client/Server.需要安装才能使用。B/S:Brower/Server。有浏览器就可以。资源分类动态资源:每个用户访问相同的资源后,得到的结果可能不一样,称为动态资源。动态资源被访问后,先转换为静态资源,再被浏览器解…

ESP-IDF: 基于计数型信号量的生产者和消费者模型代码

ESP-IDF: 基于计数型信号量的生产者和消费者模型代码 SemaphoreHandle_t freeBowl NULL;//初始状态有5个空碗 SemaphoreHandle_t Mantou NULL;//初始状态没有馒头,从零开始计数 int queue[5]; //用数组模拟空碗,对数组取余操作,模拟循环链…

如何利用 ESLint 规范 TypeScript 代码

ESLint 是一种 JavaScript linter,可以用来规范 JavaScript 或 TypeScript 代码,本文教你怎么在项目中快速把 ESLint 安排上。 前导 怎么写出优雅的代码是一个老生常谈的话题,这其中包含了太多内容可聊,但搞一套标准规范绝对是万…

opencv锁定鼠标定位

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

【MySQL进阶】 存储引擎 索引

😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…

如何编译和运行C++程序?

C 和C语言类似,也要经过编译和链接后才能运行。在《C语言编译器》专题中我们讲到了 VS、Dev C、VC 6.0、Code::Blocks、C-Free、GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C 程序,步骤是一样的&#…

SpringMvc的请求和响应

SpringMvc的数据响应 1.springmvc的数据相应方式 &#xff08;1&#xff09;页面跳转 直接返回字符串 通过ModelAndView对象返回 &#xff08;2&#xff09;回写数据 直接返回字符串 返回对象或集合 页面跳转 jsp页面 <% page contentType"text/html;charsetUTF-8&q…

ChatGPT的出现,为我们展现出来的是智能社会来临的美好图景

ChatGPT&#xff0c;的确是当下最炙手可热的一个话题。然而&#xff0c;人们对于ChatGPT的认识&#xff0c;依然还是仅仅停留在ChatGPT本身&#xff0c;而没有将它与它的「前任」——元宇宙、web3.0&#xff0c;乃至NFT联系在一起。如果在看待ChatGPT的时候&#xff0c;将它放置…

KDJ日周月金叉共振指标

昨天介绍了MACD多周期共振指标公式&#xff0c;KDJ通过类似的写法&#xff0c;也可以共振。本文介绍的KDJ日周月金叉共振指标包含日周金叉共振、日月金叉共振、周月金叉共振、日周月金叉共振四种类型。 需要注意的问题依然是周、月金叉的信号漂移&#xff0c;接近周末月末的信…

如何用Redis实现延迟队列

背景前段时间有个小项目需要使用延迟任务&#xff0c;谈到延迟任务&#xff0c;我脑子第一时间一闪而过的就是使用消息队列来做&#xff0c;比如RabbitMQ的死信队列又或者RocketMQ的延迟队列&#xff0c;但是奈何这是一个小项目&#xff0c;并没有引入MQ&#xff0c;我也不太想…

企业级信息系统开发学习1.1 初识Spring——采用Spring配置文件管理Bean

文章目录一、Spring容器演示——采用Spring配置文件管理Bean&#xff08;一&#xff09;创建Maven项目&#xff08;二&#xff09;添加Spring依赖&#xff08;三&#xff09;创建杀龙任务类&#xff08;四&#xff09;创建勇敢骑士类&#xff08;五&#xff09;采用传统方式让勇…

IDEA设置方法注释模板

IDEA设置方法注释模板 类注释模板方法注释模板 效果步骤 补充 类注释模板 类注释模板是IDEA创建类时生成的注释&#xff0c;之前发文章跟大家分享过了&#xff0c;而且这也不是本篇文章的重点&#xff0c;文章的链接附在下面&#xff0c;需要的朋友可以去看看。 Intellij ID…

从码农到开发攻城狮,我经历了什么?

对于很多想从事或者刚进入开发岗位的伙伴们来说&#xff0c;对于开发这个职位的了解并不多&#xff0c;甚至已经有些迷茫&#xff0c;感觉总有敲不完的代码和无尽的加班赶项目&#xff0c;一眼望不到头。今天就借用朋友的故事讲述一个普普通通的开发蜕变之路&#xff0c;可能会…

mybatis-plus 源码解析

序 没错&#xff0c;又是需求导致我 需要研究下 mybatis-plus了。。。。 本来我想直接网上百度出来一篇&#xff0c;看看得了&#xff0c;就不自己从头研究了 我都看了一遍&#xff0c;但是很可惜 &#xff0c;没一个能用的。。。。 有一个掘金的写的&#xff0c;我看了下他…

备战蓝桥杯【一维前缀和】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

如何使用Arduino IDE编程ATTINY13/ATTINY13A单片机

尽管ATtiny系列被认为是非常便宜和有用的&#xff0c;但是仍然缺少有关它的项目和教程。在本篇文章中&#xff0c;您将学习如何使用通过Arduino IDE编程的ATtiny13微控制器开始构建应用程序。 首先&#xff0c;ATtiny13是基于AVR增强RISC架构的低功耗CMOS 8位微控制器。通过在一…