【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外壳)辅助用户进行接口调用。

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


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

相关推荐
小糖学代码5 小时前
LLM系列:1.python入门:3.布尔型对象
linux·开发语言·python
shizhan_cloud5 小时前
Shell 函数的知识与实践
linux·运维
Deng8723473485 小时前
代码语法检查工具
linux·服务器·windows
霍夫曼7 小时前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript
月熊8 小时前
在root无法通过登录界面进去时,通过原本的普通用户qiujian如何把它修改为自己指定的用户名
linux·运维·服务器
大江东去浪淘尽千古风流人物9 小时前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
打码人的日常分享9 小时前
智慧城市一网统管建设方案,新型城市整体建设方案(PPT)
大数据·运维·服务器·人工智能·信息可视化·智慧城市
赖small强9 小时前
【Linux驱动开发】NOR Flash 技术原理与 Linux 系统应用全解析
linux·驱动开发·nor flash·芯片内执行
风掣长空10 小时前
Google Test (gtest) 新手完全指南:从入门到精通
运维·服务器·网络
IT运维爱好者11 小时前
【Linux】LVM理论介绍、实战操作
linux·磁盘扩容·lvm