计算机指令

【面试专栏】深入理解volatile

坚强是说给别人听的谎言 提交于 2019-12-26 05:54:47
文章同步更新在个人公众号“梓莘”,欢迎大家关注,相互交流。 谈谈对volatile的理解 volatile是java虚拟机提供的轻量级的同步机制(同步比如synchronized)拥有3大特性: 保证可见性 不保证原子性 禁止指令重排 简单来说也就是volatile保证可见和有序,但是并不保证原子性。 要更好的理解这个需要对JMM有个大概的了解,接下来先看下JMM的简单概念。 谈谈JMM(Java Memory Model) JMM也就是java内存模型,它本身是一种抽象的概念,描述的是一种规则或规范,通过程序中各个变量(实例字段、静态字段和构成数组对象中的元素)的访问方式。 JMM关于同步的规定: 线程解锁前,必须把共享变量的值刷新回主内存 线程加锁前,必须读取主内存中的最新值到自己的工作内存 加锁解锁是同一把锁 由于JMM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存是每个线程的私有数据区域,而java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要 将变量从主内存拷贝到自己的工作内存空间,然后对变量进行操作,操作完成后再将变量写回主内存,不能直接操作主内存中的变量,各个线程中的工作内存中存储着主内存中的变量副本拷贝

CPU 的18条

