计算机指令

操作系统精髓与设计原理笔记(1)

£可爱£侵袭症+ 提交于 2020-03-07 00:01:37
计算机系统概述 1.1基本构成 计算机基本构成:处理器、存储器、输入/输出部件 处理器:逻辑处理单元,控制计算机的操作,执行数据处理功能,(CPU)。 内存:存储数据和程序。特点是易失性,关机后,存储器的内容就会丢失,通常被称为实存储器或主存储器。 输入/输出模块:在计算机和外部环境(外部设备(存储器设备:硬盘、通信设备和终端))之间移动数据。 系统总线:为处理器、内存和输入/输出模块间提供通信的设施。 寄存器简介: CPU使用的寄存器 存储器地址寄存器(MAR):确定下一次读写的存储器地址。 存储器缓冲寄存器(MBR)存放要写入存储器的数据或从存储器读取的数据。 输入/输出寄存器: 输入/输出地址寄存器(I/O AR)确定一个特定的输入/输出设备。 输入/输出缓冲寄存器(I/O BR)用于在输入/输出模块和处理器间交换数据。 1.2处理器寄存器 处理器包含一组寄存器,它们提供一定的存储能力,比内存访问速度快,但比内存的容量小。 用户可见寄存器:优先使用这些寄存器,可以减少使用机器语言或汇编语言的程序员对内存的访问次数。对高级语言而言,由优化编译器负责决定哪些变量应该分配给寄存器,哪些变量应该分配给内存。一些高级语言(如C语言)允许程序员建议编译器把哪些变量保存在寄存器中。 控制和状态寄存器:用以控制处理器的操作,且主要被具有特权的操作系统例程使用,以控制程序的执行。 1.2

计算机组成原理5-预测和冒险

做~自己de王妃 提交于 2020-03-06 17:30:28
1、 CPU 的流水线设计的三大冒险 结构冒险(Structural Hazard)、数据冒险(Data Hazard)以及控制冒险(Control Hazard)。 2、 结构冒险  结构冒险的本质是硬件层面资源的竞争。CPU 在同一个时钟周期,同时在运行两条计算机指令的不同阶段。但是这两个不同的阶段,可能会用到同样的硬件电路。 可以看到,在第 1 条指令执行到访存(MEM)阶段的时候,流水线里的第 4 条指令,在执行取指令(Fetch)的操作。访存和取指令,都要进行内存数据的读取。内存只有一个地址译码器的作为地址输入,那就只能在一个时钟周期里面读取一条数据,没办法同时执行第 1 条指令的读取内存数据和第 4 条指令的读取指令代码。解决这种资源冲突的本质方法就是增加资源,在 CPU 的结构冒险里面。对于访问内存数据和取指令的冲突,一个直观的解决方案就是内存分成两部分,让它们各有各的地址译码器。这两部分分别是存放指令的程序内存和存放数据的数据内存。 现代的 CPU 并不会直接读取主内存。它会从主内存把指令和数据加载到 高速缓存 中,这样后续的访问都是访问高速缓存。而指令缓存和数据缓存的拆分,使得 CPU 在进行数据访问和取指令的时候,不会再发生资源冲突的问题了。 3、 数据冒险 数据冒险是程序逻辑层面的事,有三种类型:分别是 先写后读 (Read After Write,RAW)、

又能扯皮了!没内存了还能看片?

拥有回忆 提交于 2020-03-06 15:35:58
虚拟内存 尽管基址寄存器和变址寄存器用来创建地址空间的抽象,但是这有一个其他的问题需要解决: 管理软件的膨胀(managing bloatware) 。虽然内存的大小增长迅速,但是软件的大小增长的要比内存还要快。在 1980 年的时候,许多大学用一台 4 MB 的 VAX 计算机运行分时操作系统,供十几个用户同时运行。现在微软公司推荐的 64 位 Windows 8 系统至少需要 2 GB 内存,而许多多媒体的潮流则进一步推动了对内存的需求。 这一发展的结果是,需要运行的程序往往大到内存无法容纳,而且必然需要系统能够支持多个程序同时运行,即使内存可以满足其中单独一个程序的需求,但是从总体上来看内存仍然满足不了日益增长的软件的需求(感觉和xxx和xxx 的矛盾很相似)。而交换技术并不是一个很有效的方案,在一些中小应用程序尚可使用交换,如果应用程序过大,难道还要每次交换几 GB 的内存?这显然是不合适的,一个典型的 SATA 磁盘的峰值传输速度高达几百兆/秒,这意味着需要好几秒才能换出或者换入一个 1 GB 的程序。 SATA(Serial ATA)硬盘,又称串口硬盘,是未来 PC 机硬盘的趋势,已基本取代了传统的 PATA 硬盘。 那么还有没有一种有效的方式来应对呢?有,那就是使用 虚拟内存(virtual memory) ,虚拟内存的基本思想是,每个程序都有自己的地址空间

【转帖】超能课堂(186) CPU中的那些指令集都有什么用?

