中断处理

Golang处理信号

谁都会走 提交于 2019-12-05 01:21:29
简介: 该包中的所有函数,都是处理 os.Signal 的, os.Signal 用于接受各种类型的信号,比如中断、程序终止等,这些信号的具体作用可以参考: https://golang.org/pkg/os/signal/ 中的介绍。我们根据需要使用中断,可以控制程序运行时间等。 针对Linux/Unix系统处理信号,有些类似C语言方式,具体可以回顾 这篇笔记 . 函数的使用: func Notify 启动一个信号的作用, c 不一定是只写的,可以是读写都行的 channel ,自动的进行类型转换。 func Notify ( c chan <- os . Signal , sig ... os . Signal ) 该函数使得 c 这个 os.Signal 接收指定类型的信号,如果不声明来的型号的类型,则默认接收所有的信号,代码实例: package main import ( "fmt" "os" "os/signal" "time" ) var chSignal chan os . Signal func dealSignal ( ) { for { <- chSignal fmt . Println ( "Get INT signal..." ) } } func main ( ) { chSignal = make ( chan os . Signal , 1 )

Linux查看端口的连接数

寵の児 提交于 2019-12-04 23:19:04
一、查看哪些IP连接本机 netstat -an 二、查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80" | wc -l 2)统计httpd协议连接数 ps -ef | grep httpd | wc -l 3)统计已连接上的,状态为“established netstat -anp | grep ESTABLISHED | wc -l 4)、查出哪个IP地址连接最多,将其封了 netstat -anp | grep ESTABLISHED | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n netstat -anp | grep SYN | awk {print $5}|awk -F: {print $1} | sort | uniq -c | sort -r +0n 实例: 1、查看Apache当前并发访问数: netstat -anp | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少。 2、查看有多少个进程数: ps aux | grep httpd | wc -l 3、可以使用如下参数查看数据 # ps -ef | grep httpd | wc -l 1388 统计httpd进程数

OProfile 性能分析工具

好久不见. 提交于 2019-12-04 21:11:25
OProfile 性能分析工具 OProfile 性能分析工具 官方网站:http://oprofile.sourceforge.net/news/ oprofile.ko模块 本文主要介绍Oprofile工具,适用系统的CPU性能分析,最主要它能深入内核函数,这是很多用户态工具达不到的地方. Oprofile是一个内核态工具,通过oprofile.ko模块内核模块来获取数据 需要在加载oprofile.ko模块的时候,传递”timer=1″参数. modprobe oprofile timer=1 oProfile http://baike.baidu.com/link?url=KQPjwFX0UUabWnM70gEzKi_ypahv0KmKglNSh4WXGhnMI_ldd3OiWr1kTn6w4ecSPj6WyRxzzgj2k9ptwmBbNa OProfile是Linux内核支持的一种性能分析机制。 外文名 OProfile 作 用: 用于 Linux 评测和性能监控工具 定 义: Linux内核支持一种性能分析机制 分 类: 内核模块,守护进程 采样方式: 基于事件的采样和基于时间的采样 OProfile工具: op_help,op_time,op_merge 简介 它在时钟中断处理入口处建立监测点,记录被中断的上下文现场,由配套的用户态的工具oprof

I/O管理杂记

