中断处理

Java多线程一篇就够了

匿名 (未验证) 提交于 2019-12-02 21:40:30
版权声明:欢迎个人转载,但须在文章页面明显位置给出原文连接; 未经作者同意必须保留此段声明、不得随意修改原文、不得用于商业用途,否则保留追究法律责任的权利。 https://blog.csdn.net/sinat_35757488/article/details/90767196 JAVA 线程实现/创建方式 继承Thread类 public class MyThread extends Thread { public void run ( ) { System . out . println ( "MyThread.run()" ) ; } } MyThread myThread1 = new MyThread ( ) ; myThread1 . start ( ) ; 实现Runnable接口 public class MyThread extends OtherClass implements Runnable { public void run ( ) { System . out . println ( "MyThread.run()" ) ; } } //启动 MyThread,需要首先实例化一个 Thread,并传入自己的 MyThread 实例: MyThread myThread = new MyThread ( ) ; Thread thread = new

Linux设备驱动程序 之 中断

痴心易碎 提交于 2019-12-02 19:57:13
中断 中断使得硬件可以发出通知给处理器,本质上是一种特殊的电信号,由硬件设备发向处理器,处理器接收到中断后,会马上向操作系统反应此信号的到来,然后就由操作系统负责处理这些新来的数据;硬件设备生成中断并不考虑与处理器的始终同步,中断可能随时产生,内核随时都有可能被中断打断; 不同设备的中断不同,而每个中断都对应一个唯一的中断值,这些中断值通常称为中断请求IRQ线;中断号并不一定是严格定义的,也可能是动态分配的,如PCI设备; 异常 异常与中断不同,它的产生必须考虑与处理器时钟同步;实际上,异常也常常被称为同步中断;在处理器执行到又编程失误而导致的错误指令的时候,就会产生一个异常;许多处理器体系结构处理异常与中断的方式类型;因此,内核对它们的处理也很类似; 中断处理程序 在响应一个特定中断的时候,内核会执行一个函数,这个函数叫中断处理程序或者中断服务例程;产生中断的每个设备都有一个相应的中断处理程序;中断处理器程序与其他内核函数的区别在于,中断处理程序是被内核调用来响应中断的,它们要运行于中断上下文中,通常,中断上下文也成为原子上下文,该上下文执行的代码不可阻塞; 中断可能随时发生,因此中断处理程序也就随时可能执行;所以必须保证中断处理程序能够快速执行,这样才能保证尽可能快的恢复中断代码执行,对于硬件和操作系统来讲,缩短响应和处理时间都极为重要; 上半部和下半部 中断处理被分为两个部分

Linux设备驱动程序 之 自旋锁

淺唱寂寞╮ 提交于 2019-12-02 19:30:30
概念 自旋锁可以再不能休眠的代码中使用,比如中断处理例程;在正确使用的情况下,自旋锁通常可以提供比信号量更高的性能; 一个自旋锁是一个互斥设备,它只能由两个值,锁定和解锁;通常实现为某个整数值中的单个位;希望获得特定锁的代码测试相关位,如果锁可用,则锁定位被设置,而嗲吗继续进入临界区;相反, 如果锁被其他人获得,则代码进入忙循环并重复检查这个锁,直到该锁可用为止 ;这循环就是自旋锁自旋的部分; 自旋锁在不同的架构上实现有所不同,但是核心概念低于所有系统都都是一样的,当存在某个自旋锁时,等待执行忙循环的处理器做不了任何有用的工作; 自旋锁最初是为了在多处理器系统上使用而设计的,考虑到并发问题, 单处理器工作站在运行可抢占内核时,其行为类似于SMP ;因为抢占,即使不打算在SMP系统上运行自己的嗲吗,我们仍然需要实现正确的锁定; 自旋锁和原子上下文 适用于自旋锁的规则是:任何拥有自旋锁的代码都必须是原子的,它不能休眠;事实上,它不能因为任何原因放弃处理器,除了服务中断以外(某些情况下此时也不能放弃处理器); 内核抢占的情况有自旋锁代码本身处理;任何时候,只要内核代码拥有自旋锁,在相关处理器上的抢占就会被禁止;甚至在单处理器上,也必须以同样的方式禁止抢占以避免竞态; 在拥有锁的时候避免休眠有时候很难做到,休眠可能发生在很多无法预期的地方,当我们编写需要在自旋锁下执行的代码时

