中断处理 - 上半部(硬中断) 由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux对中断的处理过程。...鉴于这个原因,Linux把中断处理分为两个部分,上半部 和 下半部,上半部 在前面已经介绍过,接下来就介绍一下 下半部 的执行。...softirq机制 中断下半部 由 softirq(软中断) 机制来实现的,在Linux内核中,有一个名为 softirq_vec 的数组,如下: static struct softirq_action...Linux通过 __softirq_active 这个字段得知哪种softirq需要执行(只需要把对应位设置为1)。...在Linux内核中有两种tasklet,一种是高优先级tasklet,一种是普通tasklet。
[toc] 如何设置IDT IDT 中断描述符表定义 中断描述符表简单来说说是定义了发生中断/异常时,CPU按这张表中定义的行为来处理对应的中断/异常。...中断描述符项定义 当中断发生,cpu获取到中断向量后,查找IDT中断描述符表得到相应的中断描述符,再根据中断描述符记录的信息来作权限判断,运行级别转换,最终调用相应的中断处理程序; 这里涉及到Linux...pre-cpu的中断栈,还是使用IST的中断栈; type表示所中断是何种类型,目前有以下四种: enum { GATE_INTERRUPT = 0xE, //中断门 GATE_TRAP...传统系统调用相关 IDT 的设置 Linux系统启动过程中内核压解后最终都调用到start_kernel, 在这里会调用trap_init, 然后又会调用idt_setup_traps: void...硬件中断相关IDT的初始化也是在Linux启动时完成,在start_kernel中通过调用init_IRQ完成,我们来看一下: void __init init_IRQ(void) { int
原文链接我要挂载的硬盘为sda1,首先将硬盘插上。1 查看硬盘使用检测硬盘命令:lsblk图片看到 sda1 存在。...然后使用查看硬盘命令:df -h如果只是插上硬盘而无其他操作,则看不到要挂载的硬盘sda1。...2 挂载格式化硬盘 sda1 :sudo mkfs -t ext4 /dev/sda1创建挂载目录 data:sudo mkdir /data把空间挂在 /data :sudo mount /dev/sda1...修改文件权限的方法参考:Linux修改文件权限立即执行 fstab 的内容:sudo mount -a不报错则挂载成功。.../dev/sda16 临时挂载若只是把硬盘sda1插上,开机时可能会自动挂载硬盘,但是这样硬盘无法使用,需要先解除挂载:sudo umount /dev/sda1重新挂载到data目录:sudo mount
lsblk disk为硬盘 创建空文件夹 mkdir data1 sudo mount /dev/sdb /data1 图片 挂载到data1下了
最近手里刚好有台服务器,需要加硬盘,就出一个教程 用宝塔一键挂载工具,提示www目录已被挂载,不执行任何操作 那就只能手动挂载了,首先查看硬盘名称 sudo fdisk -l 我要挂载的是.../dev/vdb这块硬盘,先创建系统格式 sudo mkfs -t ext4 /dev/vdb 创建挂载节点,你们可以随意我这里就以luoye为例 sudo mkdir /luoye...将硬盘挂载到挂载节点 sudo mount /dev/vdb /luoye 查看挂载结果 sudo df -TH 最后把自动挂载添加到/etc/fstab中,实现开机/重启自动挂载
最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....将中断号压入栈中; (不同中断号的中断对应不同的中断服务程序入口) 2....中断处理的这几个阶段中不能调用可能导致睡眠的函数(包括分配内存); 对于第一个问题, 较新的linux内核增加了ksoftirqd内核线程, 如果持续处理的softirq超过一定数量, 则结束中断处理过程...据说在montavista(一种嵌入式实时linux)中, 将内核的中断机制做了修改. (某些中断的)中断处理过程被赋予了task结构, 能够被内核调度. 解决了上述两个问题....工作队列 linux基线版本的内核在解决上述问题上, 提供了workqueue机制.
Linux系统往往有添加磁盘不够的情况,这时就需要添加新的硬盘。...一般情况下需要重启服务器,这里我们来使用线刷方式读取Linux新增硬盘 1.添加磁盘后fdisk -l磁盘没有显示 2.查看主机总线号 3.重新扫描scsi总线来添加设备 [root@localhost...class/scsi_host/host1/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan 4.再次查看硬盘已经显示
硬盘分区及挂载操作步骤: 1....查看未挂载的硬盘(名称为/dev/xvdb) # fdisk -l Disk /dev/xvdb doesn't contain a valid partition table 2....确认是否挂载成功 重启服务器 # reboot 查看硬盘分区 # df /dev/xvdb1 20635700 176196 19411268 1% /data
简介 LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,在Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。...LVM组成 Logical Volume Manager(逻辑卷管理) PV:是物理的磁盘分区 VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库统一管理了几个大的硬盘,...操作环境介绍 1,在线扩容根分区,根分区100G,新增一块20G硬盘,将根分区扩容至120G。 2,新建逻辑卷并扩容和缩减,新增2块20G磁盘,划分10GLV,再扩容10G,随后缩减5G....lvm [SWAP] sdb 8:16 0 20G 0 disk sr0 11:0 1 4.3G 0 rom 查看系统初始硬盘...将物理硬盘格式化成PV(物理卷) 使用的是pvcreate命令 [root@zabbix-server ~]# pvcreate /dev/sdb1 Physical volume "/dev/
这篇文章以按键为例子讲解linux的中断原理,中断的架构,中断的实现。 在我们的开发中,检测按键是否触发,无非就两种方法—轮询和中断。作者认为两种方法最大的区别就是CPU的利用率。...Linux的中断原理: 中断:处理器异常的一种,它是一种特殊的电信号,用硬件发给处理器,处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据。...Linux中断的相关函数: 1、注册中断函数: 中断处理函数结构: typedef irqreturn_t (*irq_handler_t)(int, void*); 注册中断函数:int request_irq...dev:与request_irq的参数dev必须一致,将request_irq指定的dev传递给这个参数; Linux中断处理分析: 第一种方式:应用层的读,不管什么情况下,都会返回。...Linux中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。
7.当磁盘中断发生时,表明该页已经被装入,页表已经更新可以反映他的位置,页框也标记位正常状态。 8.恢复发生缺页中断指令以前的状态,程序计数器重新指向这条指令。...9.调度引发缺页中断的进程,操作系统返回调用他的汇编例程 10.该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过。...linux内核对缺页异常的处理流程很复杂,但是基本思想和上述流程差不多。...下面看linux的基本处理流程: 内核处理缺页异常的主函数就是do_page_fault: /* * 缺页异常处理函数 * pt_regs 各个寄存器的值 * error_code,由硬件产生:...), "=r" (x) : "m"(__m(addr)), "i"(errret), "0"(err)) //"m"(__m(addr)), "i"(4), "0"(4)) 经过以上分析,对linux
(1)硬中断 由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。...linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。...(3)中断嵌套 Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。...(4)软中断指令 int是软中断指令。 中断向量表是中断号和中断处理函数地址的对应表。 int n -- 触发软中断n。相应的中断处理函数的地址为:中断向量表地址 + 4 * n。...(5)硬中断和软中断的区别 软中断是执行中断指令产生的,而硬中断是由外设引发的。 硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
一、内核中断初始化 文件:kernel\init\main.c。...Linux内核中断初始化流程如下: start_kernel()-> init_IRQ()-> irqchip_init()-> of_irq_init(...__irqchip_of_table) ## 扫描和初始化设备树中的中断控制器("interrupt-controller") __irqchip_of_table在RK3399中断控制器GICv3初始化时赋值...二、中断控制器初始化 文件:drivers/irqchip/irq-gic-v3.c。...gic_of_init : gic_of_init } 2、gic_handle_irq() 功能:该函数通过读取ICC_IAR1_EL1寄存器获取INTID,根据INTID判断对应的中断,调用相关的中断处理函数
作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。...著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...因此,在本章中,我们简单介绍硬件中断的基本原理,然后结合中断的基本原理讨论如何虚拟化中断芯片。...图2 基于PIC的虚拟中断过程 具体步骤如下: 1)虚拟设备向虚拟中断芯片PIC发送中断请求,虚拟PIC记录下虚拟设备的中断信息。
作者简介 王柏生 资深技术专家,先后就职于中科院软件所、红旗Linux和百度,现任百度主任架构师。在操作系统、虚拟化技术、分布式系统、云计算、自动驾驶等相关领域耕耘多年,有着丰富的实践经验。...著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...KVM: Add support for in-kernel PIC emulation linux.git/drivers/kvm/i8259.c void kvm_pic_set_irq(void...= -1) returnvector; … } linux.git/drivers/kvm/i8259.c int kvm_pic_read_irq(struct kvm_pic *s)
软中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。...1.为什么要软中断 编写驱动的时候,一个中断产生之后,内核在中断处理函数中可能需要完成很多工作。但是中断处理函数的处理是关闭了中断的。也就是说在响应中断时,系统不能再次响应外部的其它中断。...这样的后果会造成有可能丢失外部中断。于是,linux内核设计出了一种架构,中断函数需要处理的任务分为两部分,一部分在中断处理函数中执行,这时系统关闭中断。...在linux系统的进程数据结构里,有这么一个数据结构 #define preempt_count()(current_thread_info()->preempt_count), 利用preempt_count...Linux内核就中断方面就必须考虑平衡这三个方面的问题。而下面我要分析的__do_softirq函数就恰似在这三者之间打太极,游刃有余,面面俱到!
比如按键中断、串口中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。...中断源有很多,为了区分这些不同的中断源肯定要给他们分配一个唯一 ID,这些 ID 就是中断 ID。...ID32~ID1019:这 988 个 ID 分配给 SPI,像 GPIO 中断、串口中断等这些外部中断 ,至于具体到某个 ID 对应哪个中断那就由半导体厂商根据实际情况去定义了。...分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到 CPU 接口端。分发器端要做的主要 工作如下: ①、全局中断使能控制。 ②、控制每一个中断的使能或者关闭。...③、设置每个中断的优先级。 ④、设置每个中断的目标处理器列表。 ⑤、设置每个外部中断的触发模式:电平触发或边沿触发。 ⑥、设置每个中断属于组 0 还是组 1。
linux的硬盘有挂载和未挂载两种(类似windows上的硬盘分区(C、D、E盘)) (1)查看已经挂载的硬盘大小:df -h (2)查看详细的硬盘分区情况(包括挂载和未挂载两种的硬盘大小):fdisk...◆在Linux分区过程,一般是先通过p参数来显示硬盘分区表信息,然后根据信息确定将来的分区。...help): ◆如果想完全改变硬盘的分区格式,就可以通过d参数一个一个地删除存在的硬盘分区。...◆要提醒注意的是,如果硬盘上有扩展分区,就只能增加逻辑分区,不能增加扩展分区。...◆在增加分区的时候,其类型都是默认的Linux Native,如果要把其中的某些分区改变为其他类型,例如Linux Swap或FAT32等,可以通过命令t来改变,当按下“t”改变分区类型的时候,系统会提示要改变哪个分区
1、检查挂载情况 df 2、查看磁盘信息 fdisk -l 3、挂载 mount /dev/sdb1 /www 4、取消挂载 umount /dev/sd...
不过众所周知内存和 CPU 只需要关机再启动即可升级完毕,但硬盘却是不会自动扩容的。本文将介绍 Linux 下硬盘无损扩容的一种方案,避免了重装或是数据迁移的麻烦。...1.安装运行GParted GParted 是一款带有图形界面的硬盘分区软件,没什么费事的直接从软件源安装即可: apt install --no-install-recommends gparted...安装完成后直接运行:gparted,或者也可以手动指定硬盘:gparted /dev/sda 。...2.扩容逻辑分区 待 GParted 加载完硬盘分区后,根据系统安装时的不同,你可能会看到一块主分区,一块扩展分区和一块空闲空间。
领取专属 10元无门槛券
手把手带您无忧上云