Linux:冯·诺依曼体系结构和操作系统

文章目录

冯·诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

截至目前,我们所认识的计算机,都是由一个个的硬件组件组成:

  1. 输入单元:包括键盘, 鼠标,扫描仪, 写板,磁盘、摄像头、网卡等
  2. 输出设备:显示器、打印机、播放器、磁盘、网卡
  3. 中央处理器(CPU):CPU中有运算器和播放器,运算器对数据进行计算(算数运算和逻辑运算);控制器对计算机硬件流程进行一定的控制。

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

因为CUP的运行速度很快,而输入输出设备的读取/写入速度很慢,如果直接让CPU和输入输出设备交互,CUP会有很长时间是闲置的,这就造成了资源浪费。而内存的速度介于输入输出设备和CPU之间,所以让内存充当输入输出设备和CUP之间的枢纽可以减少资源浪费,在CPU计算的同时,可以将要处理的数据提前加载到内存中,等CPU要处理时可以直接有内存提供数据,极大提高了运算效率。

操作系统

概念

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

操作系统通过帮助用户管理好软硬件资源,来为用户提供良好的执行环境。

笼统的理解,操作系统包括:

  1. 内核(进程管理,内存管理,文件管理,驱动管理)
  2. 其他程序(例如函数库,shell程序等等)

操作系统的作用

  1. 与硬件交互,管理所有的软硬件资源
  2. 为用户程序(应用程序)提供一个良好的执行环境

定位

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

机制

图示为冯诺依曼体系结构下的计算机软硬件结构。最底层为一个个硬件,磁盘、鼠标、键盘等,每一个硬件都有自己对应的驱动程序,只有驱动程序才能控制相应的硬件。

操作系统担任底层硬件的管理工作,包括:内存管理,进程管理,文件管理,驱动管理。

所以操作系统管理底层硬件是通过管理硬件对应的驱动来实现的。

这就是操作系统管理底层硬件的结构。

而操作系统为了保证自己内部数据的安全,也为了保证能给用户提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。

系统接口是由操作系统提供的,用C语言实现的,自己内部的函数调用。所有访问操作系统的行为,都只能通过系统调用完成。

所以用户是不能直接对操作系统内部的数据进行操作的,想要对操作系统进行操作,只能通过操作系统提供的系统调用接口。

而有一些程序员又对系统调用接口进行封装,形成了库,用户在编写程序时,可以调用库方法,库方法会调用系统调用接口,通过这样的方式来操作操作系统。

操作系统如何管理硬件

在操作系统中,管理任何对象,最终都可以转化成为对某种数据结构的增删查改。

所以操作系统中存在大量的数据结构。

操作系统管理硬件遵循一个原则:先描述,再组织。

描述指的是用结构体来存储硬件的各种信息,创建一个结构体对象,通过对该结构体对象的增删查改代表对硬件的管理。

先描述,再组织。

描述指的是用结构体来存储硬件的各种信息,创建一个结构体对象,通过对该结构体对象的增删查改代表对硬件的管理。

组织指的是多个结构体对象的管理方式,一般是用链表或其他高效的数据结构。

相关推荐
高亦真1 分钟前
今天是学习嵌入式的第33天
linux·学习·算法
cuijiecheng201811 分钟前
Rocky Linux 安装 libltc、ltc-tools 和 ltcdump
linux
BlueAsia_Lab11 分钟前
BQB 认证执行标准是什么?核心条款通俗解读
linux·运维·网络
小小、码农15 分钟前
【网络】套接字(Socket)编程——TCP版
linux·服务器·网络·c++·网络协议·tcp/ip
邪修king19 分钟前
Re:Linux 系统篇(十六):进程篇(五):O (1) 调度算法深度解析 —— 优先级数组、位图优化与活跃 / 过期双队列
linux·运维·算法
苏三福20 分钟前
ubuntu 在文件管理系统中用sftp打开远程文件空白的问题解决
linux·运维·ubuntu
邪修king26 分钟前
Re:Linux 系统篇(十四):进程篇(三):进程退出与特殊进程 —— 僵尸 Z 状态、孤儿进程深度解析
linux·运维·服务器
lingran__26 分钟前
Git 完全指南(一):本地仓库基础操作
linux·git·开发工具·devops·版本控制
snow@li29 分钟前
服务器运维:Alibaba Cloud Linux 4 LTS・Vue前端 Java 后端 K3S 部署 CICD 目录规范清单
linux·前端·vue.js
2301_8026510839 分钟前
linux系统的学习:网络
linux·网络·学习