【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解

简介: 【linux基础(八)】计算机体系结构--冯诺依曼系统&操作系统的再理解

1. 前言

为了更好的理解Linux进程的概念

要先认识计算机结构体系:冯诺依曼系统

并且要重新理解操作系统的概念与定位

本章重点:

本章着重讲解冯诺依曼体系结构
并且带大家重新认识操作系统的定位
本篇文章没有代码和指令,比较轻松
大篇幅的是在做介绍和讲故事!


2. 冯诺依曼系统介绍

常见的计算机,如笔记本

不常见的计算机,如服务器

大部分都遵守冯诺依曼体系!

对于各个部分的描述:

  • 输入设备: 键盘,话筒,摄像头,usb
    鼠标,磁盘/ssd,网卡等等
  • 存储器: 存储器其实就是内存!
  • 中央处理器(CPU): CPU,寄存器,各级别缓存
  • 输出设备: 显示器,磁盘,扬声器,网卡等等

对于没有了解过这一部分知识的同学

很难分清楚内存和磁盘的关系与区别

内存和磁盘是计算机中主要的存储部件
内存是利用了电效应实现了存储
一旦电脑断电它存储的数据就会丢失!
然而磁盘是外设,是永久存储介质!

内存的特点: 高速度高价格

磁盘的特点: 低速低价

注:计算机中几乎所有的设备都有存储数据的功能,只不过是存储能力大小有别

经过上面的剖析,现在可以将冯诺依曼系统

图给补充给下面的样子:


3. 为什么冯诺依曼系统如此流行?

其实计算机体系不止有冯诺依曼系统

还有哈佛架构向量处理器系统

还有流水线结构等等

为啥冯诺依曼系统被广泛使用呢?

我们本节课只在存储能力的方面来做解析

先给大家铺垫一下内存分级的知识:

结论: 离CPU越近的设备,运行速度越快,造价也越贵!

在硬件层面上,CPU只能和内存交互
而不能直接和磁盘外设交互!
这是因为外设磁盘离CPU很远,处理速度很慢
相信大家都听说过短板效应,所以CPU
为了总体的运行速度不被拉低,就不会
直接和磁盘外设打交道,而是和内存打交道!

image.png

所以冯诺依曼的这种体系很巧妙

将中央处理器进行复杂的数据处理,运算

而离CPU远一点的设备用于存储数据

或者接受数据后传给内存做分析

这就得出了这样的结论:

冯诺依曼系统既有高价格的设备
用于处理复杂的数据,又有低价格
的设备用于存储数据或进行数据交互
这使得冯诺依曼体系的计算机可以在
价格不高的前提下,做到效率比较高!

正是这种能让老百姓买得起的价格

并且使用起来比较高效的模式

才让冯诺依曼系统到现在也如此流行!


4. 对硬件系统的再理解

经常听见老师说,程序在运行之前

必须先加载到内存中,这是为什么?

现在我们或许可以解释这个问题

首先,程序=代码+数据,然而只要是数据

最终都要CPU来处理,CPU需要先读取

这些代码和数据,经过和内存的交互

处理完程序后会形成可执行程序.exe文件

此文件会被存储在外设磁盘中!

注:磁盘的内容怎样被传到内存
内存又怎样和CPU交互
这些工作由操作系统来完成

现在再分享几个案例:

(注:目前还没有学习网络,所以网络部分忽略)

  1. 案例A: QQ发消息与收到消息

很明显,在QQ上发送消息时发的不仅仅

是消息,还有发送时间,发消息人的头像等

所以在发送消息前,从键盘输入的数据要

被加载到内存经过CPU处理后推送至输出

设备:网卡,经过网络后推送到收消息的人的

输入设备:网卡,将网卡数据加载到内存后

被CPU处理了交给显示器显示收到的消息!

  1. 案例二: 微信发文件与接受文件

与发消息不同,发送文件是从自己的

磁盘中将文件拷贝一份后加载到内存

经过CPU处理后推送到输出设备网卡上

要接受文件的人在经过网络后在网卡上

收到此文件,最终将文件存储至自己的磁盘

结论:

以上案例只是想让大家更深一步了解硬件
之间的关系,并且输入输出设备不止有
键盘和显示器,还有其他的硬件也能传递信息


5. 校长对学生的管理

操作系统的本质其实就是一款软件

是一款进行软硬件资源管理的软件

我们今天主要把下图的后三个阶段讲明白:

那么,操作系统是怎样管理硬件的呢?
现在给大家讲一个小故事:

在公司里有人员管理系统,而在学校里

