中断处理

汇编之各个寄存器的作用

陌路散爱 提交于 2019-12-04 06:01:50
原文链接:[ https://www.cnblogs.com/zimmerk/articles/2520011.html ] 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种”可分可合”的特性,灵活地处理字/字节的信息。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、 除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count

STM32中断系统

大兔子大兔子 提交于 2019-12-04 03:48:28
1.中断介绍: 1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂 时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序 或中断处理程 序),以处理该事件,该事件处理完后又返回被中断的程序 继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视 时突然门铃响,那么门铃响就相当于中 断源。有些中断还能够被其他高 优先级的中断所中断,那么这种情况又叫做中断的嵌套。 STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中 断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。 (参考《STM32F10x中文参考手册》-9 中断和事件章节) 1.2 NVIC介绍 NVIC英文全称是Nested Vectored Interrupt Controller,中文意思 就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中 断相关功能。由于ARM给NVIC预 留了非常多的功能,但对于使用M3内核设 计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST 公司的STM32F103芯片内部中断数量就是NVIC裁剪后 的结果。 中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开 任意库函数工程即可查看到。 1.3 中断优先级  

并发编程71道

不羁岁月 提交于 2019-12-03 16:55:41
转 https://www.cnblogs.com/lfs2640666960/p/11488629.html 金九银十跳槽季已经开始,作为 Java 开发者你开始刷面试题了吗?别急,我整理了71道并发相关的面试题,看这一文就够了! 1、在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 虚拟机(JVM)何时离开,Daemon是为其他线程提供服务,如果全部的User Thread已经撤离,Daemon 没有可服务的线程,JVM撤离。也可以理解为守护线程是JVM自动创建的线程(但不一定),用户线程是程序创建的线程;比如JVM的垃圾回收线程是一个守护线程,当所有线程已经撤离,不再产生垃圾,守护线程自然就没事可干了,当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。 扩展:Thread Dump打印出来的线程信息,含有daemon字样的线程即为守护进程,可能会有:服务守护进程、编译守护进程、windows下的监听Ctrl

Java并发之Condition与Lock

萝らか妹 提交于 2019-12-03 15:58:18
java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步和监视器。该框架允许更灵活地使用锁和条件,但以更难用的语法为代价。 Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantLock。 ReadWriteLock 接口以类似方式定义了一些读取者可以共享而写入者独占的锁。此包只提供了一个实现,即 ReentrantReadWriteLock,因为它适用于大部分的标准用法上下文。但程序员可以创建自己的、适用于非标准要求的实现。 Condition 接口描述了可能会与锁有关联的条件变量。这些变量在用法上与使用 Object.wait 访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个 Lock 可能与多个 Condition 对象关联。为了避免兼容性问题,Condition 方法的名称与对应的 Object 版本中的不同。 以下是locks包的相关类图: 在之前我们同步一段代码或者对象时都是使用 synchronized关键字,使用的是Java语言的内置特性,然而 synchronized的特性也导致了很多场景下出现问题,比如: 在一段同步资源上,首先线程A获得了该资源的锁,并开始执行

boost::thread线程管理

≯℡__Kan透↙ 提交于 2019-12-03 14:46:54
6.1. 概述 线程就是,在同一程序同一时间内允许执行不同函数的离散处理队列。 这使得一个长时间去进行某种特殊运算的函数在执行时不阻碍其他的函数变得十分重要。 线程实际上允许同时执行两种函数,而这两个函数不必相互等待。 一旦一个应用程序启动,它仅包含一个默认线程。 此线程执行 main() 函数。 在 main() 中被调用的函数则按这个线程的上下文顺序地执行。 这样的程序称为单线程程序。 反之,那些创建新的线程的程序就是多线程程序。 他们不仅可以在同一时间执行多个函数,而且这在如今多核盛行的时代显得尤为重要。 既然多核允许同时执行多个函数,这就使得对开发人员相应地使用这种处理能力提出了要求。 然而线程一直被用来当并发地执行多个函数,开发人员现在不得不仔细地构建应用来支持这种并发。 多线程编程知识也因此在多核系统时代变得越来越重要。 本章将介绍C++ Boost库 Boost.Thread ,它可以开发独立于平台的多线程应用程序。 6.2. 线程管理 在这个库最重要的一个类就是 boost::thread ,它是在 boost/thread.hpp 里定义的,用来创建一个新线程。下面的示例来说明如何运用它。 #include <boost/thread.hpp> #include <iostream> void wait(int seconds) { boost::this

关于中断

荒凉一梦 提交于 2019-12-03 13:17:27
一、什么是中断   当计算机在执行程序时,当出现异常情况(信号),计算机停止当前程序的运行,转而去处理异常情况,处理完成后再返回继续执行,这种情况叫中断。 二、中断的处理过程   在S5PV210中,ARM设计了一个完成的中断系统,中断程序独立于主程序之外,中断响应过程是:     1、主程序正常在执行,中断事件、中断源产生一个中断请求。     2、CPU接收到中断请求后,将主程序暂停,产生一个中断点。     3、中断系统响应中断请求,转而执行中断服务程序。     4、执行完成中断响应程序后返回到主程序的中断点处,继续执行主程序。 三、中断系统的优点   现在绝大多数的嵌入式芯片都具有中断系统,使用它的好处:     1、实现实时处理,根据CPU的内部功能模块(硬件上的)来响应中断请求,为其服务,不需要主程序做任务的监控,因此可以实时处理任务。     2、实现分时操作,根据需要设计若干个中断源,这样就可以同时响应多个外部设备的中断请求,只有在外部设备产生中断时,CPU才转而为它服务,这样可以让多个外部设备同时工作,实现分时操作。     3、故障处理,与轮询模式相比,中断处理异常情况、或故障时会更及时,可以实现紧急故障及时处理。     4、待机唤醒,嵌入式设备最大的一个特点就是低功耗,因此就需要具有休眠的功能,而从休眠状态快速切换到正常工作模式,就是通过中断实现的。 四

