冯诺依曼体系结构与进程概念理解

news2024/12/25 2:10:35

目录

1. 先谈硬件

1、初步理解冯诺依曼体系结构

2、理解各个模块之间的协作

2. 再谈软件

1、为什么要有操作系统

2、操作系统如何管理软硬件资源

3. 再谈进程

1、什么是进程

2、如何理解进程

3、Linux 是如何管理进程的

写在最后:


1. 先谈硬件

1、初步理解冯诺依曼体系结构

我现在认识的计算机,都是由一个个硬件组成的,他们都遵循这这样一个体系:

我们先来慢慢理解一下冯诺依曼体系结构:

1)存储器指的是什么?

存储器指的就是内存,而我们的磁盘之类的硬件是输入输出设备。

2)输入设备:键盘,摄像头,话筒,磁盘,网卡...

3)输出设备:显示器,播放器硬件,磁盘,网卡...

输入输出设备也称之为外部设备,也就是所谓的外设。

4)运算器:对我们输入的数据进行计算任务(算术运算,逻辑运算)

5)控制器:对我们的计算硬件流程进行一定的控制

我们把这两个统称为中央处理器,也就是 CPU 。

而这五大部件都是独立的个体。想要他们系统的工作,

各个硬件单元就必须用 “线” 连接起来,我们称这些线为总线:1. 系统总线,2. IO 总线 。

2、理解各个模块之间的协作

还是这张图:

先说结论:

先从输入设备交到存储器,中央处理器从存储器中拿数据,然后在内部做计算,然后把计算的结果再写回存储器,再将数据刷新到输入设备中。这个是冯诺依曼体系中,数据的流向。

我们来聊一聊存储:

一般来说,存储容量越大,速度就会越慢。正是因为这样,我们这个体系中才需要内存作为缓冲,让速度很慢的外设和速度很快的中央处理器能够通过内存更好的交互数据。

说了这么多模块之间的协作,谁来实现他们的协作呢?操作系统。

2. 再谈软件

我们的电脑里面有着 qq,微信,浏览器等等,计算机怎么知道什么时候使用他们?所以我们就需要一个东西总体上将他们统筹起来。也就是操作系统,

操作系统是一款进行管理的软件,他能对硬件和软件进行管理。

1、为什么要有操作系统

整个计算机是一个层状的结构,来看这样一个图:

从下往上,先是硬件和驱动程序,所有的硬件如果需要被软件使用,都需要配上相应的驱动程序,我们可以把他们理解成直接跟硬件打交道的软件,再往上就是操作系统,而我们之后需要重点学习的就是进程管理和文件管理相关的内容。

回到原来的话题,我们为什么需要有操作系统呢?

1)操作系统帮助用户,管理好这些软硬件资源。(手段)

2)为了给用户提供一个良好(稳定,高效,安全)的运行环境。(目的)

操作系统里面有着各种各样的数据,但是,操作系统不信任所有用户!所以操作系统为了保证自己数据安全,也为了保证给用户提供服务,操作系统就以接口的方式给用户提供了调用的入口,来获取操作系统内部的资源。

那什么是接口呢?Linux 操作系统本质上就是用 C语言 写的,所以所谓的接口其实就是 C语言 实现的自己内部的函数调用,我们称之为系统调用。而,所有访问操作系统的行为,都只能通过系统调用来完成。

所以看回那个图,再往上就是 system call 系统调用接口。

接着就是用户操作接口,有我们熟悉的 shell 外壳,然后是 lib,也就是库,因为系统调用还是比较的复杂,有些语言之类的就会将其封装成库供我们使用。

任何一门语言,如果他们想要直接或间接的使用到硬件,就必须经过操作系统,而经过操作系统就必须要使用系统调用接口。

那么如上就是计算机的整体层状结构了。

2、操作系统如何管理软硬件资源

我们先来理解一下什么是管理:

1)管理者和被管理者是不需要见面的(就像在学校,我们作为学生一般也不会和校长见面,在公司,我们一般也不会和老板一直见面(小公司当我没说))

2)管理者在见不到被管理者的情况下如何做好管理呢?核心在于管理信息,只要管理者得到管理信息,就能在未来进行管理决策 —— 管理的本质是通过对 ‘数据’ 的管理,达到对人的管理。