有教务系统,就是用于管理学生的系统

假如杭电的朱校长是一个程序员,最开始

学校只有100人,朱校长一个人就可以

管理好它们的生活起居和学习运动

但是有一个杭电扩招了,现在有5万个学生

朱校长一想这样不行,我得写一段代码让

计算机帮我管理杭电得学生,写了一个结构体

struct student
{
  int age;
  int height;
  int grade;
  string name;
  ......
}

学生太多了又不易保存和查找

于是校长将学生以链表得方式链接在一起

struct student
{
  struct student* next;
  int age;
  int height;
  int grade;
  string name;
  ......
}

如果李四或者赵六有一门挂科了

那么校长就打开代码编译器,找到

李四和赵六将他们的状态改为挂科!

结论: 校长管理学生不是真正的人
而是在管理学生对应的数据


6. 操作系统对硬件的管理

和校长管理学生一样,操作系统也不是直接

管理硬件,而是管理硬件映射出来的信息

和校长创建的结构体类似,操作系统也会对

各个硬件创建一个结构体,结构体中存放

硬件的各种信息和健康状态等等,再通过

链表或者其他数据结构将这些

结构体一一链接起来统一管理!

管理这些硬件或学生需要做到

先描述,再管理

操作系统的管理核心有:

  1. 进程管理
  2. 内存管理
  3. 文件/IO管理
  4. 驱动管理

这里管理都要遵循一个原则,那就是:

先描述,再管理

要管理进程得先描述进程得性质

内存管理管理得是内存,首先要描述内存

然而C/C++得结构体正好可实现这功能

操作系统将软件硬件管理好并不是它的目的

它得目的是给用户提供良好得,稳定,高效,安全

得使用环境,而管理只是一种手段

再看此图:

每一个硬件都有对应的驱动程序来做管理

像键盘,鼠标,U盘等等都有对应的驱动程序

然后操作系统再通过这一整套成熟的驱动

程序来管理下层的硬件!并且在此基础上衍生

出各种软件业务,和用户服务!


7. 总结

本篇文章的内容大家要有一个基本的认识

然而虽然说操作系统是为用户提供服务的

但是它并不相信用户,因为群众中可能有坏人

就像银行一样,为你提供服务但是不信任你

于是在操作系统和用户之间还有系统调用窗口

和shell外壳来阻止群众中的坏人直接获取

Linux内核中的各种信息!

系统调用说白了就是操作系统给用户提供了一个又一个的函数用户通过调用函数来获取操作系统内的各种数据,然而函数是操作系统内部写的,所以你只能看到有限部分的数据


相关文章
|
17天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
43 1
|
18天前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
19天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
19天前
|
搜索推荐 Linux
深入理解Linux操作系统的启动过程
本文旨在揭示Linux操作系统从开机到完全启动的神秘面纱,通过逐步解析BIOS、引导加载程序、内核初始化等关键步骤,帮助读者建立对Linux启动流程的清晰认识。我们将探讨如何自定义和优化这一过程,以实现更高效、更稳定的系统运行。
|
17天前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
18天前
|
人工智能 搜索推荐 Android开发
移动应用与系统:探索开发趋势与操作系统演进####
本文深入剖析了移动应用开发的最新趋势与移动操作系统的演进历程,揭示了技术创新如何不断推动移动互联网生态的变革。通过对比分析不同操作系统的特性及其对应用开发的影响,本文旨在为开发者提供洞察未来技术方向的视角,同时探讨在多样化操作系统环境中实现高效开发的策略。 ####
18 0
|
18天前
|
缓存 监控 网络协议
Linux操作系统的内核优化与实践####
本文旨在探讨Linux操作系统内核的优化策略与实际应用案例,深入分析内核参数调优、编译选项配置及实时性能监控的方法。通过具体实例讲解如何根据不同应用场景调整内核设置,以提升系统性能和稳定性,为系统管理员和技术爱好者提供实用的优化指南。 ####
|
20天前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
17天前
|
5G 数据安全/隐私保护 Android开发
移动应用与系统:探索开发趋势与操作系统革新####
本文深入剖析当前移动应用开发的最新趋势,涵盖跨平台开发框架的兴起、人工智能技术的融合、5G技术对移动应用的影响,以及即时应用的发展现状。随后,文章将探讨主流移动操作系统的最新特性及其对开发者社区的影响,包括Android的持续进化、iOS的创新举措及华为鸿蒙OS的崛起。最后,还将讨论移动应用开发中面临的挑战与未来的发展机遇,为读者提供全面而深入的行业洞察。 ####
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
97 8