纵然是瞬间 提交于 2019-12-04 20:59:14
  这是一篇杂记,记录了操作系统层面与I/O管理的零散知识点,用于温习使用。由于I/O管理是一个很大的范畴,后续会不断按照自己的生产需求来补充用的到的知识点。计算机系统是人造系统,没有绝对的对错(相对于自然系统的绝对性),只有特定场景下的优劣。我们在理解一块知识时应当从它提出的背景以及要解决的问题出发,去理解机制而不是纠结于如何具体的实现。即使目的相同,不同的公司或开发者在不同场景下的实现也不尽相同,了解几个例子加深自己的理解、帮助自己构建起知识体系即可(个人观点)。 设备控制器   设备控制器是计算机中的一个实体,其主要职责是 控制一个或多个I/O设 备,以实现I/O设备和计算机之间的数据交换。它是 CPU与I/O设备之间的接口 ,它接收从CPU发来的命令,并去控制I/O设备工作, 以使处理机从繁杂的设备控制事务中解脱出来 。设备控制器是一个 可编址 的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;若控制可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备。设备控制器的复杂性因不同设备而异,相差甚大,于是可把设备控制器分成两类:一类是用于控制 字符设备 的控制器,另一类是用于控制 块设备 的控制器。在微型机和小型机中的控制器,常做成印刷电路卡形式,因而也常称为接口卡,可将它插入计算机。有些控制器还可以处理两个、四个或八个同类设备。   控制器由

JAVA多线程总结

允我心安 提交于 2019-12-04 19:47:45
本文主要是学习了 老马说编程 的 计算机程序的思维逻辑 中关于线程部分的知识,并对其进行回顾总结。 多线程的实现 Thread 创建一个Thread的子类,并复写其run()方法,并在需要启动的地方调用其start方法 public class TestThread extends Thread { @Override public void run () { System.out.println( "I'm test thread" ); } } public static void main (String[] args) { Thread testThread = new TestThread(); testThread.start(); } Runnable 创建一个实现了Runnable接口的类,并实现run方法,并在需要启动的地方创建一个Thread对象,并将此类作为参数传入,调用此thread对象的start方法。 public class TestThread implements Runnable { @Override public void run () { System.out.println( "I'm test thread" ); } } public static void main (String[] args) { Thread

MSI和MSI-X中断机制

微笑、不失礼 提交于 2019-12-04 15:03:04
在 PCI 总线中,所有需要提交中断请求的设备,必须能够通过 INTx 引脚提交中断请求,而 MSI 机制是一个可选机制。而在 PCIe 总线中, PCIe 设备必须支持 MSI 或者 MSI-X 中断请求机制,而可以不支持 INTx 中断消息。 在 PCIe 总线中, MSI 和 MSI-X 中断机制使用存储器写请求 TLP 向处理器提交中断请求,下文为简便起见将传递 MSI/MSI-X 中断消息的存储器写报文简称为 MSI/MSI-X 报文。不同的处理器使用了不同的机制处理这些 MSI/MSI-X 中断请求,如 PowerPC 处理器使用 MPIC 中断控制器处理 MSI/MSI-X 中断请求,本章将在第 6.2 节中介绍这种处理情况;而 x86 处理器使用 FSB Interrupt Message 方式处理 MSI/MSI-X 中断请求。 不同的处理器对 PCIe 设备发出的 MSI 报文的解释并不相同。但是 PCIe 设备在提交 MSI 中断请求时,都是向 MSI/MSI-X Capability 结构中的 Message Address 的地址写 Message Data 数据,从而组成一个存储器写 TLP ,向处理器提交中断请求. 有些 PCIe 设备还可以支持 Legacy 中断方式 [1] 。但是 PCIe 总线并不鼓励其设备使用 Legacy 中断方式

ARM7中断的理解

谁说胖子不能爱 提交于 2019-12-04 11:48:16
谈谈对中断的理解? 中断是计算机中处理异步事件的重要机制 中断触发的方式: 1)中断源级设置 按键:(CPU之外的硬件) 设置中断的触发方式 uart控制 (CPU之内的硬件) 不用设置触发方式 中断使能 2)中断控制器级设置 优先级 中断使能 ...设置发往哪个核 3)ARM设置 cpsr.I =0(使能中断) 硬件自动做4件事 1:备份cpsr到spsr_<mode>   2:设置cpsr(主要是设置准备跳转到那个模式下执行代码)   3:将pc-4保存到lr_<mode>(以便下次能够跳转返回)   4;设置pc为某个异常的入口地址 及pc=VECTOR_BASE+0x00/0x04/0x08/0x0C/0x10/0x18/0x1C 若为IRQ异常及pc=baseaddr+0x18; 软件应该做的事 1:建立异常向量表 (产生中断之前就要准备完成) 2:跳转到IRQ异常处理函数(产生中断时候跳转)   IRQ异常处理函数     保护现场     bl c_irq_handler      恢复现场    c_irq_handler     判断哪个硬件触发的      调用对应硬件操作函数     清空中断源 中断控制器pending 注: 保护现场:及将被异常打断任务使用的ARM寄存器的数据保存到栈中。     恢复现场:1)从栈中将之前保存到栈的数据恢复到ARM寄存器中