3)管理者和被管理者面都不见,该怎么拿到对应的数据呢?(先补充一个概念:什么是管理者?我们一般将世界上所有的事情分成两种,一种是决策,一种是执行,举个例子:今晚吃什么?吃面吧。这是决策;我现在去煮面。这是执行。做决策其实就是管理者,做执行的就是被管理者。不过在我们日常生活里,决策和执行基本都是一体的。)管理者需要通过执行者拿到对应的数据。

所以!

操作系统在进行管理的时候,需要见到软硬件吗?不需要,那操作系统该怎么拿到他们的状态数据呢?以硬件为例,操作系统就是通过驱动程序获取数据。

操作系统管理任何东西,都一定是遵循着 “先描述,再组织” 的策略,使用结构体对一个对象进行描述,然后将它用一个数据结构组织起来,这样就能达到一种状态:在操作系统中,管理任何对象,最终都可以转化成为对某种数据结构的增删查改。

结论:操作系统如何管理?

先描述,再组织。

3. 再谈进程

1、什么是进程

一个已经加载到内存中的程序,叫做进程。

我们到 Linux 下写一个进程瞧一瞧:

我们简单写一个程序,然后跑起来:

 

然后我们复制一个 SSH 渠道,然后查看一下进程:

ps axj | head -1 && ps axj | grep process

所以其实,正在运行的程序,就叫做进程。        

2、如何理解进程

一个操作系统,不仅仅只能运行一个进程,可以同时运行多个进程。

操作系统必须把进程管理起来,那该如何管理进程呢?先描述,再组织。

任何一个进程,在加载到内存的时候,在形成真正的进程时,操作系统需要先创建用于描述进程的结构体对象 —— PCB,process ctrl block —— 进程控制块。

问题来了,该这么描述进程呢?用各种属性的集合来描述一个东西。所以所谓的 PCB 其实就是进程属性的集合。所以 PCB 就是一个结构体:

struct PCB {

        进程的编号,

        进程的状态,

        进程的优先级,

        ... ... 

}

系统会根据进程的 PCB 类型,为该进程创建对应的 PCB 对象。

那么什么是进程,进程就是 PCB 吗?并不是,进程其实是:

进程 = 内核 PCB 数据结构对象 + 对应程序的代码和数据

而进程的 PCB ,当然就包含描述进程的所有属性。那这样子,操作系统进行管理的就不是你的代码和数据,他只需要管理这个进程 PCB 即可。这样子,操作系统对进程的所有管理操作就都变成了对 PCB 这样一个数据结构的增删查改。

3、Linux 是如何管理进程的

前面我们理解了进程是什么样的,那 Linux 操作系统具体又是如何组织管理进程的呢?

Linux 操作系统下的 PCB 是:task_struct(进程其实也有人称其为任务),在 Linux 内核中采取的是基本的双链表的形式来组织进程 task_struct 。 

至于 task_struct 究竟是什么样的,那就,欲知后事如何,且听下回分解~

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

亚马逊对AIGC的定义

大家好,这里是Doker,最近AIGC非常火,这里我们聊一下什么是AIGC. 一、 AIGC 介绍与典型行业应用场景 ​AIGC 又称生成式 AI (Generative AI),是继专业生产内容(PGC, Professional-generated Content)、用户…

谁知道,多项目管理的进度管理应该如何进行?

大家好,我是老原。多项目管理的进度管理应该如何进行? 我们应该拆分开来看:一手应对多项目管理,一手把握进度管控。 这个和一个人同时需要处理/负责多个项目线程,道理上是通用的。 今天还是会一如即往的在文章里给大…

7.5 批量规范化详解

BatchNorm(归一化/标准化) 归一化/标准化实质是一种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反而能提高数据的表现,这些性质是归一化/标准化的前提。比如有一个很重要的性质:…

webshell免杀项目-webshell(七)

免杀webshell生成工具 项目地址: https://github.com/pureqh/webshell 快速使用 下载该项目后直接用python3运行相关py脚本即可生成免杀代码

如何剪裁操作系统源码——移植FreeRTOS的内存管理模块到ARMV8裸片

如何剪裁操作系统源码 本文面向的需求场景是,为缺乏标准库实现的处理器IP移植内存管理模块,即为裸片部署C标准库中的 malloc() 和 free() 函数。 具体做法是——从操作系统的内存管理组件中剪裁出必要的源码,适配到目标处理器的开发环境&am…

苹果电脑图像元数据编辑器:MetaImage for Mac

