计算机指令

虚拟化技术原理(CPU、内存、IO)

泄露秘密 提交于 2019-11-28 12:56:43
本文来自:http://www.ywnds.com/?p=5856 虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一。 云计算的云端系统, 其实质上就是一个大型的分布式系统。 虚拟化通过在一个物理平台上虚拟出更多的虚拟平台, 而其中的每一个虚拟平台则可以作为独立的终端加入云端的分布式系统。 比起直接使用物理平台, 虚拟化在资源的有效利用、 动态调配和高可靠性方面有着巨大的优势。 利用虚拟化, 企业不必抛弃现有的基础架构即可构建全新的信息基础架构,从而更加充分地利用原有的IT投资。 虚拟化技术 虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理、优化资源的解决方案。 在X86平台虚拟化技术中,新引入的虚拟化层通常称为虚拟机监控器(Virtual MachineMonitor, VMM), 也叫做Hypervisor。 虚拟机监控器运行的环境,也就是真实的物理平台,称之为宿主机。而虚拟出来的平台通常称为客户机,里面运行的系统对应地也称为客户机操作系统,如下图: 1974年,Popek和Goldberg在一篇论文中定义了“经典虚拟化(Classical virtualization)”的基本需求,他们认为,一款真正意义上的VMM至少要符合三个方面的标准: 等价执行(Equivalient execution)

我的全栈之路-Java基础之Java概述与开发环境搭建

