cpu时间

Python 之进程

牧云@^-^@ 提交于 2020-01-15 15:15:30
理论知识 操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统, 点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 必备的理论基础: 一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 二 多道技术: 1.产生背景:针对单核,实现并发 ps:现在的主机一般是多核,那么每个核都会利用多道技术 有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,且会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。 2.空间上的复用:如内存中同时有多道程序 3.时间上的复用:复用一个cpu的时间片 强调:遇到io切,占用cpu时间过长也切,核心在于切之前将进程的状态保存下来,这样才能保证下次切换回来时,能基于上次切走的位置继续运行 什么是进程 进程(Process

Java多线程面试题整理

◇◆丶佛笑我妖孽 提交于 2020-01-15 09:38:38
1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。 3) 如何在Java中实现线程? 1)java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行, 2)由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。 3). 实现Callable接口通过FutureTask包装器来创建Thread线程 Callable接口(也只有一个方法)定义如下: public interface Callable<V> { V call() throws Exception; } public class SomeCallable<V>

Linux | top

假装没事ソ 提交于 2020-01-15 07:39:20
top : 实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。 针对如图学习下: 第一行top:任务队列信息,同 uptime 命令的执行结果一致 top - 17:18:47 up 21 days, 51 min, 4 users, load average: 0.06, 0.03, 0.05 系统时间:17:18:47 运行时间:up 21 days, 51 min, 当前登录用户: 4 users 负载均衡(uptime) load average: 0.06, 0.03, 0.05 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转。 第二行Tasks: 任务(进程) Tasks: 393 total, 1 running, 384 sleeping, 8 stopped, 0 zombie 总进程: 393 total, 运行:1 running, 休眠:384 sleeping, 停止: 8 stopped, 僵尸进程: 0 zombie 第三行%Cpu(s):CPU状态信息 %Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9

1.1 Java基础

▼魔方 西西 提交于 2020-01-15 07:27:49
目录 1.1.1 Java程序运行原理分析 1.1.2线程状态 1.1.3线程中止 1.1.4内存屏障和CPU缓存 1.1.5线程通信 1.1.6线程封闭 1.1.7线程池 1.1.1 Java程序运行原理分析 1、 class文件内容 魔数 :0xCAFEBABE 版本 :JDK版本 访问标志 :类的访问修饰符(public) 常量池 当前类 超级类 接口 字段 方法 属性 2、 JVM运行时数据区 方法区 :类信息、常量、静态变量、编译后的代码 堆内存 :创建的对象、OutOfMemoryError 虚拟机栈 :多个线程 一个线程一个私有空间 一个线程执行多个方法 一个方法对应多个栈帧 栈内存默认最大是1M 为JAVA代码准备的 本地方法栈 :与虚拟机栈功能类似 为Native方法准备的 程序计数器 :当前线程字节码指令执行位置 栈帧 :局部变量表、操作数栈、动态链接、方法返回地址、附加信息 线程共享 ( 主内存 ):方法区、堆内存 线程独占 ( 工作区 ):虚拟机栈、本地方法栈、程序计数器 1.1.2线程状态 线程的 6 个状态 New :尚未启动的状态(没有调用start方法) Runnable :CPU正在执行、可运行(等待CPU调动) Blocked :线程阻塞等待锁( synchronized ) Waiting :等待( 没有等待时间 ,比如wait/join)

kubernetes cpu限制参数说明

社会主义新天地 提交于 2020-01-15 05:09:23
docker CPU限制参数 Option Description --cpus=<value> Specify how much of the available CPU resources a container can use. For instance, if the host machine has two CPUs and you set --cpus="1.5", the container is guaranteed at most one and a half of the CPUs. This is the equivalent of setting --cpu-period="100000" and --cpu-quota="150000". Available in Docker 1.13 and higher. --cpu-period=<value> Specify the CPU CFS scheduler period, which is used alongside--cpu-quota. Defaults to 100 micro-seconds. Most users do not change this from the default. If you use Docker 1.13 or higher, use --cpusinstead.

CPU详解:电脑与服务器有何不同?

时光总嘲笑我的痴心妄想 提交于 2020-01-15 04:36:11
中央处理器 (英语缩写:CPU)是计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。1970年代以前,中央处理器由多个独立单元构成,后来发展出由集成电路制造的中央处理器,这些高度收縮的元件就是所謂的微处理器,其中分出的中央处理器最为复杂的电路可以做成单一微小功能强大的单元。 cpu的主要功能 cpu的内部结构可分为控制单元,逻辑单元和存储单元三大部分。cpu的工作原理就象一个工厂对产品的加工过程:进入工厂的原料(指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元)。 1.处理指令 英文Processing instructions,这是指控制程序中指令的执行顺序。程序中的各指令之间是有严格顺序的,必须严格按程序规定的顺序执行,才能保证计算机系统工作的正确性。 2.执行操作 英文Perform an action,一条指令的功能往往是由计算机中的部件执行一系列的操作来实现的。CPU要根据指令的功能,产生相应的操作控制信号,发给相应的部件,从而控制这些部件按指令的要求进行动作。 3.控制时间 英文Control time,时间控制就是对各种操作实施时间上的定时。在一条指令的执行过程中,在什么时间做什么操作均应受到严格的控制。只有这样,计算机才能有条不紊地工作。 4.处理数据

多线程面试题

