cpu时间

DMA原理

半腔热情 提交于 2020-01-07 08:44:07
1.DMA请求 CPU对DMA控制器初始化,并向 I/O接口 发出操作命令,I/O接口提出DMA请求。 2.DMA响应   DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。 3.DMA传输   DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。   在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。 4.DMA结束   当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。   由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。    DMA(Direct Memory Access

Callable,阻塞队列,线程池问题

浪子不回头ぞ 提交于 2020-01-07 06:56:32
一.说说Java创建多线程的方法   1. 通过继承Thread类实现run方法   2. 通过实现Runnable接口   3. 通过实现Callable接口   4. 通过线程池获取 二. 可以写一个Callable的案例吗?如何调用Callable接口 /*是一个带返回值的多线程类,如果需要有线程返回的结果,就需要使用此类*/ class MyThread implements Callable<Integer> { @Override public Integer call() { return 1000; } } public static void main(String[] args) throws Exception{ /*Thread 构造方法传入 Runnable , FutureTask 构造方法传入 Callable , FutureTask 继承于 RunnableFuture 继承于 Runnable 所以 Thread通过传入FutureTask即Runnable的实现类来启动Callable线程, 透传思想,传接口,不传具体的实现类,可以保证灵活性,(适配器模式) */ FutureTask<Integer> ft = new FutureTask(new MyThread());// 一个是main线程,一个是t1线程 new Thread(ft,

CSAPP书上一些图的相关整理

岁酱吖の 提交于 2020-01-07 04:59:39
1.存储器层次结构 关于局部性的理解详见 https://www.jianshu.com/p/fa9aa1db0c0f 主存 高速缓存 和CPU寄存器 按地址访问 磁盘 按 块访问 光盘顺序访问 金字塔从下往上单位容量越小 造价越高 性能越好 访问速度越快 在任何时刻 第k层的缓存包括第k+1层块的一个子集的副本 IDEAL 价格和容量接近于最下层,且使得性能最好 2.磁盘 DRAM CPU速度之间逐渐增大的差距 DRAM 和磁盘 与CPU的性能差距很大 现代计算机频繁使用基于SRAM高速缓存,试图弥补CPU和内存之间的差距。 这种方法行之有效是因为局部性原理。 内存与外存差5个数量级 内存体系跟着CPU的发展速度在离CPU越近的地方补全CPU和DRAM之间的访问速度的差距。 2004年 多核的出现,有效周期时间以接近以前的速率持续下降。 CPU太快了,而磁盘太慢了。它们是不能够直接通信的 ,我们可以加一层过度。这就是内存的作用。 实际上,一般情况下,内存的读写速度比磁盘快几十万倍左右。所以它终于够资格和CPU直接通信了。 CPU执行任务时,只与内存通信,它从内存中获取指令/数据或写回数据。内存再与磁盘通行,内存从磁盘读取数据/指令或将数据写回磁盘。 TLB set-associative virtual memory fuuly-associative 来源: https:/

VMware与Centos系统安装之重置root密码

那年仲夏 提交于 2020-01-07 03:49:50
VMware与Centos系统安装之重置root密码 今日任务 1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟机(centos) 选择性 pc可以选择 -纯系统 Linux/windows -双系统 Windows+Linux -虚拟化技术 Windows+vmware workstation 服务器 -物理机纯系统 -物理机+vmware(vmware esxi) -物理机+docker 安装 -简易安装 -自定义安装 -快照 下载centos系统ISO镜像 要安装centos系统,就必须得有centos系统软件安装程序,可以通过浏览器访问centos官网http://www.centos.org,然后找到Downloads - > mirrors链接,点击后进入下载,但是由于这是国外的网址,下载速度肯定受限。 因此可以使用国内的镜像源 https://opsx.alibaba.com/mirror # 阿里云官方镜像站 iso下载地址(此DVD映像包含可以使用该软件安装的所有软件包安装程序。这是大多数用户的推荐图像。):https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

JVM探秘:垃圾收集器

前提是你 提交于 2020-01-06 23:15:34
本系列笔记主要基于《深入理解Java虚拟机: JVM 高级特性与最佳实践 第2版》,是这本书的读书笔记。 垃圾收集器 垃圾收集算法是是内存回收的方法论,垃圾收集器是内存回收的具体实现。不同的虚拟机会有不同的垃圾收集器的实现,我们主要讨论的是默认的HotSpot虚拟机,这个虚拟机包含的垃圾收集器如下图; 如上图所示,一共有7种垃圾收集器,如果两个垃圾收集器之间有双箭头连线,则两个垃圾收集器可搭配使用。上面是新生代的收集器,下面是老年代的收集器。每个垃圾收集器都有各自适合的使用场景。 Serial 收集器 Serial 是一个“单线程”的 新生代 收集器,使用 复制 算法,它只会使用一个CPU或者一条收集器线程去完成垃圾收集工作,并且它在垃圾收集时,必须 暂停所有其他的工作线程 ,直到它收集结束。“Stop The World”会在用户不可见的情况下,把用户的工作线程全部停掉,这往往是令人难以接受的。 下图是 Serial/Serial Old 收集器运行示意图: 上图中,新生代是 Serial 收集器采用 复制 算法,老年代是 Serial Old 收集器采用 标记-整理 算法。Serial虽然是一个缺点鲜明的收集器,但它依然是虚拟机在Client模式下的默认收集器,它也有优点,比如简单高效(与其他收集器单线程相比),对于单个CPU来说,Serial由于没有线程交互的开销,效率比较高

MySQL优化总结

点点圈 提交于 2020-01-06 22:45:11
前言 优化有风险,涉足需谨慎!!! 1、优化可能带来的问题? 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。 优化手段本来就有很大的风险,只不过我们可能没有能力意识到和预见到! 任何的技术可以解决一个问题,但必然存在带来一个问题的风险! 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果,保持现状或出现更差的情况都是失败。 2、优化的需求 稳定性和业务的持续性,通常比性能更重要。 优化不可避免涉及到变更,变更就有风险。 优化使性能变好,维持和变差使等概率事件。 切记优化,应该是各部门协同参与的工作,任何单一部门都不能对数据库进行优化。 所有优化工作,是由业务需要驱使的。 3、优化由谁参与 在进行数据库优化时,应该由DBA、业务部门代表、应用程序设计人员、应用程序开发人员、运维等相关人员共同参与。 4、优化思路 在数据库优化上由两个主要方面:即安全与性能。 安全:数据可持续性。 性能:数据的高性能访问。 5、优化的范围有哪些? 存储、主机和操作系统方面: 主机架构稳定性; I/O规划及配置; Swap交换分区; OS内核参数和网络问题; 应用程序方面; 应用程序稳定性; SQL语句性能; 串行访问资源; 性能欠佳会话管理; 这个应用适不适合用MySQL; 数据库优化方面: 内存; 数据库结构(物理&逻辑); 实例配置; 注:不管是在设计系统

top命令的详解

狂风中的少年 提交于 2020-01-06 21:49:04
top命令详解 top命令是显示linux进程信息 top视图分为两部分:操作系统资源概况信息和进程信息。首先分析资源概况中各个参数的含义,再来分析下进程信息中各个参数含义。 第一行 18:47:06 是操作系统当前时间 up 1:50 运行1个小时50分钟 users 上图是3个用户在线 load average:平均负载 第二行 tasks:任务进程 total:系统当前的进程数 running: 当前正在运行的进程数 sleeping 当前睡眠中的进程数 第三行 cpu(s):%Cpu(s) 表示CPU使用百分比,按照时间占用计算,单位s us: 用户空间占用CPU时间百分比,如果是多核,这个数值表示占用的平均百分比,可以按1进行多核统计和平均统计切换 sy: 内核空间占用CPU时间百分比,如果是多核,同上 ni 用户进程空间内改变过优先级的进程占用CPU时间百分比 id: 空闲时间占用CPU百分比 wa: 等待输入输出的CPU时间百分比 hi: CPU服务于硬件中断的CPU时间百分比 si: CPU服务于软件中断的CPU时间百分比 注:时间占用百分比=该种类型操作消耗CPU时间/top刷新间隔时间。top 3s刷新一次,用户空间进程在这3s内使用了CPU 1.5s,那么us等于50%=1.5s/3s st:这一显示项单位为百分比

nginx入门

笑着哭i 提交于 2020-01-06 20:56:44
nginx特点 占用cpu/内存资源少,相对apache并发处理能力强;nginx采用epoll事件响应模式,apache使用遍历select模式。 nginx安装 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 安装 pcre? nginx 要在 rewrite 时要解析正则表达式 ,PCRE 是正则解析库 //下载tar包 wget http://nginx.org/download/nginx-1.13.7.tar.gz tar -xvf nginx-1.13.7.tar.gz 抹去nginx的版本,该步非必需;有时我们打开一个网站的时候会显示404,后面跟一个nginx1.7之类的信息,去掉后外部就看不到nginx的版本了,安全 [root@phoenix nginx-1.13.7]# cat src/core/nginx.h /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGINX_H_INCLUDED_ #define _NGINX_H_INCLUDED_ #define nginx_version 1013007 #define NGINX_VERSION "1.13.7"

第 5 章 进程调度

穿精又带淫゛_ 提交于 2020-01-06 20:51:27
  CPU调度是多道程序操作系统的基础。 5.1 CPU调度程序   CPU调度的任务是,从就绪队列中选择一个等待进程,并未其分配CPU。进程选择采用短期调度程序,调度程序从内存中选择一个能够执行的进程并为其分配CPU。   就绪队列不必是FIFO队列,队列内的记录通常为进程控制块PCB。 5.1.1 抢占调度   需要CPU调度的情况可分为以下四种: 当一个进程从运行状态切换到等待状态时(例如,I/O请求,或wait()调用以便等待子进程的终止) 当一个进程从运行状态切换到就绪状态时(例如出现中断时) 当一个进程从等待状态切换到就绪状态时(例如I/O完成) 当一个进程终止时   对于第一和第四中情况,除了调度没有选择。一个新进程必须被选择执行。   如果调度只发生在第一和第四种情况下,则调度方案称为非抢占的或协作的;否则,调度方案称为抢占的。在非抢占调度下,一旦某个进程分配到CPU,该进程就会一直使用CPU,直到它终止或切换到等待状态。 5.1.2 调度程序   与CPU调度功能有关的另一个组件是调度程序。调度程序是一个模块,用来将CPU控制交给短期调度程序选择的进程。这个功能包括: 切换上下文 切换到用户模式 跳转到用户程序的合适位置,以便重新启动程序   调度程序应尽可能块,因为在每次进程切换时都要使用。调度程序停止一个进程而启动另一个进程所需要的时间称为调度延迟。 5.2

熔断、幽灵分析以及模拟攻击、防范

这一生的挚爱 提交于 2020-01-06 20:29:10
熔断、幽灵分析以及模拟攻击、防范 背景 主要技术分析 当代cpu的存取器体系结构 乱序执行 分支预测 边信道攻击 熔断、幽灵攻击分析 熔断 幽灵 补丁防范 补丁带来的影响 攻击演示 源码展示 背景 当代cpu为了提高性能,而使用了了两项看似毫无纰漏的技术:乱序执行和分支预测。拥有这两项技术,cpu就可以不再局限于只是按顺序执行操作、也不在局限于等待条件判断完成后再执行语句的主题语句,这样cpu就可以超前执行那些相关性不强的代码或者先将语句中变量加载到内存、cache,充分的利用cpu中的空闲单元,极大的提高cpu的效率。 对于乱序执行,初看起来好似没有纰漏,但是对于分支预测,问题就出来了:如果分支预测失败,怎么办?Intel等cpu生产商也对这种情况做了除理,如果分支预测失败,那么cpu就会回滚到分支预测前的状态,还原本应有的寄存器等,这样程序就可以从分支判断再次执行。 可现实是,这两项技术都在未判断是否有权限访问数据的时候就,对将数据加载到了cache。如果分支预测失败,虽然cpu回滚了,但是我的cache仍然没有回滚,这样就导致了信息的泄露。 主要技术分析 当代cpu的存储器体系结构: 根据课程我们知道,cpu在访问内存时,会先将内存中的数据加载到cache中,再从cache中访问。cpu在访问cache时的速度要远远快于访问主存中的数据