夙愿已清 提交于 2019-11-28 10:44:20
我的全栈之路-Java基础之Java概述与开发环境搭建 我的全栈之路 1.1 信息技术发展趋势 目前信息技术主要经历了互联网、移动互联网以及以大数据、云计算、物联网、人工智能区块为代表的新兴技术三个阶段。 互联网 互联网自从20世纪90年代逐渐兴起,主要是通过网络连接了世界各地的PC机,笔记本以及背后提供数据服务的大型服务器集群。 其中绝大多数PC机都运行着Windows,macOS操作系统,而服务器主要是以类Unix(CentOS,Ubuntu)占据主要市场。 依靠互联网成长起来的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。 移动互联网 移动互联网主要从2010开始爆发式增长,主要是通过网络连接了世界各地的移动设备(最典型的就是手机),它们绝大多数都运行着Android,iOS操作系统。 依靠移动互联网成长起来的公司有小米、美团、滴滴、蚂蚁金服。 大数据、云计算 随着用户的爆发式增长,以海量数据为基础的大数据、云计算技术在Badu、Alibaba、Tencent等大型互联网公司有着广泛的商业应用场景。 物联网 物联网会以手机作为中枢,通过物联网连接所有的智能设备,包括智能家居、汽车、电视等嵌入式设备,目前小米、华为等在智能家居、电视、汽车等领域广泛布局,2019年8月华为发布了鸿蒙系统。 人工智能 人工智能(AI

一条指令是怎么运行的,一个小的指令系统是怎么运行的

和自甴很熟 提交于 2019-11-28 08:38:58
简单的指令系统【指令的真正内容】 什么是指令系统体系结构 在硬件攻城狮和软件程序员一起建一个计算机之前,需要一个共同的系统可以保证写的程序在另一个设计的硬件上运行,于是双方在搭建一个计算机之前需要制定一个共同的指令系统 一条简单的指令:ADD R M 一个简单的指令系统: ADD R M LOAD R M STORE M R JMP L 备注:M指存储器,R指寄存器 图一 想要了解指令的具体格式吗? 每条指令规定等长,占2个字节: 图二 草稿图 接下来运行一个任务 1.将M1中的内容 与M2中的内容相加 -> M3 i.M1 -> Rx [M1中的内容先放到R中,计算机没有将存储器中的内容直接相加的指令,据说比较复杂,所以先放一个到J寄存器中] ii. Rx 中内容 与M2中内容相加 [将CPU里边Rx和存储器里边M2中内容相加] iii. 结果-> Rx v. Rx ->M3 [JMP指令跳到下一条指令] 图三 草稿图三:汇编语言的真身图 左边部分就是汇编语言(basic) 小结: 1.指令系统是一条计算机软硬件搭建前要统一指定的东西,比如说按什么编址,然后确定存储器中单元分配的字节,硬件工程师好做,软件的也可以编写指令的机器代码(联系前面的学的) 2.一条简单的指令ADD R M 3.知道了一条指令的具体形式,真正的机器代码的格式 原来一条机器指令的前操作码的具体内容是

了解一个静态的结构一个有效的方式是观察其动态的过程

老子叫甜甜 提交于 2019-11-28 08:38:53
一条指令的运行【一条指令在计算机中是怎么被运行的】 想要了解这个静态的结构,一个有效的方方法是观察其动态的运行过程 接下来是模型机是怎么运行的 执行指令是运行过程的核心,理解一条指令是如何被执行的 一,取指:控制器将指定地址->存,存得到给定地址和指令内容->控制器 例子: 指令格式:ADD R0 [6] ([]:存储单元中的内容) 具体:通用寄存器R0 + [6] = 结果 更新到R0 草稿图 运行前的原状态:存储器中[6] 0010 存放数字2的机器码, CPU中指令放PC,另一个操作书放R0 运行过程:从PC出发,指令的机器码传到地址寄存器MAR,地址寄存器MAR经过地址总线(同时,cpu的控制电路传送read信号), MAD接到指令地址码后经过地址译码在存储单元里找到[10101010](我们假设ADD指令) ADD指令找到后送到数据寄存器MDR中,MDR经过数据总线送到cpu中的MDR(同时,存储器的控制逻辑传发送ready信号), 在cpu中,MDR经过内部总线送到了IR中(指令寄存器)。取指基本完成。 随即更新PC中的指令,取指完成 今日小结: 到这里,原来取到一条指令的具体过程是这样的 取址 = 指令从IR -> 存储器 -> cpu = 通过指令地址找地址到找到地址后更新下一条指令结束取指,这就是一条指令取的过程。 来源: https://www.cnblogs

java多线程:基础原理

送分小仙女□ 提交于 2019-11-28 08:07:24
java多线程:基础原理 java支持多线程编程,为了能够深入理解java多线程机制,以及解决多线程的安全问题,本文介绍多线程的基础知识和原理分析。 Part1 概念总结 线程的概念 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。 线程vs进程: A.多个进程的内部数据和状态都是完全独立的,(进程就是执行中的程序,程序是静态的概念,进程是动态的概念)。而多线程是共享一块内存空间和一组系统资源的,有可能互相影响(多个线程可以在一个进程中) B.线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 多线程编程 在单个程序中可以同时运行多个不同的线程执行不同的任务。但是具体执行哪个线程是由cpu随机决定的。 多线程编程的目的,就是“最大限度地利用CPU资源”,当某一线程的处理不需要占用CPU而只和I/O等资源打交道时

缓冲区溢出实例(一)--Windows

不羁的心 提交于 2019-11-28 06:16:38
一、基本概念 缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获取服务器控制权限等。 在Windows XP或2k3 server中的SLMail 5.5.0 Mail Server程序的POP3 PASS命令存在缓冲区溢出漏洞,无需身份验证实现远程代码执行。 注意,Win7以上系统的防范机制可有效防止该缓冲区漏洞的利用: DEP:阻止代码从数据页被执行; ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化。 二、实验环境准备: SLMail 5.5.0 Mail Server ImmunityDebugger_1_85_setup.exe mona.py 下载地址: https://slmail.software.informer.com/download/ https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/Immunity-Debugger.shtml https://github.com/corelan/mona mona手册 https://www.corelan.be/index.php/2011/07/14/mona-py-the

linux常用指令

两盒软妹~` 提交于 2019-11-28 06:02:06
Linux通用的格式       # 指令主体 (空格) [ 选项] (空格) [ 操作对象] 这就是 Linux 系统的命令提示符。那么,这个提示符的含义是什么呢? 在[root@localhost ~]#中 []:这是提示符的分隔符号,没有特殊含义。 root:显示的是当前的登录用户,当前使用的是 root 用户登录。 @:分隔符号,没有特殊含义。 localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。 ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。 #:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $ (1) ls指令 含义:ls (list) 用法1 :#ls 含义:列出当前工作目录下的所有文件/文件夹的名称 用法2 :#ls 路径 含义:列出指定路径下的所有文件/文件夹的名称 绝对路径指的是从根目录(/)开始写起的文件或目录名称, 相对路径则指的是相对于当前路径的写法。 用法3 :#ls 选项 路径 含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。 常见的语法: #ls -l 路径 #ls -la 路径 选项解释: -h (human)以容易理解的格式列出文件大小 (例如 1K 234M 2G) -S (SIZE

Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

心不动则不痛 提交于 2019-11-28 04:55:48
首先介绍一些乐观锁与悲观锁:   悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如 Java里面的同步原语 synchronized关键字的实现也是悲观锁 。   乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁, 但是在更新的时候会判断一下在此期间别人有没有去更新这个数据 ,可以使用版本号等机制。 乐观锁适用于多读的应用类型 ,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在 Java中java.util.concurrent.atomic包下面的 原子变量类就是使用了乐观锁的一种实现方式CAS实现的 。 乐观锁的一种实现方式-CAS(Compare and Swap 比较并交换):   锁存在的问题:      Java在JDK1.5之前都是靠 synchronized关键字保证同步的 ,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程持有共享变量的锁,都采用独占的方式来访问这些变量。这就是一种独占锁,独占锁其实就是一种悲观锁,所以可以说 synchronized 是悲观锁。  

telnet指令研究—以网络聊天程序为例

吃可爱长大的小学妹 提交于 2019-11-28 04:32:26
一、telnet指令   Telnet取名自Telecommunications和Networks的联合缩写,是早期个人计算机上连接到服务器主机的一个网络指令,由于存在安全问题,现在已经很少被使用。在windows操作系统中仍然存在这个指令,但是默认被系统禁用,可以通过以下步骤来打开: 控制面板 》 程序和功能 》 启用或关闭Windows功能 》 勾选“Telnet Client”复选框 》 确定   在Windos Powershell中输入telnet是否已经启用: ~/userName > telnet ~/userName > 欢迎使用 Microsoft Telnet Client ! Escape 字符为 'CTRL+]' Mirosoft Telnet >   使用 ?/help 查看可用操作: Microsoft Telnet > ?/help 命令可能是缩写。支持的命令为: c - close 关闭当前连接 d - display 显示操作参数 o - open hostname [port] 连接到主机(默认端口 23)。 q - quit 退出 telnet set - set 设置选项(键入 'set ?' 获得列表) sen - send 将字符串发送到服务器 st - status 打印状态信息 u - unset 解除设置选项(键入 'set ?'

计算机组成原理之计算机的简化结构

不羁的心 提交于 2019-11-28 04:15:46
首先,我们开门见山 先来了解模型机的概念 模型机:计算机结构的简化模型。(这样有利于计算机结构的理解) 如图,我们可以知道:计算机主要由两个部件和系统总线拼成 [系统总线:如图] CPU和存储器之间: 1.访问 -- 内存 -- 地址总线 -- 地址总线决定了CPU可以访问的物理地址空间(cpu到底使用多大容量的内存) cpu发来的地址存放的位置在MAR -—— 存储器地址寄存器 顾名思义,存放的是cpu正在读或写的存储单元 对应的数据存放的位置在MDR —— 接受来自cpu的读写信号 或者向cpu反馈传输已经完成的信号 2.传送 -- 数据 -- 数据总线 -- 存放cpu正在读或者即将写入的数据 左半部分存储器: 存储器是由一个个存储单元组成的。 计算机的编制方式: 如果按字节编址,那么一个单元分配8个位. 右半部CPU: cpu内部需要执行指令,翻译地址,执行控制 计算机中的指令不不能直接执行,需要通过指令译码确定是哪一条指令,后发送给控制单元进行操作 cpu内部需要执行指令,翻译地址,执行控制 计算机中的指令不不能直接执行,需要通过指令译码确定是哪一条指令,后发送给控制单元进行操作 1.需要存放当前指令 -- IR -- 指令寄存器 -- 2.需要存放下一条指令 -- PC --程序计数器 -- 3.指令的翻译,确定指令的操作 -- 指令译码 -- 4.控制电路 --