【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解

2024-02-23 18:12

本文主要是介绍【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


📙 作者简介 :RO-BERRY
📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持


目录

  • 1.冯·诺依曼体系结构
    • 特点
    • 组成剖析
    • 为什么要有内存?
  • 2.操作系统
    • 为什么要有操作系统?


1.冯·诺依曼体系结构

冯·诺依曼体系结构,也被称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。在这种结构中,程序指令和数据在内存中是没有区别的,它们都是内存中的数据。当EIP指针指向哪CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断。在现在CPU的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行)。这就变相的指定了哪些内存中存储的是指令哪些是数据。指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。

特点

冯·诺依曼体系结构还包括以下特点:

  1. 存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。
  2. 指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。
  3. 通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。
  4. 以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。
  5. 数据以二进制表示。冯·诺依曼提出的计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

组成剖析

在这里插入图片描述

cpu:运算器&&控制器
输入设备:话筒、摄像头、键盘、鼠标、磁盘等
输出设备:声卡、显卡网卡、磁盘、显示器、打印机等
存储器:内存—掉电易失

手机制造商们把CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上,即SoC,System on a Chip(系统芯片)。但无论是PC/服务器/手机都遵循冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机,意味着“可编程”、“存储”计算机。

计算机由各种门电路组成完成计算程序。一旦需要修改功能,就要重新组装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。最常见的就是老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。

再看“存储”计算机。程序存储在计算机内存,可通过加载不同程序解决不同问题。

不能存储程序的计算机
早年“Plugboard”这种插线板计算机,在板子上不同的插头或者接口的位置插入线路实现不同功能。这样的计算机“可编程”,但编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的“程序”的时候,重新插板子,重新“编程”。

为了效率,有了“存储程序计算机”。冯基于在秘密开发的EDVAC写了一篇报告First Draft of a Report on the EDVAC,描述了一台计算机什么样。

  1. 包含处理器单元(Processing Unit):

算术逻辑单元(Arithmetic Logic Unit,ALU)
处理器寄存器(Processor Register)
完成各种算术和逻辑运算。

因为它能够完成各种数据的处理或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器。

  1. 包含控制器单元(Control Unit/CU):

指令寄存器(Instruction Reigster)
程序计数器(Program Counter)
控制程序的流程,通常就是不同条件下的分支和跳转。
算术逻辑单元和控制器单元组成CPU。

关于冯诺依曼,必须强调几点:

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

为什么要有内存?

内存,也称为内存储器,是计算机系统中用于暂时存放CPU中的运算数据以及与硬盘等外部存储器交换的数据的硬件组件。内存的存在主要有以下几个原因:

  1. 速度匹配:CPU的速度非常快,通常以GHz为单位,而硬盘的传输速度相对较慢,通常不到200MB/s。内存的速度介于CPU缓存和硬盘之间,能够快速地与CPU交换数据,从而提高系统的整体性能。
  2. 容量扩展:CPU的缓存空间有限,无法存储大量的数据。内存提供了更大的存储容量,使得操作系统和应用程序能够临时存储更多的数据,以便快速地与CPU交换,从而提高系统的运行效率。
  3. 数据管理:内存中存储的数据包括程序的全局变量、局部变量等,这些数据对程序的运行至关重要。内存管理是编程中的一个重要话题,它涉及到数据的组织、存储和处理,对于程序的正确运行至关重要。
  4. 系统稳定性:内存的运行也决定了计算机的稳定运行。如果内存不足,CPU需要从硬盘中读取数据,这会导致系统卡顿,甚至可能出现黑屏或游戏跳出的情况。
    综上所述,内存的存在是为了解决CPU与外部存储器之间速度和容量的矛盾,提高系统的运行效率和稳定性。

2.操作系统

计算机是一台机器,它按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频等)。计算机由硬件和软件组成:

硬件是计算机赖以工作的实体,包括显示器、键盘、鼠标、硬盘、CPU、主板等;
软件会按照用户的要求协调整台计算机的工作,比如 Windows、Linux、Mac OS、Android 等操作系统,以及 Office、QQ、迅雷、微信等应用程序。

操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。

操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:

  1. 文件系统
    提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。
  2. 设备驱动程序
    提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。简单来说,就是让你能吃到鸡蛋,但不用养一只鸡。
  3. 用户接口
    操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的 Android 或 iOS 系统,也是一种操作系统的交互方式。
  4. 系统服务程序
    当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。

打个比方,操作系统就好像是一个政府,其它软件都会被它管控;操作系统在给其他软件提供各种便利的同时,还会约束其他软件不能为所欲为。
目前流行的服务器和 PC 端操作系统有 Linux、Windows、UNIX 等,手机操作系统有 Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有 Windows CE、PalmOS、eCos、uClinux 等。

我们宏观地看待从用户到底层硬件的交互如下图
在这里插入图片描述

为什么要有操作系统?

操作系统在计算机系统中扮演着至关重要的角色。它不仅管理着计算机硬件资源的分配和调度,而且为上层应用软件提供了方便的接口,确保了计算机系统的安全和稳定。具体来说:

  1. 资源管理:操作系统负责协调计算机的各个资源,确保程序能够有效地使用硬件资源,同时避免资源冲突和资源浪费。
  2. 接口提供:操作系统提供了一系列的底层接口和上层标准,使得不同硬件平台上的软件能够互通,减少了软件开发者的工作量,因为它们只需关注操作系统的标准接口。
  3. 硬件封装:操作系统向下封装了硬件的细节,向上提供给用户和应用程序一个简洁、易于使用的接口,使得用户和应用程序员无需了解复杂的硬件细节。
  4. .安全与稳定:操作系统通过防火墙、监测程序和补丁等方式,保护计算机免受恶意程序和电脑病毒的侵害,确保了系统的运行稳定。
  5. 商业考量:操作系统通常由商业公司提供,这些公司可能会通过操作系统提供增值服务或进行商业变现,如苹果的App Store和微软的Windows Store。
    综上所述,操作系统的存在是为了简化用户和应用程序员的操作,提高计算机系统的资源利用率,确保系统的安全性和稳定性,以及为商业公司提供盈利的机会。

那么操作系统如何对它们进行管理呢?首先,对一个事务进行管理,我们首先要对它进行建模,即先描述,再组织;先描述,就要先对它的属性进行分析,重要属性的分析就代表这个事务;所以,操作系统要管理某个资源,就要先对它描述,即分析它的属性,对它建模,再进行组织,组织后进行管理。假设操作系统要管理某一个资源,可以将它描述成一个链表,那么就可以看成操作系统对这个链表进行资源管理。

总结,计算机管理硬件/操作系统管理资源

这篇关于【Linux进程】冯·诺依曼体系结构以及操作系统的深入理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739487

相关文章

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块