冯诺依曼结构和操作系统的理解

news2024/11/24 17:21:22

在正式讲解进程之前,需要先铺垫一些基本知识. 

目录

冯诺依曼结构

操作系统


冯诺依曼结构

这个名词相信大家非常熟悉,我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

这张图:

 到现在,我们所知道的计算机,都是由一个个硬件组成的.

输入单元:包括键盘, 鼠标,摄像头,网卡,写字板等

存储器:内存
中央处理器(CPU):
含有运算器控制器

(运算器:算术运算(1+1=2),逻辑运算(if语句...)

控制器:CPU可以相应外部事件,协调外部事件就绪,比如拷贝数据到内存)
输出单元:
显示器,音响,网卡,打印机等

根据图我们还知道:

CPU读取数据(数据+代码) 都是要从内存中读取。站在数据的角度,我们认为CPU不直接和外设交互.
CPU处理数据,必须先将外设的数据加载到内存。站在数据的角度我们认为外设也只直接和内存交互.

总结:所有设备都只能和内存打交道。

所以这个时候相信大家都能理解为什么程序要运行,必须要先加载到内存里.

因为CPU只能直接和内存交互.

我们不仅要了解这张图,更要了解实际过程中是数据如何流向的.

请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗口,开始给他发消息,到他收到消息之后的数据流动过程。

 它们也是严格遵守冯诺依曼结构的.

如果改成发文件呢?

无非是自己这端 输入设备从键盘变成了磁盘,对端的最后 输出设备从显示器变成了磁盘.

操作系统

以上都是从硬件结构讲解的,那么现在该说说软件了.

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

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

 这是一个计算机大致组成,可以看到,

操作系统被设计的目的:

与硬件交互,管理所有的软硬件资源.
为用户 程序(应用程序)提供一个良好的执行环境.

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

如何理解"管理"呢?

在大学,我们知道有校长,辅导员与学生之分。我们从管理角度来说,校长就是管理者,我们学生就是被管理者,如果我们挂的科目很多,校长不需要和我们见面,直接看着数据便可以对我们进行决策处置。这说明:拿到被管理者的核心数据,来进行支持管理决策才是最重要的. 当然虽然可以对我们进行决策处置,但总要有一个执行者,来执行校长的命令,那这就是辅导员,充当一个执行者的身份.

对比操作系统中,操作系统就是校长,驱动程序就是辅导员,那些底层硬件就是学生.

总的来说,管理是对被管理数据对象数据的管理.

 

但是如果有很多学生,数据非常多而乱,就算只拿到数据想处理好也不太实际,所以我们可以把它组织起来.

我们可以单独对每个学生定义一个结构体,存放该学生的相关信息。然后假设有5000名学生,实则开一个大小为5000的结构体数组即可.        

然后假设此时想开除3个分数最低的学生,那我们需要找出这个3个分数最低的学生,然后我们设计一个排序算法,找出来之后,然后让它离校就可以了吗?

我们还需要把这3名学生的数据删除,数据库里没这3名学生的信息了,然后辅导员让其离校,这样就算成功开除了.

总结下来:先对被管理对象进行描述,再根据描述类型,定义对象,把对象组织称数组----------------->对学生的管理工作,变成了对数组的增删查改!

对学生做管理,抽象成对数据做管理,但数据量大需要组织起来,又回到了我们刚才所讲的先描述,再组织

描述每个学生.

再组织起来 

 

记住这六字真言!这就是我们管理的核心思路.

我们这样就理解大致的概念.

下面接着以银行管理为例子,进行深入理解操作系统上层和下层.

比如银行中会有一些基础设施,例如桌椅,宿舍,电脑设备等等,然后每个设施会有一个专门的人员来管理它,这些人又受行长管理。比如某个桌子坏了,那个对应负责人便可以报告行长,行长便可以根据这些数据决定是否购买新桌子.

