冯诺依曼结构和进程概念及其相关的内容的简单介绍

目录

​编辑

冯诺依曼体系结构

操作系统(Operator System)

进程

引入

基本概念

描述进程-PCB

task_ struct内容分类

进程 ID (PID)和查看进程

进程状态:

进程创建:

进程终止:

进程间通信 (IPC):


 

冯诺依曼体系结构

冯诺依曼体系结构是现代计算机的基础架构,它将计算机的主要部分分为以下几个核心组件:

中央处理单元(CPU

  • 算术逻辑单元(ALU):执行计算任务,如加法、减法等运算。

  • 控制单元(CU):负责解读程序指令,并控制各部分执行任务。

存储器内存:存储数据和程序指令,CPU可以从内存中取出数据和指令进行处理。

输入/输出设备(I/O:与外部设备进行数据交换,输入设备将外部数据送入计算机,输出设备将计算结果输出到外部。

总线:连接CPU、内存和I/O设备的通信通道,负责在各个部分之间传输数据。

工作流程:

  • 取指(Fetch):从内存中读取下一条指令。

  • 解码(Decode):控制单元解码指令并确定需要执行的操作。

  • 执行(Execute):通过ALU执行运算或处理数据。

  • 存储(Store):将结果存回内存(如果需要)。

注意:

  • 这里的存储器指的是内存

  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

假设你和你朋友在不同的地区利用qq进行聊天,

在我们的角度上你们各自的电脑分别是两个冯诺依曼结构,我们的网卡使我们电脑连接我们的网络,我们聊天时利用网卡发送消息通过网络,接受信息通过网络。

当我们的数据在计算机内部流转时,本质就是进行拷贝,我们的计算机的效率实际就是拷贝的效率。

为什么要有内存

我们没有内存时:

但是哦你要知道我们的CPU运行是非常的快的,外设是非常的慢的。

如果我们计算机要是想这个样设计的话,那么我们整个计算机的效率就是以我们外设的效率为准(木桶原理)

如果我们增加了内存的话,我们的CPU的效率就不会受我们的外设影响,而是我们的内存和外设进行交流,

那么我们的CPU的效率就和我们的内有关,我们内存的运行速度还是挺快的。虽然达不到我们CPU的速度那么快,但是会比我们的外设快很多。

而我们的内存也不会很贵,价格适中,效率也可以,所以导致我们的计算机的造价没有那么贵,所以我们普通人也可以用得起电脑

操作系统(Operator System)

概念

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

  • 内核(进程管理,内存管理,文件管理,驱动管理)

  • 其他程序(例如函数库,shell程序等等)

设计OS的目的

  • 与硬件交互,管理所有的软硬件资源

  • 为用户程序(应用程序)提供一个良好的执行环境

定位

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

如何理解 "管理"

  • 管理的例子 描述被管理对象

  • 组织被管理对象

我们的操作系统就像我们的管家,不用我们的去概念底层的是如何实现的,只需要你把你要干什么,要什么告诉我们的操作系统,他就会去实行,完成我们的任务。

无论我们上面怎么实现,我们的硬件设备会满足我们的冯诺依曼体系结构,每一种硬件都要有我们自己对应的驱动程序。

为什么要有操作系统

  • 操作系统对下也要进行软硬件资源的管理。稳定的,高效的,安全的,能进行良好的。

  • 操作系统对上要给用户提供一个良好的稳定的,高效的,安全的运行环境。

但是注意我们的操作系统他是不相信我们任何用户的,所以他会将我们的底层封闭起来,就像我们的银行不相信我们的前来银行取钱的人,他不会让你直接去他自己的仓库中拿,而是提供一个个的窗口为我们提供相关服务,我们的操作系统向上也提供了相关接口,方便我们的上层使用。( 李美,也就是我们的系统调用)

进程

引入

在我们现实生活中,我们的校长要管理好学生,不需要直接和我们学生直接见面,所以我们的操作系统在管理我们的底层硬件时也不用直接管理他们。

是如何实现的呢?

管理的本质是对我们的数据进行管理。

在我们的管理者和被管理者之间需要有一个中间角色,它对上采集决策,对下执行决策。

我们的校长去管理学生的数据时,创建一个我们的学生的结构体(struct) ,里面包含我们的学生的一些资料,我们校长对学生的信息进行管理实际上是对我们的结构体进行管理,我们将我们的学生的结构体利用我们的链表将没所有学生的信息串联起来,那么我们去遍历和查找我们的信息,实际上就转换为对链表的增删查改了。

那么我们操作系统是如何管理硬件的呢?我们的硬件虽然不同,但是他们的属性是一样的,只是属性的内容不一样,所以我们的只需要建立一个结构体就行就可以管理我们的硬件,也是我们对链表的管理。

这种方法我们称为先描述在组织。

基本概念

  • 课本概念:程序的一个执行实例,正在执行的程序等

  • 内核观点:担当分配系统资源(CPU时间,内存)的实体。

我们的操作系统在管理我们的进程的时候同一个名为task_struct PCB的结构体来管理我们的进程的属性。task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息

比如我们自己写的代码加载到我们的内存中,我们将它的代码内容加载进去,但是中数据是不利于我们管理的,但是我们的数据执行到哪了,和状态等一列属性是可以的,我们将其组织起来便于管理。

描述进程-PCB

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。 课本上称之为PCB(process control block),Linux操作系统下的PCB是

task_ struct内容分类

  • 标示符: 描述本进程的唯一标示符,用来区别其他进程。

  • 状态: 任务状态,退出代码,退出信号等。

  • 优先级: 相对于其他进程的优先级。

  • 程序计数器: 程序中即将被执行的下一条指令的地址。

  • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

  • 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。

  • I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

  • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。 其他信息

在 Linux 中,进程是操作系统进行资源分配和调度的基本单位。每个进程都有独立的内存空间、文件描述符、环境变量等资源。以下是进程的几个关键点:

进程 ID (PID)和查看进程

每个进程都有一个唯一的进程 ID,用于标识和管理。进程的信息可以通过 /proc 系统文件夹查看

进程状态:

  • 运行 (Running): 进程正在 CPU 上执行。

  • 就绪 (Ready): 进程等待 CPU 调度。

  • 阻塞 (Blocked): 进程等待某些事件(如 I/O 完成)。

  • 僵尸 (Zombie): 进程已终止,但其父进程尚未回收资源。

  • 停止 (Stopped): 进程被信号暂停。

进程创建:

通过 fork() 系统调用创建新进程,新进程是父进程的副本。

#include <stdio.h>
#include <unistd.h> // 包含 fork() 和 getpid() 的声明
#include <sys/types.h> // 包含 pid_t 的定义

int main() {
    // 创建子进程
    pid_t pid = fork();

    if (pid < 0) {
        // fork() 失败
        fprintf(stderr, "Fork failed!\n");
        return 1;
    } else if (pid == 0) {
        // 子进程
        printf("Hello from the child process! (PID: %d)\n", getpid());
    } else {
        // 父进程
        printf("Hello from the parent process! (PID: %d, Child PID: %d)\n", getpid(), pid);
    }

    return 0;
}

进程终止:

进程可通过 exit() 系统调用终止,或由信号强制终止。

进程间通信 (IPC):

进程可以通过管道、消息队列共享内存信号量等方式进行通信。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

松灵机器人 scout ros2 驱动 安装

必须使用 ubuntu22 必须使用 链接的humble版本 #打开can 口 sudo modprobe gs_usbsudo ip link set can0 up type can bitrate 500000sudo ip link set can0 up type can bitrate 500000sudo apt install can-utilscandump can0mkdir -p ~/ros2_ws/srccd ~/ros2_ws/src git cl…

Excel 技巧23 - 在Excel中用切片器做出查询效果(★★★)

本文讲如何在Excel中用切片器做出查询效果。 目录 1&#xff0c;在Excel中用切片器做出查询效果 1-1&#xff0c;Excel 中的切片器是什么&#xff1f; 1-2&#xff0c;用切片器做出查询效果 1&#xff09;&#xff0c;点击任一表格内单元格&#xff0c;按下CtrlA&#xff0…

Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

cmd命令行无法进入D:盘怎么办

我找到了一个方法就是 增加一个/d cd /d d: 如下图,我不仅可以进入d盘符下&#xff0c;还可以访问盘符下的文件夹

万物皆有联系:驼鸟和布什

布什&#xff1f;一块布十块钱吗&#xff1f;不是&#xff0c;大家都知道&#xff0c;美国有两个总统&#xff0c;叫老布什和小布什&#xff0c;因为两个布什总统&#xff08;父子俩&#xff09;&#xff0c;大家就这么叫来着&#xff0c;目的是为了好区分。 布什总统的布什&a…

unity学习24:场景scene相关生成,加载,卸载,加载进度,异步加载场景等

目录 1 场景数量 SceneManager.sceneCount 2 直接代码生成新场景 SceneManager.CreateScene 3 场景的加载 3.1 用代码加载场景&#xff0c;仍然build setting里先加入配置 3.2 卸载场景 SceneManager.UnloadSceneAsync(); 3.3 同步加载场景 SceneManager.LoadScene 3.3.…

在线知识库创建与维护提升企业效率与知识共享能力

内容概要 在当今数字化快速发展的背景下&#xff0c;在线知识库逐渐成为企业管理信息的重要工具。其核心在于将知识进行系统化、结构化的整理和存储&#xff0c;便于员工获取和分享。这不仅提高了信息的访问效率&#xff0c;还促进了团队之间的协作。在线知识库的建立可以有效…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.24 随机宇宙:生成现实世界数据的艺术

1.24 随机宇宙&#xff1a;生成现实世界数据的艺术 目录 #mermaid-svg-vN1An9qZ6t4JUcGa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vN1An9qZ6t4JUcGa .error-icon{fill:#552222;}#mermaid-svg-vN1An9qZ6t4JUc…

DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?

近年来&#xff0c;人工智能&#xff08;AI&#xff09;领域发展迅猛&#xff0c;大语言模型&#xff08;LLMs&#xff09;为通用人工智能&#xff08;AGI&#xff09;的发展开辟了道路。OpenAI 的 o1 模型表现非凡&#xff0c;它引入的创新性推理时缩放技术显著提升了推理能力…

进阶数据结构——高精度运算

目录 前言一、高精度运算的定义与背景二、高精度运算的实现方式三、高精度运算的算法实现四、高精度运算的应用场景五、代码模版&#xff08;c&#xff09;六、经典例题1.[高精度加法](https://www.lanqiao.cn/problems/1516/learning/?page1&first_category_id1&name…

MYSQL--一条SQL执行的流程,分析MYSQL的架构

文章目录 第一步建立连接第二部解析 SQL第三步执行 sql预处理优化阶段执行阶段索引下推 执行一条select 语句中间会发生什么&#xff1f; 这个是对 mysql 架构的深入理解。 select * from product where id 1;对于mysql的架构分层: mysql 架构分成了 Server 层和存储引擎层&a…

【4Day创客实践入门教程】Day2 探秘微控制器——单片机与MicroPython初步

Day2 探秘微控制器——单片机与MicroPython初步 目录 Day2 探秘微控制器——单片机与MicroPython初步MicroPython语言基础开始基础语法注释与输出变量模块与函数 单片机基础后记 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机…

动态规划每日一练(四)

一、day1——最长数对链 题目链接&#xff1a; 646. 最长数对链 - 力扣&#xff08;LeetCode&#xff09;646. 最长数对链 - 给你一个由 n 个数对组成的数对数组 pairs &#xff0c;其中 pairs[i] [lefti, righti] 且 lefti < righti 。现在&#xff0c;我们定义一种 跟随…

事务02之锁机制

锁机制 文章目录 锁机制一&#xff1a;MySQL锁的由来与分类1&#xff1a;锁机制的分类 二&#xff1a;共享锁与排他锁1&#xff1a;共享锁(S锁)2&#xff1a;排他锁(X锁)3&#xff1a;锁的释放 二&#xff1a;表级别锁1&#xff1a;元数据锁(了解)2&#xff1a;意向锁3&#xf…

网络工程师 (8)存储管理

一、页式存储基本原理 &#xff08;一&#xff09;内存划分 页式存储首先将内存物理空间划分成大小相等的存储块&#xff0c;这些块通常被称为“页帧”或“物理页”。每个页帧的大小是固定的&#xff0c;例如常见的页帧大小有4KB、8KB等&#xff0c;这个大小由操作系统决定。同…

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card 论文标题&#xff1a;DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding 论文作者&#xff1a;Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bin…

(动态规划路径基础 最小路径和)leetcode 64

视频教程 1.初始化dp数组&#xff0c;初始化边界 2、从[1行到n-1行][1列到m-1列]依次赋值 #include<vector> #include<algorithm> #include <iostream>using namespace std; int main() {vector<vector<int>> grid { {1,3,1},{1,5,1},{4,2,1}…

cf1000(div.2)

Minimal Coprime最小公倍数 输入&#xff1a; 6 1 2 1 10 49 49 69 420 1 1 9982 44353 输出&#xff1a; 1 9 0 351 1 34371 代码

【单细胞第二节:单细胞示例数据分析-GSE218208】

GSE218208 1.创建Seurat对象 #untar(“GSE218208_RAW.tar”) rm(list ls()) a data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table F) a[1:4,1:4] library(tidyverse) a$alias:gene str_split(a$alias:gene,":",si…

事务04之死锁,锁底层和隔离机制原理

死锁和事务底层原理 文章目录 死锁和事务底层原理一&#xff1a;MySQL中的死锁现象1&#xff1a;何为死锁1.1&#xff1a;死锁的概念1.2&#xff1a;死锁产生的四个必要条件&#xff1a; 2&#xff1a;MySQL的死锁2.1&#xff1a;死锁的触发2.2&#xff1a;MySQL的死锁如何解决…