血红的双手。 提交于 2020-01-15 02:21:28
多线程面试题 什么是活锁、饥饿、无锁、死锁? 死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现 了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等 对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A 同学抢了 B 同学的钢笔,B 同学抢了 A 同学的书,两个人都相互占用对方的东西,都在让对方先还给自己自己再还,这样一直争执下去等待对方还而 又得不到解决, 老师知道此事后就让他们相互还给对方,这样在外力的干预下他们 才解决,当然这只是个例子没有老师他们也能很好解决,计算机不像人如果发现这 种情况没有外力干预还是会一直阻塞下去的。 活锁 活锁这个概念大家应该很少有人听说或理解它的概念,而在多线程中这确实存在。 活锁恰恰与死锁相反,死锁是大家都拿不到资源都占用着对方的资源,而活锁是拿 到资源却又相互释放不执行。 当多线程中出现了相互谦让,都主动将资源释放给别 的线程使用,这样这个资源在多个线程之间跳动而又得不到执行,这就是活锁。 饥饿 我们知道多线程执行中有线程优先级这个东西,优先级高的线程能够插队并优先执 行,这样如果优先级高的线程一直抢占优先级低线程的资源,导致低优先级线程无 法得到执行,这就是饥饿。 当然还有一种饥饿的情况

CPU指令集架构基础学习

你说的曾经没有我的故事 提交于 2020-01-14 23:17:51
在最初接触C/C++的时候,我对程序编译后的指令非常着迷,循序渐进的学习了C/C++语言编译器生成汇编语言的模式。 就像是语言翻译一样,我们需要做到直接阅读x86等汇编代码,并且能够将其还原成原始的C/C++语句,这是学习逆向最有效的方法。 CPU是执行程序机器码的硬件单元,相关概念包括以下几项: **指令码:**是CPU处理的底层命令,典型的底层命令有:将数据在寄存器之间转移,操作内存,计算数值等指令,每一类CPU都有自己的指令集架构,CPU品牌有Intel,AMD,IBM和Cyrix,IDT,VIA威盛,国产龙芯等。 **汇编语言:**为了让程序员少掉头发而创造出来的,是人类可以易于读写。 **CPU寄存器:**每一种CPU都有其固定的通用寄存器(GPR),x86的CPU中有8个GPR,x64里面有16个GPR,ARM中有16个GPR,CPU寄存器就是一种存储单元,他可以无差别存储所有类型的临时变量,如果写一个程序只用到了8个32位变量,CPU自带的寄存器就可以完成任务。 需要一种将高级编程语言转成CPU可以处理的底层机器语言,这种程序就是编译器(Compiler)。 0x01 指令集架构 x86的指令集架构中,opcode(汇编指令对应的机器码)长度是不同的。 ARM属于RISC(精简指令集)架构 CPU,这种指令集在设计之初就力图保持各个opcode长度一致,最初的时候

005多线程Thread

旧巷老猫 提交于 2020-01-14 21:58:07
多线程Thread 多进程概述 进程 多线程 线程调度 线程调度概述 线程优先级 设置对象优先级 线程控制:其他方法 线程睡眠sleep 线程加入 join(): 线程礼让,暂停当前线程,执行其他线程 后台线程 中断线程 线程的生命周期 实现多线程 1.继承Thread类 线程名称 获取线程名称 设置线程名称:2种 2.实现Runnable接口(常用) 概述 实现 线程安全问题 实现卖电影票案例(不安全) 方式1:继承Thread类 方式2:实现Runnable接口 问题分析:同票和负数票 同步(synchronized) 同步概述 同步方法 同步代码块 买票同步代码块 同步方法 买票同步方法 方法1 方法2 方法3:静态方法锁 银行存钱案例 Lock锁(JDK5之后) Lock锁卖票案例 线程死锁 死锁问题及其代码 死锁案例 方法1 方法2: 线程间通信 线程间通信概述 等待/唤醒机制 生产消费:加入等待唤醒机制,加入判断** 方法1(更好): 方法2: 优化生产消费问题 多生产者,多消费者的问题。烤鸭生产一只消费一只 Condition等待/唤醒机制 优化生产消费问题 线程组ThreadGroup 概述 获取线程组,名字 修改线程组 线程池 概述 Callable接口:创建线程3 1.求和案例 匿名内部类方式使用多线程 定时器 循环一次 循环调用 案例

“FPGA+云"助力高性能计算

瘦欲@ 提交于 2020-01-14 13:40:32
用AI防鲨鱼、用AI学写中国书法、用AI预测人类死亡时间、用AI审判罪犯……在人工智能方兴未艾的今天,越来越廉价和普及的AI领域真的是什么都不值钱,除了想象力。那在这无所不能的AI盛世,一定没道理让算力限制我们的想象力,更没道理让算力限制了我们的生产力。 从CPU到CPU+,从+GPU到+FPGA 随着通用处理器(CPU)的摩尔定律已入暮年,从美国的微软、亚马逊到中国的BAT、华为,几乎所有的互联网巨头们都在补充他们的标准服务器芯片——CPU,使用可替代的硅来追赶在人工智能领域的急速变化。2012年,微软开始将支撑了通讯行业二十年高速发展的可编程芯片,即FPGA用在其搜索业务——Bings上,且公布FPGA相比于CPU在处理Bing 的自定义算法时快出40倍,整个系统比Bing 现有的系统快出两倍,因此其可以将当前已经投入使用的服务器数量减少一半。甚至在接下来的几年里,几乎任何一个新的微软服务都会包含一个FPGA。 那么这个所谓的可编程芯片到底是什么?据菲数科技创始人兼CEO王文华介绍,2017年是全球超大规模数据中心的“爆发年”,全年新增超大规模数据中心90余个,总数量超过390个。且2018年也没有丝毫放缓的迹象。如此海量数据需要计算机高速计算各种矩阵运算、图像处理、机器学习、压缩、非对称加密、搜索排序等。即数据中心优先于人工智能发展