转载一篇Fiddler的入门教程:fiddler配置及使用教程

余生颓废 提交于 2019-12-02 18:28:14
原文地址: https://www.cnblogs.com/woaixuexi9999/p/9247705.html fiddler抓包原理 注意:Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的 程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。 配置 打开Fiddler Tool->Fiddler Options->HTTPS 。 (配置完后记得要重启Fiddler). 选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示,若没有弹出提示,勾选Actions-> Trust Root Certificate 另外,如果你要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 “Ignore servercertificate errors” 勾选上。 证书安装提示: 点击Yes,留意一下红框里面的内容,DO_NOT_TRUST_FiddlerRoot ,这个就是证书的名称。 点击是。 点击确定,这样Fiddler证书就已经添加成功了。 查看一下证书,Actions—>open windows

Java线程池(ThreadPoolExecutor)原理分析与使用

萝らか妹 提交于 2019-12-02 17:59:44
在我们的开发中“池”的概念并不罕见,有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。 使用线程池的好处 1、降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。 3、提高线程的可管理性 线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控 线程池的工作原理 首先我们看下当一个新的任务提交到线程池之后,线程池是如何处理的 1、线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则执行第二步。 2、线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里进行等待。如果工作队列满了,则执行第三步 3、线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务 线程池饱和策略 这里提到了线程池的饱和策略,那我们就简单介绍下有哪些饱和策略: AbortPolicy 为java线程池默认的阻塞策略,不执行此任务,而且直接抛出一个运行时异常,切记ThreadPoolExecutor.execute需要try catch

Smart210学习记录(六) 之中断

被刻印的时光 ゝ 提交于 2019-12-02 14:58:26
文章目录 一、向量中断控制器 1、概述 2、关键特性 3、注意 二、寄存器 三、中断参考程序 一、向量中断控制器 1、概述   主要有4个VIC,4个TZIC还有一个很特殊的ARM PrimeCell PL192。主要的VIC和TZIC可以支持93个中断源。其中TZIC是为TrustZone技术所准备的,ARM TrustZone® 技术是系统范围的安全方法,针对高性能计算平台上的大量应用,包括安全支付、数字版权管理 (DRM)、企业服务和基于 Web 的服务(援引官方的介绍)。TZIC提供了安全控制的nFIQ中断并且使该这类中断从传统的不安全中断VIC中屏蔽掉,从而达到应用在数据传输时的安全性和保密性。 2、关键特性 Supports 93 vectored IRQ interrupts (支持93个矢量IRQ中断) Fixed hardware interrupts priority levels (固定硬件中断优先级) Programmable interrupt priority levels (可编程中断优先级) Supports Hardware interrupt priority level masking (支持硬件中断优先级的屏蔽) Programmable interrupt priority level masking (可编程中断优先级屏蔽)

Java线程面试题 Top 50

白昼怎懂夜的黑 提交于 2019-12-02 12:48:21
1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请 点击这里 。 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。更多详细信息请 点击这里 。 3) 如何在Java中实现线程? 在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。更多详细信息请 点击这里 . 4) 用Runnable还是Thread? 这个问题是上题的后续,大家都知道我们可以通过继承Thread类或者调用Runnable接口来实现线程,问题是,那个方法更好呢?什么情况下使用它?这个问题很容易回答

计算机组成原理知识点概叙

