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

news2024/11/17 4:32:10

一、系统硬件组成

在这里插入图片描述

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.coloradmin.cn/o/1073375.html

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

相关文章

基于docker+Keepalived+Haproxy高可用前后的分离技术

基于dockerKeepalivedHaproxy高可用前后端分离技术 架构图 服务名docker-ip地址docker-keepalived-vip-iphaproxy-01docker-ip自动分配 未指定ip192.168.31.252haproxy-02docker-ip自动分配 未指定ip192.168.31.253 安装haproxy 宿主机ip 192.168.31.254 宿主机keepalived虚…

k8s-9 ingress-nginx 特性

TLS加密 创建证书 测试 auth认证 创建认证文件 rewrite重定向 进入域名 会自动重定向hostname.html 示例二: 测试 后面必须跟westos 这个关键字 canary金丝雀发布 基于header灰度 场景:版本的升级迭代,比如一个service 升级到另…

react学习之---jsx转成虚拟dom的过程

jsx----经过Bebal编译返回可供React.createElement()可调用的对象—React.createElement调用后生成虚拟dom—diff算法—生成新的真实dom 经过babel编译: import {greet} from ‘./utils’; const App {greet(‘scott’)}; ReactDOM.render(App, document.getEl…

芯引擎·新力量 | 第五届浦东新区长三角集成电路技能邀请赛圆满落幕

9月27日, 2023年全国工业和信息化技术技能大赛上海选拔赛、上海职工职业技能系列赛暨第五届浦东新区长三角集成电路技能邀请赛汽车芯片设计竞赛及颁奖典礼在上海集成电路设计产业园举办,上海市经济和信息化委员会人事教育处处长黄春华,上海市…

ESP32网络开发实例-Web服务器控制GPIO

Web服务器控制GPIO 文章目录 Web服务器控制GPIO1、软件准备2、硬件准备3、代码实现本文将介绍如何Arduino IDE编程环境创建一个具有ESP32的独立web服务器,ESP32控制输出(两个LED)。可以通过作为本地网络上的浏览器的任何设备访问。下面将逐步介绍如何创建web服务器以及代码的…

【Redis】Redis的几个应用场景(string数据类型的应用)

Redis的几个应用场景 缓存功能 ⽐较典型的缓存使⽤场景,其中Redis作为缓冲层,MySQL作为存储层,绝⼤部分请求的数据都是从Redis中获取。由于Redis具有⽀撑⾼并发的特性,所以缓存通常能起到加速读写和降低后端压⼒的作⽤。 计数功能…

MS2400隔离式调制器可pin对pin兼容AD7400

MS2400是一款二阶Σ-Δ调制器,集成片上数字隔离器,能将模拟输入信号转换为高速1位码流。可pin对pin兼容AD7400,可兼容AMC1303。调制器对输入信号连续采样,无需外部采样保持电路。模拟信号输入满量程为320mV,转换后的数…

物联网入门系列(一):快速搭建一站式数据存储与实时分析平台

本系列文章将以教程形式介绍物联网领域用户在安装部署、分布式数据库设计、数据写入和查询、流计算和高可用测试等过程中的常见问题、相应的解决方案与注意事项,以帮助新用户快速入门,体验 DolphinDB 的极致性能。 本次介绍内容为——如何快速搭建一站式…

pgpool密码验证失败问题

当使用命令 psql -p 9999 -U postgres -d postgres 登录pgpool时 出现错误:md5 authentication failed 认证问题 推测问题: 1.密码设置错误 2.密码加密方式不一致 在主库操作 查看用户密码 select rolname,rolpassword from pg_authid 可以看出之前密码…

3561-24-8|荧光染料6-fam(Br4)|可作为成像剂

产品简介:6-fam(Br4)是一种荧光染料,广泛应用于生物医学领域中的荧光探针、标记物和成像剂等方面。其分子结构独特,具有良好的荧光量子产率和稳定性,能够在生物体内快速、准确地标记和追踪生物分子和细胞。其优异的荧光性能和化学…

(十四)VBA常用基础知识:当前excel文件所有sheet循环,获取sheet名,获取最大行数最大列数

获取当前excel的所有sheet以及sheet名 Sub test()Dim ws As WorksheetFor Each ws In Worksheetsws.ActivateDebug.Print ws.NameNext ws End Sub 输出结果: Sheet1 Sheet2 Sheet3 Sheet4 Sheet52.获取最大行数 首先要明白取最大行的方式,为什么这样取…

Go:关于 Channel

文章目录 写在前面内容模型图与代码发送流程接收流程 写在前面 本篇主要是通过 Channel 的模型图,对 Channel 的原理做一个基本的概述 内容 模型图与代码 我们先来看下 Channel 的模型图: 以上的图是一个简要的模型图,意味着丢失一些细节…

【Spring Boot】SpringBoot 单元测试

SpringBoot 单元测试 一. 什么是单元测试二. 单元测试的好处三. Spring Boot 单元测试单元测试的实现步骤 一. 什么是单元测试 单元测试(unit testing),是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。 二. 单元测试的好处…

TDengine时序数据库学习使用

数据库要求: 1.目前服务器只能在linux运行,先安装服务器版本v1 2.下载与v1完全匹配的客户端版本v1(客户端与服务器的版本号不匹配可能访问不了服务器) 第一步 安装 安装服务器注意,安装教程: 使用安装…

vivado FFT IP仿真(3)FFT IP选项说明

xilinx FFT IP手册PG109 1 Configuration 2 Implementation 3 Detailed Implementation IP Symbol

Android源码下载

文章目录 一、Android源码下载 一、Android源码下载 AOSP 是 Android Open Source Project 的缩写。 git 常用命令总结 git 远程仓库相关的操作 # 查看 remote.origin.url 配置项的值 git config --list Android9.0之前代码在线查看地址:http://androidxref.com/ …

关于webWorker未解问题

今天尝试学习webworker,尝试在vue3项目里面使用 使用的就是常规方法,使用worker-loader,加上在vue.config.js内部添加配置 使用完发现问题 如图所见,该worker仅仅配置点击后传输字符串"1",并在worker内部打印,发现打印不出来 但是仅仅只是将引入的文件换个名字 …

什么是兼容性测试? 有哪些方法?

在现今数字化世界中,软件和应用程序的多样性和复杂性已经达到了前所未有的高度。不同的操作系统、浏览器、设备和网络环境使得开发人员面临着严峻的挑战,即如何确保他们的软件在各种不同条件下都能正常运行。这就是兼容性测试的重要性所在。 一、什么是兼…

十一、2023.10.5.计算机网络(end).11

文章目录 17、说说 TCP 可靠性保证?18、简述 TCP 滑动窗口以及重传机制?19、说说滑动窗口过小怎么办?20、说说如果三次握手时候每次握手信息对方没收到会怎么样,分情况介绍?21、简述 TCP 的 TIME_WAIT,为什么需要有这个状态&…