行长便可以类比于这个操作系统.这个和刚才上面说的类型.

 但是我们发现银行很多都是柜台操作的,是封装好的,不能直接让客户直接使用银行里的电脑.而是通过专员操作.所以我们是不能直接把内部暴露给客户的.

上面的专员相当于操作系统向上的提供的系统接口.

 

 由于LINUX是用C语言写的,所以这些系统接口相当于就是C语言提供的函数

还是拿银行为例,这个时候来了一个不识字的人,来到柜台前,由于柜台人员说什么都听不懂意思,所以这个时候变设立了一个服务层,只要你把资料都给我,我就可以帮你把这些事情办了.

这个服务层便相当于是操作系统中的用户接口:例如我们的图形化界面,以及shell外壳,第三方库等等,这些都是更近一步方便我们用户操作的,现在相信很多人都不会用晦涩难懂的系统接口吧.

说到这,其实可以无限套壳,总之肯定越套,会让人使用的更加方便. 

也就是说:

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

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

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

相关文章

Tomcat工作原理

一、Tomcat架构 ### 说明: Server:表示整个 Tomcat Catalina servlet 容器,Server 中可以有多个 Service。(可以通过telenet 8005后连接后输入“SHUTDOWN” 注意这里是大写,来关闭服务)Service&#xff1…

宠物用品小程序怎么做

宠物用品小程序功能介绍: 1. 商品管理: 宠物用品小程序提供了商品管理功能,商家可以方便地添加、编辑和删除商品信息。用户可以浏览并选择合适的宠物用品,如食品、玩具、服饰等。 2. 订单管理: 用户可以在宠物用品…

区块链服务网络BSN季度版本迭代说明【2023年Q2】

根据区块链服务网络发展联盟计划安排,BSN将每周进行一个小的版本迭代,每季度进行一个大的版本迭代,目前区块链服务网络(BSN)已完成最新季度版本迭代。 我们将按照BSN官方专网(国内版和国际版)、…

手把手教你从零开始集成声网音视频功能(iOS版)

说明 1.环信音视频和声网音视频 是两个不同的系统,所以如果要切换的话,需要集成声网的sdk,环信音视频的sdk可以直接废弃 2.文章会介绍如何用声网的音视频跑通demo,可以了解整个音视频通话的流程, 3.文章会介绍已经集…

小心 MybatisPlus 的一个坑

小心 MybatisPlus 的一个坑 昨天测试说有个 xx 功能用不了,扔给我一个截图,说有报错: 报错信息就是:Transaction rolled back because it has been marked as rollback-only,很好理解:事务被回滚了&#x…

【Qt QML入门】Text