MetaImage for Mac是一款功能强大的照片元数据编辑器,它可以帮助用户编辑并管理照片的元数据信息,包括基本信息和扩展信息。用户可以根据需要进行批量处理,方便快捷地管理大量照片。 MetaImage for Mac还提供了多种导入和导出格式&#xff0…

Mysql下载及其安装的详细步骤

1.下载压缩包 官网地址:www.mysql.com 2.环境配置 1.先解压压缩包 2.配置环境变量 添加环境变量:我的电脑--->属性-->高级-->环境变量-->系统变量-->path 3.在mysql安装目录下新建my.ini文件并,编辑my.ini文件 编辑内容如…

最强chatgpt写论文,开源人人可用

大语言模型发展日新月异,有了LLM加持,GPT Researcher已经能帮你写论文了。 GPT Researcher 是一个自主代理程序,旨在进行多种任务的全面在线研究。 该代理能够生成详细、事实性和公正的研究报告,并提供个性化选项,以便…

“黑化”的AI | 盘点十大新型 AI 网络攻击类型

如今,人工智能技术的迅猛发展给各个领域都带来了前所未有的变革和进步。其中当属2023年上半年的“顶流选手”——生成式AI和ChatGPT了。 ChatGPT的火爆出圈,让人们看到了AI惊艳表现的光彩一面,但同时黑暗的一面也正在暗自发力,野…

windows11无故自动重启故障排查

引言 目前使用的windows 11版本是 Windows11家庭中文版 22H2,由于电脑放在工位需要跑模型,所以默认是长开的状态。但是最近来到工位总是发现电脑莫名其妙的自动重启。一开始以为是实验室断电的缘故,后来发现周围人的电脑都是正常运行状态&…

菲律宾的区块链和NFT市场调研

菲律宾的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/wiki/%E8%8F%B2%E5%BE%8B%E5%AE%BE zheng治制度:Zongtong议会制 现任Zongtong: 小费迪南德马科斯, 是独裁者费迪南德马科斯之子,人称“小马科斯” 官方语言…

【数据结构与算法】Vue3实现选择排序动画效果与原理拆解

系列文章目录 删除有序数组中的重复项 JavaScript实现选择排序 文章目录 系列文章目录1、选择排序的原理1.1、选择排序的基本步骤1.2、拆解思路 2、动画演示原理3、代码实现4、优化后的选择排序5、用Vue3实现选择排序的动画效果(第二部分的动画效果图) …

CS 144 Lab Six -- building an IP router

CS 144 Lab Six -- building an IP router 引言路由器的实现测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Six 对应的PDF: Lab Checkpoint 5: building an IP router 引言 在本实验中,你将在现有的NetworkInterface基础上实现一个IP路由器&#xf…

整数线性规划——pulp指南

整数线性规划——pulp指南 PuLP是一个用Python编写的线性规划建模工具。PuLP可以生成MPS或LP文件,并调用GLPK、COIN-OR CLP/CBC、CPLEX、GUROBI、MOSEK、XPRESS、CHOCO、MIPCL、HiGHS、SCIP/FSCIP等求解线性问题。 官方文档地址:https://coin-or.githu…

【ROS】message_filters时间同步

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍message_filters时间同步。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷…

接口mock常用工具

在进行测试时,我们经常需要模拟接口数据,尤其是在前后端分离项目的开发中,在后端未完成开发时,前端拿不到后端的数据,就需要对后端返回的数据进行模拟。 如下一些工具,可以完成接口的mock。 Yapi 首先添…

算法通关村——轻松搞定两树相等问题

题目 给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为他们是相同的。 示例 输入:p[1,2,3] q[1,2,3] 输出:true 如下图所示: 输入&am…

制造执行系统(MES):优化生产管理的关键

制造业是现代经济的重要组成部分,随着技术的发展和市场需求的变化,制造企业面临着越来越大的挑战。为了在竞争激烈的市场中保持竞争力,企业需要实现生产过程的高效管理和优化。这就引入了制造执行系统(MES)&#xff0c…

【Spring Boot】了解Spring Boot 的日志文件

目录 一、日志的作用 二、日志文件的简单使用 1、Spring Boot中的默认日志 2、自定义日志打印 三、日志级别 1、日志级别分类 2、日志级别的设置 3、日志持久化 四、基于LomBok的日志输出 1、安装Lombok插件 2、使用Lombok添加日志 3、使用Lombok添加getter和setter…

第48节:cesium 面交集计算(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><vc-navigation