外部中断

醉酒当歌 提交于 2019-12-04 08:28:27
中断意味着中途打断现在干的事情,紧急处理其他事情 NVIC(内嵌向量中断控制器)特性 无论是 ARM Cortex M0/M3/M4 还是 ARM Cortex-A8/A53/A72/A73 等等内核,都有 NVIC。 STM32F405xx/07xx和STM32F415xx/17xx 具有82个可屏蔽(能够通过代码进行开和关中断)中断通道,10个不可屏蔽(无法通过代码关闭该中断)的中断,16 个可编程优先级。 向量意味就是中断源。 向量表,也就是中断源表。 外部中断/事件控制器 (EXTI) 多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事件线,另外七根 EXTI 线连接方式如下: ● EXTI 线 16 连接到 PVD 输出 ● EXTI 线 17 连接到 RTC 闹钟事件 ● EXTI 线 18 连接到 USB OTG FS 唤醒事件 ● EXTI 线 19 连接到以太网唤醒事件 ● EXTI 线 20 连接到 USB OTG HS(在 FS 中配置)唤醒事件 ● EXTI 线 21 连接到 RTC 入侵和时间戳事件 ● EXTI 线 22 连接到 RTC 唤醒事件 声明变量: static GPIO_InitTypeDef GPIO_InitStruct; static EXTI

linux 中断管理(一)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-04 07:12:20
一、中断作用 Linux 内核需要对连接到计算机上的所有硬件设备进行管理。如果要管理这些设备,首先得和它们互相通信才行。 一般有两种方案可实现这种功能: 轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理; 中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。 使用轮询的方式会占用CPU比较多的时间,效率极低。例如:要读取一个按键有没有被按下时,一个进程需要不断地查询按键有没有被按下。这样这个任务就占用CPU大量得时间,使得CPU做了大量的无用功。使用中断提供这样的一个机制。当按键没有被按下的时候,挂起当前进程,将控制权转交给其他进程。当按键按下的时候,操作系统把当前进程设为活动的,从而允许该进程继续执行。 二、linux中断管理 linux 内核将所有的中断统一编号,使用一个 irq_desc 结构体数组描述中断。一个数组项对用一个中断(或者是一组中断,它们共用中断号)。 struct irq_desc 结构体记录了,中断的名称、中断状态,底层硬件访问接口(使能中断,屏蔽中断,清除中断),中断处理函数的入口, 通过它可以调用用户注册的中断处理函数。 1、struct irq_desc struct irq_desc 在 include\linux\irq.h 文件里面定义 struct irq_desc { irq

2019年11月12日

亡梦爱人 提交于 2019-12-04 06:53:34
一、USART简介   通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。   STM32 的串口资源相当丰富的,功能也相当强劲。STM32F103ZET6 最多可提供 5 路串口,有分数波特率发生器,支持同步单向通信和半双工单线通信,支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。 二、USART功能概述   接口通过三个引脚与其他设备连接在一起。任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。   RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。   TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。   串口外设主要由三个部分组成,分别是波特率的控制部分、收发控制部分及数据存储转移部分。   1、波特率控制   波特率,即每秒传输的二进制位数,用 b/s (bps)表示,通过对时钟的控制可以改变波特率。在配置波特率时