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

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

操作系统

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

一,冯诺依曼体系结构

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

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

内存的重要作用

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

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

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

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

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

二,操作系统的概念

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

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

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

三,设计操作系统的目的

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章:

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

操作系统一,冯诺依曼体系结构内存的重要作用二,操作系统的概念三,设计操作系统的目的三,操作系统在计算机体系中的定位四,操作系统是如何进行管理的一,冯诺依曼体系结构 在众多计算机相关的书籍中&#xff…...

Android—HTTPS部署自签名证书

一、生成自签名私有证书单向认证(只需要服务端证书) 生成server_ks.jks服务端密钥配置到服务端生成server.cer服务端证书配置到客户端 双向认证(还需要客户端证书,和信任证书) 生成client_ks.jks客户端密钥配置到客户…...

java基于springboot+vue微信小程序的学生健康管理

任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于Java语言、微信小程序技术设计并实现了学生健康管理小程序。系统主要包括系统首页、个人中心、学生管理、健康档案管理、体检报告管理、健康评估管…...

金三银四丨黑蛋老师带你剖析-漏洞岗

作者丨黑蛋病毒岗之前我们简单看了看二进制逆向岗位和漏洞岗,今天我们来看一看病毒岗位,就单纯看二进制病毒岗位和漏洞岗位,其所需要的基础知识是差不多的,在Windows平台上,无非就是汇编,C语言,…...

pinia实战 购物车(自定义插件实现pinia持久化)

目录 一、实例 二、需求 三. 代码解析 shop.vue shop.ts 四、持久化插件 插件介绍 持久化实现思路 一、实例 二、需求 单选全选功能,并且可以互相联动 小计功能 总计功能 商品加减,数量为零时不能在减 三. 代码解析 shop.vue 1.获取shop模块实…...

idea使用本地代码远程调试线上运行代码---linux环境

场景: 之前介绍过windows环境上,用idea进行远程调试那么在linux环境下实战一下 环境: linux 测试应用:使用docker部署的platform-multiappcenter-base-app-1.0.0-SNAPSHOT.jar 应用 测试应用端口:19001 测试工具&…...

Java 基础面试题——集合

目录1.Java 有哪些常用容器(集合)?2.Collection 和 Collections 有什么区别?3.List、Set、Map 之间的区别是什么?4.HashMap 的长度为什么是 2 的 N 次方?源码中是如何保证的?5.HashMap 和 Hasht…...

编程思想、方法论和架构模式的应用

概要编程思想是指在编写代码时所采用的基本思维方式和方法论。分类编程思想分类:面向对象编程(Object-Oriented Programming,简称OOP):把数据和对数据的操作封装在一起,通过类和对象的概念实现模块化、可重…...

Vue|事件处理

事件处理1. 事件使用1.1 事件绑定1.2 事件参数2. 事件修饰符2.1 阻止默认事件2.2 阻止事件冒泡2.3 事件只允许触发一次2.4 事件捕获2.5 操作当前元素2.6 行为立即执行无需等待回调3. 键盘事件4. 本章小结4.1 事件使用小结4.2 事件修饰符小结4.3 键盘事件小结1. 事件使用 1.1 事…...

css书写方式

目录标题一、css是什么?二、css的书写方式1、行内样式【不推荐使用,太固定】2、页面样式(又叫内联样式)3、外联样式【店家推荐】4、import与link标签的区别一、css是什么? css(cascade style sheet)是用来装饰和装扮页…...

Python网络爬虫 学习笔记(2)BeaufitulSoup库

文章目录BeautifulSoup库的基本介绍HTML标签的获取和相关属性HTML文档的遍历prettify()方法使用BeautifulSoup库对HTML文件进行内容查找信息的标记的相关概念(非重点)find_all()方法(重点)综合实例:爬取软科2022中国大…...

JavaScript------内建对象

一、解构赋值 1、数组的解构 1.1、解构赋值 const arr ["孙悟空", "猪八戒", "沙和尚"];let a, b, c;[a, b, c] arr; // 等同于 [a, b, c] ["孙悟空", "猪八戒", "沙和尚"] 1.2、声明同时解构 let [d, e…...

React + Redux 处理异步请求

redux 处理异步请求 方式一:在 componentDidmount 中直接进⾏请求,在将数据同步到 redux 创建 Store 仓库 import {createStore } from redux;const defaultState = {banners: [] }const reducer =...

揭秘涨薪50%经验:从功能测试到自动化测试,我是如何蜕变的?

本人在今年互联网大环境如此严峻的情况下,作为一个刚毕业不到一年的初级测试,赶在“金三银四”依然拿到了一些面试机会,并且成功拿下4家公司的offer,其中不乏互联网大厂,而且最高总包给到了接近double(无炫…...

【论文速递】MMM2020 - 电子科技大学提出一种新颖的局部变换模块提升小样本分割泛化性能

【论文速递】MMM2020 - 电子科技大学提出一种新颖的局部变换模块提升小样本分割泛化性能 【论文原文】:A New Local Transformation Module for Few-shot Segmentation 【作者信息】:Yuwei Yang, Fanman Meng, Hongliang Li, Qingbo Wu,Xiaolong Xu an…...

补充前端面试题(二)

#$set数据变化视图不更新问题, 当在项目中直接设置数组的某一项的值,或者直接设置对象的某个属性值,这个时候,你会发现页面并没有更新。这是因为 Object.defineProperty()限制,监听不到变化。解决方式:this.$set(你要改…...

JavaScript原型、原型链、原型方法

文章目录原型和原型链prototype、 __ proto __ 、constructor原型链原型方法instanceOfhasOwnPropertyObject.create()、new Object()总结原型和原型链 prototype、 __ proto __ 、constructor 首先我们看下面一段代码 // 构造函数Personfunction Person(name, age) {this.na…...

linux篇【14】:网络https协议

目录 一.HTTPS介绍 1.HTTPS 定义 2.HTTP与HTTPS (1)端口不同,是两套服务 (2)HTTP效率更高,HTTPS更安全 3.加密,解密,密钥 概念 4.为什么要加密? 5.常见的加密方式…...

1.9实验9:配置虚链路

1.4.4实验9:配置虚链路 实验目的(1) 实现OSPF 虚链路的配置 (2) 描述虚链路的作用 实验拓扑配置虚链路实验拓扑如图1-19所示。[1] 图1-19 配置虚链路 实验步骤...

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

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

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

Linux-进程间的通信

1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...