Text组件在场景中添加格式化文本, 提供的是只读文本。文本项可以显示纯文本和富文本。Text {id: txttext: "Hello World!"font.family: "Helvetica"font.pointSize: 24color: "red" } 也可以支持部分Html格式标签 Text {id: txt1font.pointSize…

python_day6_异常与包机制

异常 try:可能出现异常的代码 except:若出现异常执行的代码 try:f open("D:/linux.txt", "r", encoding"utf-8")f.readlines() except:print("出现异常了,文件不存在,更换模式w")# f open("D:/linux.txt…

欧姆龙以太网口怎么和电脑连接

捷米特JM-ETH-CP以太网通讯处理器用于欧姆龙 CP1L/ CP1E/ CP1H 系列 PLC 的以太网数据采集,捷米特JM-ETH-CP以太网模块不占用 PLC 通讯口,即编程软件/上位机软件通过以太网对 PLC 数据监控的同时,触摸屏可以通过复用接口与 PLC 进行通讯。支持…

【国密】SM3密码杂凑算法(附源码分析)

一、前言 SM3 算法是中国国家密码管理局于 2010 年发布的一种密码杂凑算法,广泛地应用于数据的完整性校验、数字签名、消息认证码、密钥交换和数据加密等。密码杂凑算法需要满足三种基本属性:抗原像攻击、抗第二原像攻击、抗碰撞攻击,这三种…

【动手学习深度学习--逐行代码解析合集】14多输入多输出通道

【动手学习深度学习】逐行代码解析合集 14多输入多输出通道 视频链接:动手学习深度学习–多输入多输出通道 课程主页:https://courses.d2l.ai/zh-v2/ 教材:https://zh-v2.d2l.ai/ 1、多输入通道 import torch from d2l import torch as d2l …

[C语言][小游戏][猜拳游戏]

C语言的奇妙旅行 一、模块化编程二、游戏基本设计2.1 确定计算机要出的手势2.2 显示“石头剪刀布”,然后玩家输入自己要出的手势2.3进行输赢判断,显示结果2.4询问是否继续2.5 基本程序 三、游戏实现的过程3.1将玩家的手势和电脑的手势显示出来 三、总代码…

复习java基础

复习一天有点忘了的知识: 结构化编程 结构化程式设计(英语:Structured programming)是1960年代开始发展起来的一种编程典范。它采用子程序、程式码区块、for循环以及while循环等结构来取代传统的goto。 指导思想 自顶向下、逐步求精、模块化 编程过程 流程图是…

CVPR 2023 | OVSeg: Open-Vocabulary Semantic Segmentation with Mask-adapted CLIP

CVPR 2023 | OVSeg: Open-Vocabulary Semantic Segmentation with Mask-adapted CLIP 论文:https://arxiv.org/abs/2210.04150代码:https://github.com/facebookresearch/ov-seg 架构设计 类别无关的 mask proposal generator:MaskFormer手动…

linux端口被占用 关闭端口

1.查看端口是否被占用 netstat -anp |grep [端口号]2.查看占用的进程 lsof -i:[端口号]3.关闭进程 kill -9 [进程PID]LISTEN 表示被占用,3061/java 分别是:进程PID/进程 通过进程PID关闭进程

桥接模式:解耦抽象与实现

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。本文将深入探讨桥接模式的原理、结构和使用方法,并通过详细的 Java 示例代码来说明。 1. 桥接模式的定义 桥接模式是一种将抽象部分与实现部分分离的设计模…

数字信号处理复习知识点

目录 第一章:时域离散系统 1.什么是因果性和稳定性 2.模拟频率,模拟角频率, 数字频率之间的关系 3.什么是频谱混叠? 第二章:时域离散信号和系统的频域分析 1.时域离散信号傅立叶变换的定义 2.如何用模拟信号的傅立…

电信青年员工踏上三千里数字化追梦之旅,数字员工为电信高质量发展注智赋能

导语: 近年来,广西电信紧紧围绕集团战略,聚焦产业数字化发展机遇,加强前瞻性技术研究和人工智能产业应用研究,为夯实高质量发展增添科技动力。 在数字中国建设的大背景下,广西电信全资子公司广西壮族自治区…

推荐一款适合前端宝宝体质的数据库文档工具

先看效果 首页 安心食用 npx dbshowlatest按照提示输入相关信息 Welcome to the DB Show! v0.0.7? Use config from local? no ? Select a database type MySQL ? Enter the host name localhost ? Enter the port number 3306 ? Enter the user name root ? Ente…

Linux slab 分配器源码解析

文章目录 前言一、slab分配器1.1 简介1.2 高速缓存描述符1.3 架构图 二、相关结构体2.1 struct array_cache2.2 struct kmem_list32.3 struct slab2.3.1 简介2.3.2 OFF_SLAB 三、创建和释放slab3.1 创建slab3.1.1 kmem_getpages3.1.2 alloc_slabmgmt3.1.3 slab_map_pages 3.2 释…

常用数据分类算法原理介绍、优缺点分析与代码实现[LR/RF/DT/SVM/NavieBayes/GBDT/XGBoost/DNN/LightGBM等]

本文的主要目的是总结记录日常学习工作中常用到的一些数据分类算法,对其原理简单总结记录,同时分析对应的优缺点,以后需要的时候可以直接翻看,避免每次都要查询浪费时间,欢迎补充。 机器学习领域中常用的分类模型包括以…