孤街浪徒 提交于 2019-12-26 05:02:37
1.主频 主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。CPU的主频=外频×倍频系数。很多人认为主频就决定着CPU的运行速度,这不仅是个片面的,而且对于 服务 器来讲,这个认识也出现了偏差。至今,没有一条确定的公式能够实现主频和实际的运算速度两者之间的数值关系,即使是两大处理器厂家Intel和AMD,在这点上也存在着很大的争议,我们从Intel的产品的发展趋势,可以看出Intel很注重加强自身主频的发展。像其他的处理器厂家,有人曾经拿过一快1G的全美达来做比较,它的运行效率相当于2G的Intel处理器。 所以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信号震荡的速度。在Intel的处理器产品中,我们也可以看到这样的例子:1 GHz Itanium芯片能够表现得差不多跟2.66 GHz Xeon/Opteron一样快,或是1.5 GHz Itanium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流水线的各方面的性能指标。 当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。 2.外频 外频是CPU的基准频率,单位也是MHz。CPU的外频决定着整块主板的运行速度。说白了,在台式机中,我们所说的超频,都是超CPU的外频(当然一般情况下

Linux发展史及常用基本指令

白昼怎懂夜的黑 提交于 2019-12-25 09:11:13
Linux发展史及常用基本指令 什么是Linux?    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它是一种自由和开放源代码的类UNIX操作系统,任何人都可以自由使用、完全不受任何限制。 Linux发展史 上世纪90年代,在Unix操作系统、MINIX操作系统、DOS操作系统有诸多弊端以及MacOS只能用于苹果计算机的情况下,在吸收了MINIX精华的基础上,Linus于在1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,在开源情况下,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。 Linux优点 (1)Linux由众多微内核组成,其源代码完全开源; (2)Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等

计算机组成与结构复习整理(五)

霸气de小男生 提交于 2019-12-24 01:27:53
指令系统与中央处理机组织 指令系统 基本概念 指令格式 一般格式 按指令所包含的地址个数将指令划分 指令长度 寻址方式 指令类型 指令类型 堆栈和堆栈存取方式 中央处理机组织 CPU的三种实现方式 CPU中的主要寄存器 单总线数据通路 CPU四项基本功能 CPU时序控制方式 CPU控制流程 一条完整指令的执行 ①Add (R3),R1 ②无条件转移指令的控制序列 CPU性能设计 指令系统 基本概念 ①程序员用各种语言编写的程序最后要翻译(解释或编译)成以指令形式表示的机器语言以后,才能在计算机上运行。计算机的指令有微指令、机器指令和宏指令之分。 微指令是微程序级的命令,属于硬件;宏指令是由若干机器指令组成的,属于软件;机器指令介于二者之间,因而是硬件和软件的界面。 ②一台计算机能执行的机器指令的集合统称位该机的指令系统。 指令格式 一般格式 操作码 地址码 OP D 按指令所包含的地址个数将指令划分 a.三地址指令:(D1)OP(D2)→ D3 b.二地址指令:(D1)OP(D2)→D2 c.单地址指令:(D)OP (A)→ A(累加寄存器) d.零地址指令:空操作、停机 指令长度 选取原则: ①指令长度应为存储器基本字长的整数倍。 ②指令字长应尽量短。 寻址方式 ①立即寻址:| OP | 操作数地址 | ②直接寻址:| OP | @间接地址 | ③间接寻址:| OP | Rx |

计算机三级嵌入式笔记

微笑、不失礼 提交于 2019-12-23 21:37:15
计算机三级嵌入式笔记 ARM汇编指令 LDR/STR LDR加载指令 LDR伪指令 LDR 的两种用法 ARM汇编指令 LDR/STR ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。 若想把数据从内存中某处读取到寄存器中,只能使用ldr: ldr r0 , 0x12345678 把0x12345678这个地址中的值存放到r0中 mov不能实现这个功 能,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中 还有一个就是ldr伪指令,虽然ldr伪指令和ARM的ldr指令很像,但是作用不太一样。ldr伪指令可以在立即数前加上=,以表示把一个值(一般是一个地址)写到某寄存器中 ldr r0 , = 0x12345678 把0x12345678这个值写到r0中,所以,ldr伪指令和 mov是比较相似的。只不过mov指令限制了立即数的长度为8位,也就是不能超过512。而ldr伪指令没有这个限制。如果使用ldr伪指令时,后面跟的 立即数没有超过8位,那么在实际汇编的时候该ldr伪指令是被转换为mov指令的。 LDR加载指令 LDR指令的格式为: LDR{条件} 目的寄存器,<存储器地址> LDR指令用亍从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用亍从存储器中读取32位的字数据到通用寄存器,然后对数据迕行处理

中断隐指令

杀马特。学长 韩版系。学妹 提交于 2019-12-22 05:40:27
中断隐指令指CPU响应中断之后,经过某些操作,转去执行中断服务程序的一种操作。 中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。其所完成的操作主要有: (1)保存断点 为了保证在中断服务程序执行完毕能正确返回原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。断点可以压入堆栈,也可以存入主存的特定单元中。 (2)暂不允许中断 暂不允许中断即关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器的内容)期间不被新的中断所打断,必须要关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。 并不是所有的计算机都在中断隐指令中由硬件自动地关中断,也有些计算机的这一操作是由软件(中断服务程序)来实现的。中断服务程序一般用来保存通用寄存器和状态寄存器的内容。 (3)引出中断服务程序 引出中断服务程序的实质就是取出中断服务程序的入口地址送程序计数器(PC)。对于向量中断和非向量中断,因此中断服务程序的方法是不相同的。 来源: CSDN 作者: 网络一线牵 珍惜这份缘 链接: https://blog.csdn.net/weixin_43838785/article/details/103642332

线程安全—可见性和有序性

馋奶兔 提交于 2019-12-21 18:57:04
在并发编程中,需要处理的两个关键问题: 线程之间如何通信 以及 线程之间如何同步 。 通信 是指线程之间以或者机制交换信息,java的并发采用的是共享内存模型,线程之间共享程序的公共状态,通过读写内存中的公共状态进行隐式通信。 同步 是是指程序中用于控制不同线程间操作发生相对顺序的机制。 最开始首先应该知道计算机中的 缓存 在其中起的作用 CPU Cache(高速缓存):由于计算机的存储设备与处理器的处理设备有着几个数量级的差距,所以现代计 算机都会加入一层读写速度与处理器处理速度接近相同的高级缓存来作为内存与处理器之间的缓冲,将运 算使用到的数据复制到缓存中,让运算能够快速的执行,当运算结束后,再从缓存同步到内存之中,这 样,CPU就不需要等待缓慢的内存读写了。 主(内)存:一个计算机包含一个主存,所有的CPU都可以访问主 存,主存比缓存容量大的多(CPU访问缓存层的速度快于访问主存的速度!但通常比访问内存寄存器的速度还是要慢点) 运作原理:通常情况下,当一个CPU要读取主存(RAM - Main Mernory)的时候,他会将主存中的数据读 取到CPU缓存中,甚至将缓存内容读到内部寄存器里面,然后再寄存器执行操作,当运行结束后,会 将寄存器中的值刷新回缓存中,并在某个时间点将值刷新回主存。 为什么需要CPU Cache? 答:CPU 的频率太快了,快到主存跟不上

