【Linux】进程预备知识——冯诺依曼、操作系统

目录:

一、冯诺依曼体系结构

(一)什么是冯诺依曼

(二)为什么需要冯诺依曼

(三)冯诺依曼如何操作

二、操作系统概念

(一)对下硬件管理

(二)对上服务用户


一、冯诺依曼体系结构

讲解思路:什么是冯诺依曼,为什么要冯诺依曼,冯诺依曼怎么运行的

(一)什么是冯诺依曼

冯诺依曼由:输入/输出设备、存储器、CPU(运算器、控制器)构成。

CPU-运算器:算术运算,逻辑运算

CPU-控制器:执行代码,进行逻辑控制(弱化)

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

输出设备:显示器、磁盘、网卡、打印机.....

(二)为什么需要冯诺依曼

我们平时写的c/c++代码会生成一个可执行程序,可执行程序必须加载到内存中,为什么?

首先给出一个结论:CPU在数据层面不和外设(输入/输出设备)打交道!外设不和CPU打交道只和内存(存储器)打交道,这又是为什么呢?

在内存中存在效率问题:CPU效率>内存>外设

  1. 若CPU直接从外设获取数据,输入设备信息还没准备好CPU要等很长一段时间,而从内存中获取信息虽然也要等,但是相对前者快很多提高了效率。所以输入设备将信息加载到内存,再由内存向CPU传送数据。

  2. 在下图中,效率越快的寄存器价格越高空间还小,无法实现用户普及性,引入内存可以让用户不怎么高的成本或得一台计算机,人人用得起计算机也就推动计算机的发展。

内存的本质是外设和CPU的缓存

回到问题:为什么需要冯诺依曼,因为计算机的硬件都遵循冯诺依曼体系结构,冯诺依曼体系结构决定可执行程序必须预加载到内存,CPU只和内存打交道(效率有关)。

这也反应了为什么我们写程序要包含头文件,输入设备到存储器的过程称为input,存储器到输出设备的过程称为output;input和output就是IO流--->用于外设和内存进行数据交换--->要使用IO流必须包含指定头文件。

(三)冯诺依曼如何操作

Linux下一切皆文件!!数据流动的本质:其实是拷贝,计算机整体效率也就是设备间拷贝的效率!

  1. 信息通信

你要和你朋友远程实现QQ上的信息交流,看似两个人在交流实际上是两台冯诺依曼通过网路进行数据的传递。

你和朋友打开QQ软件就是将软件预加载到内存,然后你从键盘输入你好拷贝到内存,内存将信息拷给CPU-运算器进行加密从"xxx"再将加密后的信息拷回给内存,内存拿到后通过输出设备(网卡)进行网络传输到你朋友的冯诺依曼上。

你朋友就输入设备从网卡上获取到加密信息"xxx"--->内存--->CPU-运算器进行解密成"你好"----->内存--->显示器上显示"你好"

  1. 文件发送

文件发送也和信息传输的操作是一样的,因为计算机的硬件都遵循冯诺依曼体系结构。不一样的是文件是通过磁盘输入输出,而不是网卡。

二、操作系统概念

结论:操作系统是进行软硬件管理的软件,软硬件体系结构本质是层状的。

(1)什么是Linux内核

Windows上,我们认为的操作系统包含图形界面、WPS软件等,以程序员的角度,接下来谈论的Linux操作系统只说Linux内核,内核进行内存管理、进程管理、文件管理、驱动管理。

也就是下图我圈起来的这一部分称为Linux内核:

(2)操作系统是怎么进行硬件管理?

结论:通过每个硬件的驱动程序间接管理和控制每个硬件。

硬件全部遵循冯诺依曼体系结构,是不能直接与操作系统打交道,比如你给你电脑插上手写板在插上的几秒钟内手写板是没有反应的,因为手写板在安装对应驱动程序,只有安装好驱动程序才能与操作系统建立联系。操作系统通过每个硬件的驱动程序间接管理和控制每个硬件。

(3)为什么要操作系统

对下:通过驱动程序管理好硬件------>手段

对上:给用户提供一个良好(稳定、安全、高效)的运行环境------>目的

总不能两天一黑屏,三天一重启,这样这个操作系统就很不稳定、安全。

我们使用操作系统本质上使用什么?