帅比萌擦擦* 提交于 2020-03-06 07:59:31
超能课堂(186) CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 我们都知道之所以计算机能够进行计算,主要靠的是大规模集成电路中由晶体管组成的逻辑电路。这些逻辑电路使得计算机能够进行运算及判断。但对于一个简单逻辑电路来讲,它只能进行一个完整运算中的部分操作,所以人们通过组合这些简单逻辑电路,这样就可以让计算机进行复杂的运算了。当CPU设计人员将这些组合逻辑电路制作成通用运算单元后,我们将一定格式的指令及数据输入,即可得到运算结果。而当需要的运算种类越来越多、运算越来越复杂后,CPU设计人员就将这些指令进行划分重构,组成一整套进行运算的集合,这就是 指令集 。 图片来自 Unsplash 不过以上面向CPU指令集设计师及CPU微架构设计师的,CPU指令设计者将不同一些计算机操作设计成指令,然后微架构设计师通过这些指令的格式等进行微架构设计。而对于软件开发者,更多接触到的是软件层面的汇编语言,通过汇编语言指令就可以让程序员控制计算机了。计算机软硬件架构是有层次的,随着高级语言的开发,GUI的出现,更多的人可以方便的使用计算机。虽然编程语言越来越“高级”,软件越来越华丽,但是其依然需要通过CPU中的海量晶体管进行运算,调用指令集。 从英特尔开发出8086处理器开始,x86指令集就开始形成了,此后英特尔推出了80286

第十一周学习报告

ⅰ亾dé卋堺 提交于 2020-03-06 03:35:58
第八章 异常控制流 指令的地址的过渡称为 控制转移 控制转移序列叫做处理机的 控制流 过程中发生的突变叫做 异常控制流 8.1 异常 异常就是控制流中的突变 一部分由硬件实现,一部分由操作系统实现 当处理器检测到有事情发生时,它就会通过一张叫做异常表的跳转表,进行一个间接程序调用,到一个专门设计用来处理这类事件的操作系统子程序(异常处理程序) 异常处理程序完成处理后: (1) 处理程序将控制返回给当事件发生时正在执行的指令 (2) 处理程序将控制返回给如果没有发生异常将会执行的下一条指令 (3) 处理程序终止被中断的程序 8.1.1 异常处理 每种类型的异常都分配了一个唯一的非负整数的异常号 在程序启动时,操作系统会分配和初始化一张称为异常表的跳转表 异常号是异常表的索引,异常表的起始地址放在一个叫做异常表基址寄存器的特殊CPU寄存器中 在处理程序处理完事件之后,它通过执行一条“从终端返回”指令,可选的返回到被中断的程序 如果异常中断的是一个用户程序,就将状态恢复为用户模式,然后将控制返回给被中断的程序 8.1.2 异常的类别 分为四类:中断、陷阱、故障、终止 1.中断 中断是异步发生的(其他都是同步发生的,叫做故障指令),是来自处理器外部的I/O设备的信号的结果 硬件中断的异常处理程序通常称为中断处理程序 中断处理程序将控制返回给应用程序控制流中的下一条指令 2.陷阱和系统调用

多线程编程bug起源分析