ARM处理器和体系结构介绍(Cortex-A9)

↘锁芯ラ 提交于 2019-12-21 18:07:29
ARM(Advanced RISC Machines) 概述 :有三种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。 技术特征 体积小、低功耗、低成本、高性能。 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8/16位器件。 大量使用寄存器,指令执行速度更快。 大多数数据操作都在寄存器中完成。 寻址方式灵活简单,执行效率高。 指令长度固定。 嵌入式RISC微处理器 概述 :RISC(Reduced Instruction Set Computer)是精简指令集计算机,RISC把着眼点放在如何使计算机的结构更加简单和如何使计算机的处理速度更加快速上。RISC选取了使用频率最高的简单指令,抛弃复杂指令,固定指令长度,减少指令格式和寻址方式,不用或少用微码控制。 嵌入式CISC微处理器 概述 :传统的复杂指令级计算机(CISC)更侧重于硬件执行指令的功能性,使CISC指令及处理器的硬件结构更加复杂。 RISC和CISC的区别 ARM的基本数据类型 ARM采用32位架构,ARM的基本数据类型有以下3种。 Byte:字节,8bit。 Halfword:半字,16bit(半字必须与2字节边界对齐)。 Word:字,32bit(字必须与4字节边界对齐)。 注意 ARM 系统结构 v4 以上版本支持以上3种数据类型,v4 以前版本仅支持字节和字。

计算机基础系列一:计算机硬件

 ̄綄美尐妖づ 提交于 2019-12-21 04:41:30
一 为何要学习计算机基础 python是编程语言,即python是语言 语言有英语、法语、葡萄牙语等,但凡是语言,都是用来沟通的介质。 程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质 程序员要想让计算机工作,必须知道计算机能干什么,怎么干的,这也就是我们必须学习计算机基础的原因 然而光有编程语言和硬件也并不能满足大家的编程需求,为什么这么说呢? 程序用编程语言写程序,最终开发出的结果就是一个软件,既然是软件,那就与腾讯qq、暴风影音、快播等软件没有区别了。这些软件必须运行在操作系统之上,你肯定会问:为何要有操作系统呢?没错,远古时代的程序员确实是在没有操作系统的环境下,用编程语言之间操作硬件来编程的,你可能觉得这没有问题,但其实问题是相当严重的,因为此时你必须掌握如何操作硬件的所有具体细节,比如如何具体操作硬盘(现在你得把硬盘拆开,然后你能看见的所有的东西,你都得研究明白,因为你编程时要用到它),这就严重影响了开发的效率,操作系统的出现就是运行于硬件之上,来控制硬件的,我们开发时,只需要调用操作系统为我们提供的简单而优雅的接口就可以了 所以一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的python编程之路分为计算机硬件基础,操作系统基础,和python编程三部分,就让我们先从计算机硬件学起吧 二 本节目标

linux进阶指令

大憨熊 提交于 2019-12-21 00:06:39
    1、df     查看磁盘空间        2、free    查看内存使用       -m   表示以mb位单位查看             total   总大小             used   使用过的空间             free   空闲的空间             shared  共享内存             buffers  输出缓冲区             cached  缓存内存     3、head   查看文件的前n行,若n不指定则默认显示前十行       语法:  head -n 文件     4、tail    查看文件的末n行,若n不指定则默认显示末十行       语法:  tail -n 文件       -f    可以通过tail指令查看动态变化     5、less    查看文件(空格翻页,上下键一行一行,可自动输入行翻)     6、more    一页一页显示(原理同less)         7、wc     统计文件内容信息       -lwc    需要统计的文件路径       -l      表示lines,行数       -w      表示word,单词数     8、date    表示操作时间日期(读取,设置)       语法1:#date 输出的形式:2018年 12月 26日