余生长醉 提交于 2019-12-02 08:52:07
第1篇 概论 为了紧跟国际上计算机技术的新发展,本书对第1版各章节的内容进行了补充和修改,并增加了例题分析,以加深对各知识点的理解和掌握。本书通过对一台实际计算机的剖析,使读者更深入地理解总线是如何将计算机各大部件互连成整机的。 全书共分为4篇,第1篇(第1、2章)介绍计算机的基本组成、发展及应用;第2篇(第3 5章)介绍系统总线、存储器(包括主存储器、高速缓冲存储器和辅助存储器)和输入输出系统;第3篇(第6 8章)介绍CPU的特性、结构和功能,包括计算机的算术逻辑单元、指令系统、指令流水、RISC技术及中断系统;第4篇(第9、10章)介绍控制单元的功能和设计,包括时序系统以及采用组合逻辑和微程序设计控制单元的设计思想与实现措施。 第1章 计算机系统概论 1.1 计算机系统简介 1.1.1 计算机的软硬件概念 1.1.2 计算机系统的层次结构 1.1.3 计算机组成和计算机体系结构 1.2 计算机的基本组成 1.2.1 冯·诺依曼计算机的特点 1.2.2 计算机的硬件框图 1.2.3 计算机的工作步骤 1.3 计算机硬件的主要技术指标 1.3.1 机器字长 1.3.2 存储容量 1.3.3 运算速度 1.4 本书结构 思考题与习题 第2章 计算机的发展及应用 2.1 计算机的发展史 2.1.1 计算机的产生和发展 2.1.2 微型计算机的出现和发展 2.1.3 软件技术的兴起和发展

你说的曾经没有我的故事 提交于 2019-12-02 08:09:12
  不是科班毕业,直接学了Java入行,最近打算学C语言,了解一些入门级的语言,就看了一点入门的东西,这一篇汇编语言也是拾人牙慧,这里贴上原文地址,尊重原创。    《汇编语言》- 来自底层的较量 - 温故而知新 https://www.cnblogs.com/yougewe/p/8011911.html 。   百科的汇编语言定义:汇编语言(assembly language)是一种用于 电子计算机 、 微处理器 、 微控制器 或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用 助记符 代替 机器指令 的 操作码 ,用地址符号或标号代替指令或 操作数 的地址。在不同的设备中,汇编语言对应着不同的机器语言 指令集 ,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。 一、汇编语言能干什么?仅次于机器语言?   计算机工作是由一系列的机器指令进行驱动工作的,这些指令是一系列二进制数字 0101000110,对应计算机的高低电平,而这些机器指令的集合就是机器语言,这已经是最底层,和硬件一对一了已经。   很明显,这样的机器语言是反人类的。只有天才和疯子才有能力去把控他。   于是汇编语言产生了。汇编语言就是将一些难于记忆的0100100转换为便于记忆的格式,让人能够稍微理解点。如 将寄存器bx的内容送到ax中

进程上下文、中断上下文及原子上下文***

試著忘記壹切 提交于 2019-12-02 07:56:38
谈论进程上下文 、中断上下文 、 原子上下文之前,有必要讨论下两个概念: a -- 上下文 上下文是从英文 contex t翻译过来,指的是一种 环境 。相对于进程而言,就是进程执行时的环境; 具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。 b -- 原子 原子(atom) 本意是“不能被进一步分割的最小粒子”,而 原子操作(atomic operation )意为"不可被中断的一个或一系列操作" ; 一、为什么会有上下文这种概念 内核空间和用户空间是现代 操作系统 的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地址空间。 其中处理器总处于以下状态中的一种: 内核态 ,运行于 进程上下文 ,内核代表进程运行于内核空间; 内核态 ,运行于 中断上下文 ,内核代表硬件运行于内核空间; 用户态 ,运行于用户空间。   上下文的切换,用户空间和内核空间具有不同的 地址映射,通用或专用的寄存器组,而用户空间的进程要传递很多变量、参数给内核,内核也要保存用户进程的一些寄存器、变量等