冷暖自知 提交于 2020-03-05 16:20:30
一、多线程的起源 对于软件工程师,整个代码执行的过程中主要关注CPU、内存和I/O这三个方面;在计算机快速发展的阶段,主要是这三个方面在快速发展;但这三方面一直存在这一个严重的矛盾,即运行速度;CPU的运行速度是是最快的,内存次之,IO是最慢的;举个例子来说,CPU是天上一天,内存就是地上一年。若内存是天上一天,IO就是地上十年; 根据木桶理论,限制程序运行速度的是IO。每次在执行IO操作时,CPU都会被闲置;为了最高效的利用CPU的计算资源,平衡这三者的速度差异。计算机体系结构、操作系统和编译程序都做了平衡,主要体现在以下三点: 1、为了均衡CPU和内存的速度差异,给CPU配置专门的缓存; 2、操作系统增加了线程和进程。以分时复用CPU来平衡CPU与IO的时间差; 3、编译程序优化指令执行次序,确保缓存可以被合理的使用; 二、多线程BUG源头 1、缓存导致的可见性问题 1)在单核CPU的时代,所有的线程都是操作同一个CPU的缓存,所以对于所有的线程来说,CPU的缓存都是共享且可见的;但在多核CPU的时代,每个CPU都会有自己的缓存,不同的线程被分配到不同的CPU。就会导致多个线程在不同的CPU缓存中操作同一个变量时,该变量在每一个缓存中都是只对操作该CPU的线程可见,对其它CPU对应的线程是不可见的。不能保证该变量的强一致性; 代码示例: public class Test1 {

30 分钟快速入门 Docker 教程

不想你离开。 提交于 2020-03-05 16:03:08
原文地址: 梁桂钊的博客 博客地址: http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 一、欢迎来到 Docker 世界 1. Docker 与虚拟化 在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系统上建立了一个中间虚拟软件层 Hypervisor ,并利用物理机器的资源虚拟出多个虚拟硬件环境来共享宿主机的资源,其中的应用运行在虚拟机内核上。但是,虚拟机对硬件的利用率存在瓶颈,因为虚拟机很难根据当前业务量动态调整其占用的硬件资源,因此容器化技术得以流行。其中,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。 Docker 容器不使用硬件虚拟化,它的守护进程是宿主机上的一个进程,换句话说,应用直接运行在宿主机内核上。因为容器中运行的程序和计算机的操作系统之间没有额外的中间层,没有资源被冗余软件的运行或虚拟硬件的模拟而浪费掉。 Docker 的优势不仅如此,我们来比较一番。 特性 Docker 虚拟机 启动速度 秒级 分钟级 交付/部署 开发、测试、生产环境一致 无成熟体系 性能 近似物理机 性能损耗大 体量 极小(MB) 较大(GB) 迁移/扩展 跨平台,可复制

《网络攻防》- 学习心得

巧了我就是萌 提交于 2020-03-04 12:47:07
目录 冯诺依曼体系结构理解 设计思路 图灵机的理解 图灵的生平 人工智能 程序=指令+数据 组成 运行机制 图灵完备 冯诺依曼体系结构理解 当前计算机主要是基于冯诺依曼体系结构设计的,下面就简单分析一下冯诺依曼体系结构的计算机是如何工作的,首先下面的图就是冯诺依曼体系结构图。 主要由五大部件组成 1.存储器用来存放数据和程序 2.运算器主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中 3.控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果 4.输入设备用来将人们熟悉的信息形式转换为机器能够识别的信息形式,常见的有键盘,鼠标等 5.输出设备可以将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等 冯诺依曼体系结构的指令和数据均采用二进制码表示;指令和数据以同等地位存放于存储器中,均可按地址寻访;指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置;指令在存储器中按顺序存放,通常指令是按顺序执行的,特定条件下,可以根据运算结果或者设定的条件改变执行顺序;机器以运算器为中心,输入输出设备和存储器的数据传送通过运算器。 然而现在的计算机基本以存储器作为中心 但是由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,通常将它们合起来统称为中央处理器,简称CPU,把输入输出设备简称为I/O设备

计算机组成原理 - 计算机层次结构 和 性能指标(容量 + 速度)⭐

雨燕双飞 提交于 2020-03-04 10:22:59
计算机层次结构 简单层次结构 计算机: 软件 + 硬件 软件=应用软件+系统软件 计算机层次结构 计算机性能指标(容量+速度) 容量 总容量 = 存储单元个数 × 存储字长(bit) 1Byte = 8bit ∴ 总容量 = 存储单元个数 × (存储字长/8)Byte 存储体 MAR地址寄存器 存储单元个数 2^n 和 译码器对应地址线n条 n个二进制可以表示出多少种不同的状态? n=1 0,1 2^1 n=2 00,01,10,11 2^2 ...... n=10 ... 2^10 K n=20 ... 2^20 M n=30 ... 2^30 G n=40 ... 2^40 T 速度 机器字长/存储字长/指令字长 研究对象:ALU 引入概念: 机器字长: 计算机进行 一次整数 运算 ,所 能处理的 二进制数据的 长度位数 (最多能同时处理多少位) = 内部寄存器大小 计算精度 区别: 存储字长: 存储单元 所存储的二进制单元的 长度位数 指令字长: 指令 中所包含的二进制 长度位数 一般 指令字长是存储字长的整数倍 ,指令字长和存储字长都是字节的整数倍 CPU时间周期/主频/CPI/指令耗时/CPU执行时间 CPU时间周期:最小的时间单元 主频(CPU时间频率) = 1/CPU时间周期 CPI :执行一条指令,所需时钟周期 数目 该指令耗时 = CPI ×CPU时钟周期

DOS运行指令

有些话、适合烂在心里 提交于 2020-03-03 12:03:46
运行指令   Nslookup-------IP地址侦测器 explorer-------打开 资源管理器   logoff---------注销命令 tsshutdn-------60秒倒计时关机命令   lusrmgr.msc----本机用户和组 services.msc---本地服务设置   oobe/msoobe /a----检查XP是否激活 notepad--------打开记事本   cleanmgr-------垃圾整理 net start messenger----开始 信使服务   compmgmt.msc--- 计算机管理 net stop messenger-----停止信使服务   conf-----------启动netmeeting dvdplay-------- DVD播放器   charmap--------启动 字符映射表 diskmgmt.msc--- 磁盘管理 实用程序   calc-----------启动计算器 dfrg.msc------- 磁盘碎片整理程序   chkdsk.exe-----Chkdsk磁盘检查 devmgmt.msc--- 设备管理器    regsvr32 /u *.dll----停止 dll文件 运行 drwtsn32------ 系统医生   rononce -p ----15秒关机 dxdiag--------