本想写三篇,openstack nova hotplug,qemu和kvm hotplug,还有linux hotplug,现在看来有难度,光一个openstack nova hotplug就花费了很长时间...和memory hotplug nova-compute实现hotplug时要考虑资源问题,本机上cpu或者memory不够是否需要reschedule,还有quota等。...本机上不够报错,不迁移,虚拟机不可能hotplug到无限大,不可能超过最大的物理机。...hotplug后影响所有其它流程如rebuild,shutdown,start和migration,这些流程操作后要能保存hotplug的结果, rebuild,shutdown,hard reboot...cpu hotplug到guest中的那个socket?哪个core?
udev 和mdev 是两个使用uevent 机制处理热插拔问题的用户空间程序,两者的实现机理不同。...mdev 是基于uevent_helper 机制的,它在系统启动时修改了内核中的uevnet_helper 变量(通过写/proc/sys/kernel/hotplug),值为“/sbin/mdev”。...3. udev 使用的netlink 机制在有大量uevent 的场合效率高,适合用在PC 机上;而mdev 使用的uevent_helper 机制实现简单,适合用在嵌入式系统中。...4. uevent_helper 的初始值在内核编译时时可配置的,默认值为/sbin/hotplug。...如果想修改它的值,写/proc/sys/kernel/hotplug 文件就可以了,例如: echo “/sbin/mdev” > /proc/sys/kernel/hotplug 5.
从Linux 2.4版本开始,操作系统底层提供了scatter/gather这种DMA的方式来从内核空间缓冲区中将数据直接读取到协议引擎中,而无需将内核空间缓冲区中的数据再拷贝一份到内核空间socket...参考: 浅谈 Linux下的零拷贝机制 TCP TCP的TIME_WAIT有两个作用: 防止前一个TCP连接的残留数据(在序列号恰好正确的情况下)进入后续的TCP连接中 防止TCP挥手过程发出去的最后一个...Linux实现了大量QDisc来满足各个QDisc对应的的报文队列和行为。该接口允许QDisc可以在没有IP栈和NIC驱动修改的前提下实现队列管理。...TCP rtt和rto TCP拥塞避免算法,目前主流Linux的默认拥塞避免算法为cubic,可以使用ss -i命令查看。...可以看到reno算法在发生拥塞避免时不会将cwnd变为1,这样提高了传输效率,快速重传和快速恢复机制也有利于更快探测到拥塞。 ?
RELRO(RELocation Read Only) 在Linux中有两种RELRO模式:Partial RELRO 和 Full RELRO。Linux中Partical RELRO默认开启。
这还是和RCU的机制有关,RCU能够容忍数据的短时间不同步,并且写者能保证原子地更新数据。...如果存在多个写者,并且它们修改的是同一个数据结构(例如同一个链表节点),那么就需要额外的同步机制(互斥锁、自旋锁等等)来防止并发修改同一个共享数据。...或者说必然需要一种机制能够让写者"知道"宽限期已经结束了,我们可能会想到使用信号量、通知链之类的方法,但是这些机制又会引入其他的锁,那这就和RCU无锁的设计初衷相悖了。...深入理解 Linux 的 RCU 机制 RCU锁原理与实现 再谈Linux内核中的RCU机制 Non-Preemptible RCU soft lockup: zap_pid_ns_processes...Linux RCU 内核同步机制 深入剖析Linux RCU原理(二)-渐入佳境 【Linux 内核源码分析】RCU机制
缓存机制:Linux引入了buffers和 cached机制,buffers与cached都是内存操作,用来保存系统曾经打开过的文件以及文件元数据,这样当操作系统需要读取某些文件时,首先在buffers...与cached内存区查找,如果找到,直接读出给应用程序,如果没有找到需要数据,才从磁盘读取,这就是操作系统的缓存机制,通过缓存,大大提高了操作系统的性能。...为了方便查找文件,linux引入目录项(dentry)描述目录与文件的关系树,Linux为每一个目录建立一个目录项,也为每个文件建立一个目录项。...根据Linux虚拟内存管理机制,这种行为是正常的。要理解为什么缓存会变得如此之高,以及为什么这不是一个问题,就必须了解I/O在Linux上是如何工作的。...从Linux缓存机制来说,buffers和cached都是系统可用内存,通常情况下看到bufferes和cached占用内存多,这是一个正常现象,它不是一个问题,所以在看到物理内存快要耗尽时,不要惊慌,
/a.out bt 4.开发板上使用core文件调试 ----------------------------- 如果开发板的操作系统也是linux,core调试方法依然适用。...如果开发板上不支持gdb,可将开发板的环境(依赖库)、可执行文件和core文件拷贝到PC的linux下。
1、简介: RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。...RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。...3、相应资料: Linux内核源码当中,关于RCU的文档比较齐全,你可以在 /Documentation/RCU/ 目录下找到这些文件。 Paul E....为此RCU机制提供了相应的API来实现这个功能。...可以通过优化屏障来解决该问题,RCU机制对优化屏障做了包装,提供了专用的API来解决该问题。
作者简介:中年码农,做过电信、手机、安全、芯片等行业,靠Linux混饭吃。...和用户态程序的 coredump 机制类似。...下面就来详细的分析整个 kdump 机制的详细原理。...在现在的 ubuntu 中只需要安装一个 linux-crashdump 软件包就自动帮你搞定: sudo apt-get install linux-crashdump 安装完后,可以通过 kdump-config...所以可以看到 /proc/kcore 和 /proc/vmcore 这两个文件是整个机制的核心,我们重点分析这两部分的实现。
在这里总结一下它的内部机制。也解决一下自己原来的一些疑惑。 Namespace是什么 C++中的Namespace 首先,先提一下Namespace是什么。最早知道这个名词是在学习C++语言的时候。...Linux的Namespasce Linux Namespaces是一种轻量级的虚拟化形式。操作系统在内存,CPU上,已经使用了虚拟化的技术,让每个进程都认为是自己独占了内存和CPU。...Linux Namespace原理 对于内核来说,进程是由task_struct结构体来控制。所以Namespace肯定会和task_struct有关联。...参考 Linux内核的namespace机制分析 Namespaces in operation, part 1: namespaces overview Docker基础技术:Linux Namespace...(上) Docker基础技术:Linux Namespace(下)
OOM分析 oom_killer(out of memory killer)是Linux内核的一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择杀掉一些进程释放掉一些内存
中断的历史原因 在聊中断机制之前,我想先和大家聊一聊中断机制出现的前因后果。...又过了几年,Linus Torvalds 基于 UNIX 操作系统开发了 Linux,一直流传至今。...我没有查到中断到底是何时引入的,但是从 Linux 问世以来就已经有了,而且 Linux 是基于 UNIX 开发的,可以认为 UNIX 就已经引入中断机制了,而且换个角度来说,UNIX 作为如此著名的操作系统...,应该会引入中断机制的。...对于 Linux 内核来说,中断信号分为两类:硬件中断和软件中断,每个中断是由 0 - 255 之间的一个数字来标识。
1 页式管理 1.1 分段机制存在的问题 分段,是指将程序所需要的内存空间大小的虚拟空间,通过映射机制映射到某个物理地址空间(映射的操作由硬件完成)。...分段映射机制解决了之前操作系统存在的两个问题: 地址空间没有隔离 程序运行的地址不确定 不过分段方法存在一个严重的问题:内存的使用效率低。...但是Linux并没有采用这种机制 正如前面所述,通过设置页目录项的Page Size标志启用扩展分页功能。在这种情况下,分页单元把32位线性地址分成两个字段: Directory:最高10位。...若这个标志为0,只有当CPL小于3(这意味着对于Linux而言,处理器处于内核态)时才能对页寻址;若该标志为1,则总能对页寻址。...第9~11位由操作系统专用,Linux也没有做特殊之用。 ? 80386的每个页目录项指向一个页表,页表最多含有1024个页面项,每项4个字节,包含页面的起始地址和有关该页面的信息。
本章来写一个插件,插件功能为通过NETLINK读取linux系统中的hotplug信息,比如usb、SD卡、磁盘等设备的插拔事件产生的信息,将读到的信息通过插件间通信的方式发出。...1. eventadmin库编译 CTK Plugin Framework下插件间通信是通过事件管理机制实现的,其代码位于CTK/Libs/PluginFramework/service/event目录下...,使能事件管理机制,首先要在编译CTK的时候选择生成org.commontk.eventadmin库。...插件编写 通过拷贝的方式新建一个plugin-hotplug库,在plugin-hotplug库工程目录项,右键选择新建一个C++ class,取名为HotplugDetect,设置该类继承于QThread...运行示例 这里以linux-x86_64平台运行下示例,测试插件运行情况。
上一篇文章写到中断机制,采用了等待队列的方式实现了按键中断。但是你会发现,应用程序在读取按键值的时,当没有按键按下,则一直处于睡眠态。无法继续往下执行。...poll机制的解析:其中poll()函数和select()函数的功能同等。...代码实现: 基本是在上一篇文章《中断机制》的代码实现中修改一些内容。 驱动代码:增加poll的方法。
这篇文章以按键为例子讲解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中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。
1 linux的分页机制 1.1 四级分页机制 前面我们提到Linux内核仅使用了较少的分段机制,但是却对分页机制的依赖性很强,其使用一种适合32位和64位结构的通用分页模型,该模型使用四级分页机制,即...1.2 不同架构的分页机制 对于不同的体系结构,Linux采用的四级页表目录的大小有所不同:对于i386而言,仅采用二级页表,即页上层目录和页中层目录长度为0;对于启用PAE的i386,采用了三级页表...Linux 的页全局目录对应80x86 的页目录指针表(PDPT),取消了页上级目录,页中间目录对应80x86的页目录,Linux的页表对应80x86的页表。...1.3 为什么linux热衷:分页>分段 那么,为什么Linux是如此地热衷使用分页技术而对分段机制表现得那么地冷淡呢,因为Linux的进程处理很大程度上依赖于分页。...这就是虚拟内存机制的基本要素。 每一个进程有它自己的页全局目录和自己的页表集。
上锁解锁必须具备原子性 原子性(象原子一样不可分割的操作) 有序性(禁止指令重排) 可见性(一个线程内的修改,另一个线程可见) 内核同步常用方法 原子操作 – 内核中类似于AtomicXXX,位于linux...二值信号量) 完成变量 – 特殊的信号量(A发出信号给B,B等待在完成变量上) vfork() 在子进程结束时通过完成变量叫醒父进程 类似于(Latch) BKL:大内核锁(早期,现在已经不用) 顺序锁(linux
上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。...于是,linux内核设计出了一种架构,中断函数需要处理的任务分为两部分,一部分在中断处理函数中执行,这时系统关闭中断。另外一部分在软件中断中执行,这个时候开启中断,系统可以响应外部中断。...在linux系统的进程数据结构里,有这么一个数据结构 #define preempt_count()(current_thread_info()->preempt_count), 利用preempt_count...Linux内核就中断方面就必须考虑平衡这三个方面的问题。而下面我要分析的__do_softirq函数就恰似在这三者之间打太极,游刃有余,面面俱到!
当系统内存不足时,Linux内核会触发OOM来选择一些进程kill掉,以便能回收一些内存,尽量继续保持系统继续运行。
领取专属 10元无门槛券
手把手带您无忧上云