深入理解计算机系统(1):系统组成

一、系统硬件组成

在这里插入图片描述

1、控制器(CPU):解释和执行内存中的指令
(1)、控制器
程序控制器:指令指针,指向主存中的机器语言指令,为一个字大小的存储设备或寄存器。
指令寄存器、指令译码器、时序产生器、操作控制器
(2)、运算器
(3)、寄存器
(4)、高速缓存
CPU从寄存器上读取一个字的时间开销比从主存中读取快100倍,从磁盘中读取数据比主存中读取大1000万倍。加快处理器的运行速度比加快主存的运行速度更容易和便宜。
在这里插入图片描述

2、主存(内存)
临时存储设备,在CPU执行程序时用来存放程序和程序处理的数据。从物理上来说,主存时由一组动态随机存储器芯片组成,从逻辑上来看,存储器是一个线性的字节数组,每个字节都有唯一的地址(数组索引)。

3、I/O设备
输入/输出设备是系统和外部世界的联系通道。如鼠标、键盘、显示器、磁盘等。每个I/O设备通过一个控制器或适配器与I/O总线相连。
控制器:I/O设备或主板上的芯片组,如USB、磁盘。
适配器:主板插槽上的卡,如网络适配器、图形适配器。

4、总线
贯穿整个系统的电子管道,携带信息字节并负责在各个部件间传递,通常被设计成传送定长的字节块,即字(32位机器上为4个字节,64位机器上为8个字节)。

二、操作系统管理硬件
操作系统有两个基本功能:防止硬件被失控的应用程序滥用;想应用程序提供简单一致的机制来控制复杂而又大不相同的低级硬件设备。操作系统通过基本的抽象概念(进程、虚拟内存和文件)来实现这两个功能。
1、进程
进程是操作系统对一个正在运行的程序的一种抽象。
并发运行:一个进程的指令和另一个进程的指令是交错执行的。
并行运行:多个处理器或者是多核的处理器同时处理多个不同的任务。

一个CPU看上去是在并发地执行多个进程,这是通过处理器在进程间切换来实现的,操作系统实现这种交错执行的机制称为上下文切换。

上下文切换:当前进程通过系统调用将控制权传递给操作系统,操作系统保存当前进程的上下文,恢复新进程的上下文(如果进程不存在,创建新的进程及其上下文),然后将控制权传递给新进程。

从一个进程到另一个进程的转换是由操作系统内核(kernel)管理的。内核是操作系统代码常驻主存的部分。当应用程序需要操作系统的某些操作时,比如读写文件,它就执行一条特殊的系统调用(system call)指令,将控制权传递给内核。然后内核执行被请求的操作并返回应用程序。注意,内核不是一个独立的进程。相反,它是系统管理全部进程所用代码和数据结构的集合。
在这里插入图片描述
线程
一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。因为多线程之间比多进程之间更容易共享数据,也因为线程一般来说都比进程更高效。当有多处理器可用的时候,多线程也是一种使得程序可以运行得更快的方法。

2、虚拟内存
抽象概念,为每个进程提供一个假象,即每个进程都在独占地使用主存,每个进程看到的内存是一致的,称为虚拟地址空间。
在这里插入图片描述

内核虚拟内存:为内核保留。

栈:用户虚拟地址空间顶部,编译器用栈来实现函数调用。用户栈在程序执行期间可以动态地拓展和收缩,函数调用时增长,返回时收缩。

共享库:存放像C标准库和数学库这样的共享库的代码和数据的区域。

堆:调用malloc和free时,在运行时动态拓展和收缩。

读写数据:全局/静态变量存储区,数据段和bss段(未初始化和初始化为0)。

只读的代码和数据:代码段和字面常量区。

3、文件
文件就是字节序列。每个I/O设备都可以看作文件,系统中的所有输入输出都是通过使用一小组系统函数调用读写文件来实现的。

三、程序运行过程

指令(二进制):操作码+操作数地址
1、加载程序:将代码和数据从磁盘复制到主存。
2、取指令:从内存区指令复制到指令寄存器。
3、译码:指令译码器分析指令的操作码字段,生成完成操作的控制信号。
4、执行指令:从主存或缓存中取数据到寄存器中,进行运算,将结果保存到寄存器或者主存中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/98410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离线安装mysql客户端

下载路径 oracle网站总是在不断更新,所以下载位置随时可能变动但万变不离其宗,学习也要学会一通百通。 首先直接搜索,就能找找到mysql官网 打开网站,并点击 DOWNLOADS 往下滚动,找到社区版下载按钮。…

高效解决 TypeError : ‘ numpy._DTypeMeta‘ object is not subscriptable 问题

文章目录 问题描述解决问题 问题描述 解决问题 参考博文 打开报错位置 AppData\Roaming\Python\Python39\site-packages\cv2\typing\ 添加single-quotes,即单引号 博主说The trick is to use single-quotes to avoid the infamous TypeError: ‘numpy._DTypeMeta’…

微信小程序发布流程

前言 上周写了如何写一个小程序,然后经过查资料,改bug,找chatgpt美化页面,我写了一个计算代谢率的小工具,写完了之后该怎么办呢,当然是发布上架,然后我就开始了发布的折腾 提交代码 这一步很…