通过软件访问计算机的硬件资源!!我们对于操作系统的各种需求是无限的,比如电脑啊,给我打开QQ,打开微信,打开网易云、打开爱奇艺...而计算机的硬件资源就那么点很有限。

这时候就需要操作系统把有限的硬件资源管理好,通过软件来匹配我们无限的需求。

接下来我将操作系统拆分为两部分进行讲解


(一)对下硬件管理

结论:对硬件的管理本质是对硬件数据的管理,管理的做法是:先描述再组织

(1)原理

在学校中有校长、辅导员和你。假设校长就是最高管理者,辅导员是辅助校长管理你(执行者),而你是被管理者。那么校长管理你需不需要天天和你见面呢?不仅不需要而且你还被管理者安排的明明白白(固定时间上课、吃饭),所以要管你见面不是必要条件!而是获取到你的信息,像电话号码、宿舍号、学籍档案,这样校长就可以通过这些个人数据间接管理你,想找你聊天一个电话就可以找到你。怎么获取到你信息?这时候就靠辅导员了,他们协助校招收集你们档案再交给校长,这样校长什么都不用做就把你们信息拿到。

以上例子对应操作系统就是:校长--->操作系统,辅导员--->驱动程序,你--->硬件设备

这也再次说明了:操作系统通过驱动程序获取到硬件信息实现对硬件的管理、控制

(2)做法

这时校长是一名程序员,它自己管10几个学生信息可以,几千个就不行了,于是对学生的管理工作变成让计算机管理!!而操作系统大部分由C语言编写,C在描述学生属性是通过创建结构体,于是学生信息通过一个个结构体来描述,每个结构体中再定义一个指向下一个结构体的指针,这样就把全部学生数据串起来形成链表,再定义个链表头结点,就实现对学生管理工作的建模,将管理所有学生问题转化为对链表的增删查改管理!

管理本质是对数据进行管理,做法是:先描述再组织

将生活中问题描述成一个个结构体,再将这些结构体组织起来。语言中类就是描述,容器技术是组织,所以操作系统中是存在很多数据结构的!

(二)对上服务用户

结论:操作系统是层状结构,和操作系统交互只能通过系统调用,本质是让用户安全的访问操作系统

操作系统不允许用户直接访问,因为内部有很多信息不允许直接随意删改,对计算机小白用户就更不用说了。例如你去银行存钱不可能直接修改内部金额数据,得由银行窗口的服务者进行修改。

所以操作系统给用户提供一个封装系统调用的接口,进行入参返回实现系统调用

这还不够,操作系统在这之上再将这些接口封装为各种库(iostream/ stdio / lib ...)这也就是C语言在使用scanf、printf....时需要包含头文件,这样你直接用函数而系统帮你调硬件接口(键盘、显示器...)

而这仅仅是对于操作系统程序员用户而言,非程序员根本不懂代码,于是基于下面的库和接口开发出一系列软件给用户使用(Windows是各种图形化界面,Linux是shell外壳)辅助用户进行接口调用。

以上就是操作系统向上对用户提供一个良好的运行环境,向下管理好硬件的全过程。


感谢观看,希望利己同时也对大家有帮助~

相关推荐
BuHuaX23 分钟前
C#的反射机制
服务器·unity·c#·游戏引擎·游戏程序
不爱学英文的码字机器34 分钟前
隐私计算的崛起:数据安全的未来守护者
服务器·算法
a123_z38 分钟前
.NET 创建MCP使用大模型对话二:调用远程MCP服务
运维·服务器
葟雪儿1 小时前
Docker常用命令
linux·服务器·spring cloud·docker·微服务·容器
木盏1 小时前
Linux终止进程(kill process)的一些玩法
linux·运维·深度学习
Fanche4041 小时前
Linux-CentOS-7—— 安装MySQL 8
linux·运维·数据库·mysql·centos
橘子131 小时前
Linux信号——信号的处理(3)
linux·运维·服务器
Algorithm15762 小时前
linux如何查看当前系统的资源占用情况
linux·运维·服务器
java资料站3 小时前
分盘,内网
linux·服务器
嘵奇3 小时前
Spring Boot内嵌服务器全解析:Tomcat vs Jetty vs Undertow 选型指南
服务器·spring boot·tomcat