Arm的几种工作模式

跟風遠走 提交于 2019-12-03 10:06:34
ARM处理器工作模式一共有 7 种 : 1、USR 模式 正常用户模式,程序正常执行模式 2、FIQ模式(Fast Interrupt Request) 处理快速中断,支持高速数据传送或通道处理 3、IRQ模式 处理普通中断 4、SVC模式(Supervisor) 操作系统保护模式,处理软件中断swi reset 5、ABT 中止(Abort mode){数据、指令} 处理存储器故障、实现虚拟存储器和存储器保护 6、UND 未定义(Undefined) 处理未定义的指令陷阱,支持硬件协处理器的软件仿真 7、SYS 系统模式(基本上=USR)(System) 运行特权操作系统任务 来源: https://www.cnblogs.com/seamoon23/p/11787653.html

renesas ravb网卡驱动实现分析(linux uboot xvisor)

易管家 提交于 2019-12-03 09:52:46
net_device结构体 相对于linux做了相当大简化,其结构及含义如下: struct net_device { char name[MAX_NETDEV_NAME_LEN]; //用于存放网络设备的设备名称 struct vmm_device *dev; //??? const struct net_device_ops *netdev_ops; //上层ops接口 const struct ethtool_ops *ethtool_ops; //可选ops接口 unsigned int state; //网络设备接口的状态 unsigned int link_state; //链接状态 void *priv; /* Driver specific private data */ void *nsw_priv; /* VMM virtual packet switching layer specific private data.*/ void *net_priv; /* VMM specific private data -Usecase is currently undefined */ unsigned char dev_addr[MAX_NDEV_HW_ADDRESS]; //硬件接口地址 unsigned int hw_addr_len; //硬件地址长度

AQS之独占锁模式

匿名 (未验证) 提交于 2019-12-03 00:34:01
原文地址: http://www.jianshu.com/p/71449a7d01af AbstractQueuedSynchronizer(以下简称AQS)作为java.util.concurrent包的基础,它提供了一套完整的同步编程框架,开发人员只需要实现其中几个简单的方法就能自由的使用诸如独占,共享,条件队列等多种同步模式。我们常用的比如ReentrantLock,CountDownLatch等等基础类库都是基于AQS实现的,足以说明这套框架的强大之处。鉴于此,我们开发人员更应该了解它的实现原理,这样才能在使用过程中得心应手。 总体来说个人感觉AQS的代码非常难懂,本文就其中的独占锁实现原理进行分析。 一、执行过程概述 首先先从整体流程入手,了解下AQS独占锁的执行逻辑,然后再一步一步深入分析源码。 获取锁的过程: 当线程调用acquire()申请获取锁资源,如果成功,则进入临界区。 当获取锁失败时,则进入一个FIFO等待队列,然后被挂起等待唤醒。 当队列中的等待线程被唤醒以后就重新尝试获取锁资源,如果成功则进入临界区,否则继续挂起等待。 释放锁过程: 当线程调用release()进行锁资源释放时,如果没有其他线程在等待锁资源,则释放完成。 如果队列中有其他等待锁资源的线程需要唤醒,则唤醒队列中的第一个等待节点(先入先出)。 二、源码深入分析

操作系统思维导图

匿名 (未验证) 提交于 2019-12-03 00:30:01
目标 方便性 有效性 提高系统资源利用率 提高系统吞吐量 可扩充性 开放性 作用 OS作为用户与计算机硬件系统之间的接口 命令方式 系统调用方式 OS实现了对计算机资源的抽象 未配置操作系统的计算机系统 人工操作方式 用户独占全机 CPU等待人工操作 严重降低了计算机资源的利用率 减少了CPU的空闲时间 提高了I/O速度 效率仍然不理想 单道批处理系统 多道批处理系统 1.资源利用率高 2.系统吞吐量大 3.平均周转时间长 4.无交互能力 (宏观并行,微观串行) 分时系统 特征: 1.多路性 2.独立性 3.及时性 4.交互性 ʵʱϵͳ 微机操作系统的发展 1.并发concurrence 区别并行和并发 并行性是指两个或多个事件在同一时刻发生→宏观并行,微观并行 并发性是指两个或多个事件在同一时间间隔内发生→宏观并行,微观串行 引入进程 进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体 2.共享sharing 1.互斥共享方式 2.同时访问方式 并发和共享是多用户(多任务)OS的两个最基本的特征。它们又是互为存在的条件 3.虚拟virtual 时分复用技术 空分复用技术 4.异步asynchronism 1.处理机管理功能 进程控制 进程同步 进程互斥方式 进程同步方式(协同) 进程通信 调度 作业调度 进程调度