JavaWeb整体介绍

JavaWeb整体介绍 什么是Java Web Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站JavaWeb:是使用Java技术解决相关web互联网领域的技术栈(就是用java开发网站) 网页&a…

【uniapp】subnvue组件数据更新视图未更新问题

背景 : 页面中的弹窗使用了subnvue来写, 根据数据依次展示一个一个的弹窗, 点击"关闭"按钮关闭当前弹窗, 显示下一个弹窗 问题 : 当点击关闭时( 使用的splice() ), 数据更新了 , 而视图没有更新, 实际上splice() 是不仅更新数据, 也可以更新视图的 解决 : this.$fo…

WPF中DataContext的绑定技巧

先看效果: 上面的绑定值都是我们自定义的属性,有了以上的提示,那么我们可以轻松绑定字段,再也不用担心错误了。附带源码。 目录 1.建立mvvm项目 2.cs后台使用DataContext绑定 3.xaml前台使用DataContext绑定

MySQL为什么使用B+树而不是跳表

文章目录 B树还是跳表B树简易代码跳表简易代码 B树还是跳表 MySQL的InnoDB存储引擎使用B树而不是跳表,这是因为B树在关系型数据库系统中有一些优势,特别是在处理范围查询、事务处理和数据持久性方面。下面详细说明B树和跳表的底层原理以及它们各自的优缺…

selenium查找网页如何处理网站资源一直加载非常卡或者失败的情况

selenium查找网页如何处理网站资源一直加载失败的情况 selenium获取一个网页,某个网页的资源卡了很久还没有加载成功,如何放弃这个卡的数据,继续往下走 有2钟方式。通常可以采用下面的方式一来处理这种情况 方式一、WebDriverWait 这种方式…

【Oracle】Oracle系列之十六--数据库备份

文章目录 往期回顾1. 数据库备份的分类1.1 逻辑备份与物理备份(1)逻辑备份(2)物理备份(3)归档模式与非归档模式 1.2 完全备份/差异备份/增量备份 2. Oracle 逻辑备份2.1 EXP/IMP(1)E…

差分构造法推广:arc166_d

https://atcoder.jp/contests/arc166/tasks/arc166_d 首先肯定是这样子放: 考虑相邻之间的差,本质就是橙色区间减蓝色区间数量 区间数量越少显然越优,所以我们要么保留橙区间,要么保留紫区间,然后两两匹配 #include…

如何做好sop流程图?sop流程图用什么软件做?

5.如何做好sop流程图?sop流程图用什么软件做? 建立标准作业程序sop已经成为企业进步和发展的必经之路,不过,很多刚刚开始着手搭建sop的企业并不知道要如何操作,对于如何做sop流程图、用什么软件做sop流程图等问题充满…

数据安全防护:云访问安全代理(CASB)

云访问安全代理(Cloud Access Security Broker,CASB),是一款面向应用的数据防护服务,基于免应用开发改造的配置方式,提供数据加密、数据脱敏功能。数据加密支持国密算法,提供面向服务侧的字段级…

记录一次springboot使用定时任务中@Async没有生效的场景

环境说明 jdk21springboot 3.0.11 springcloud 2022.0.0 spring-cloud-alibaba 2022.0.0.0 在开发一个定时触发的任务的时候,由于开发执行任务的函数比较耗费时间,所以采用异步解决问题。 发现并没有按照预期的触发 经询问后,发现当前类的…

JS中 split(/s+/) 和 split(‘ ‘)的区别以及split()详细解法,字符串分割正则用法

博主: http://t.csdnimg.cn/e4gDi split用法详解: http://t.csdnimg.cn/6logr

陕西省高级工程师职称基本流程

一.评审范围 全省范围具有合法生产,经营手续的中小企业局和非公有制经济从事工程师工作专业技术人员和高技能人员,均可申报 当年达到法定退休或已办退休…

网站被劫持了怎么办

网站被劫持了怎么办 建议新建一个index.html文件,文件中只写几个数字,上传到网站根目录,然后访问网站域名,看看是不是正常,从而可以确定是程序问题还是域名被劫持的问题。 如果是域名被劫持,你可以登录你…

Nginx常用命令

Nginx常用命令 查看版本 #仅显示nginx版本nginx -v#显示nginx版本、编译器版本以及配置参数nginx -V 启动 #使用默认配置文件启动nginx#指定配置文件加载nginx -c filename 停止 #快速关闭,可能不保存相关信息,并迅速终止web服务nginx -s stop#正常关闭…

SpringCloud学习笔记-Eureka服务的搭建

目录 1.首先引入依赖2.main中配置注解3.src/main/resources/application.yml配置文件 本文的主要工作是介绍如何搭建一个Eureka服务 1.首先引入依赖 pom文件中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring…

phpstudy本地域名伪静态

环境&#xff1a;WNMP(Windows10 Nginx1.15.11 MySQL5.7.26 【PHP 7.4.3 (cli) (built: Feb 18 2020 17:29:57) ( NTS Visual C 2017 x64 ) 】) 使用PhpStudy配置本地域名后&#xff0c;设置伪静态&#xff0c;这样在Web端打开网站就不需要输入index.php了&#xff0c;很简单…

竞赛选题 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…