自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Burning Water

没有什么能够阻挡,你对自由的向往

  • 博客(10)
  • 收藏
  • 关注

原创 Linux进程创建三——fork、vfork、clone、kernel_thread

前言Linux创建线程的API主要有fork、vfork、clone、kernel_thread,最终都调用了do_fork。 do_fork的具体流程在上一篇已经分析完毕Linux进程创建二——do_forkfork、vfork、clone都是系统调用,用来实现用户空间的进程创建。 内核空间创建的进程称为内核线程,主要通过kernel_thread,对kernel_thread进行包装的API

2017-01-17 22:53:15 1683

原创 Linux进程创建二——do_fork

前言kernel在启动初期并没有“进程”这个概念,如果不涉及支持多任务并发、调度,kernel可以一直以一个控制流运行。本篇从内核初始化时的0进程开始分析,延伸到多进程的创建。0 进程内核中的所有进程都存在依赖关系,进程有父进程、子进程、兄弟进程。0号进程为所有进程的祖先进程,又称为idle进程、swapper进程。init_task如前文所述,内核在初始化初期没有进程的概念,

2017-01-17 21:12:46 952

原创 What are threads (user/kernel)?

What are threads (user/kernel)?Threads are “light weight processes” (LWPs). The idea is a process has five fundamental parts: code (“text”), data (VM), stack, file I/O, and signal tables. “Heavy-weig

2017-01-13 11:08:27 449

原创 Linux进程创建一——进程、线程、LWP

前言本篇主要对进程和线程的概念进行分析,kernel中的进程、线程模型,涉及进程、用户态线程、内核态线程、轻量级进程(LWP),在分析之前,需要阅读What is Thread?,该文章有便于理解操作系统中线程、用户态线程和内核态线程的对应关系。 根据资料和我的理解,不同操作系统对线程和进程的理解及对应关系稍有不同,本篇只针对Linux操作系统。 本篇文章是阅读ULK3及网上相应文章后的个人总结

2017-01-12 23:20:23 935

原创 kernel中断分析七——tasklet

Abstract在Kernel 中断分析六——softirq中,分析了软中断的处理流程,那么bottom half还剩下tasklet与waitqueue。tasklet是在软中断基础上实现的一种延迟机制,当然同样运行在中断上下文,而waitqueue运行在进程上下文,允许睡眠。Taskletkernel中有定义了十种软中断类型,其中HI_SOFTIRQ、TASKLET_SOFTI

2017-01-10 09:58:24 1508

原创 Kernel 中断分析六——softirq

Abstract目前kernel中的中断机制主要有top half、bottom half(softirq、tasklet、waitqueue)、threaded irq handler。top half不用赘述,我把threed irq handler与bottom half区分开,是因为他们有以下区别: 1、调度方式 threaded irq handler被系统调度器调度,botto

2017-01-08 23:47:05 2425

原创 kernel 中断分析五——irq_thread

前言在x86 kernel 中断分析三——中断处理流程中,对于线程化中断处理函数,handle_irq_event_percpu调用了irq_wake_thread唤醒action->thread,此处唤醒的thread创建于__setup_irq,代码如下: 947 t = kthread_create(irq_thread, new, "irq/%d-%s", ir

2017-01-06 11:27:50 4185

原创 kernel 中断分析之四——中断申请 [下]

前言在kernel 中断分析之四——中断申请 [上]中,request_irq、request_threaded_irq、setup_irq、setup_percpu_irq、request_percpu_irq最终都调用了__setup_irq,本篇对该API进行分析,由于代码比较长,分段分析。请注意,在分析过程中,遇到一些拿捏不定的地方,以用粗体表示,如果有理解错误,欢迎指正。__

2017-01-05 10:28:03 3506

原创 kernel 中断分析之四——中断申请[上]

前言从分析三可知,中断处理最终调用了irqaction的handler和thread_fn,分别对应interrupt context和process context。 对应的中断服务例程是在驱动初始化阶段,通过request_irq或者request_threaded_irq进行申请,注册的,本篇主要对这两个接口进行分析。request_threaded_irq关于中断线程化的目的

2017-01-04 22:43:13 3376

原创 x86 kernel 中断分析三——中断处理流程

CPU检测中断CPU在执行每条程序之前会检测是否有中断到达,即中断控制器是否有发送中断信号过来查找IDTCPU根据中断向量到IDT中读取对应的中断描述符表项,根据段选择符合偏移确定中断服务程序的地址见附录2interrupt数组在分析一中,我们看到,填充IDT中断服务程序的是interrupt数组的内容,所以第2步跳转到interrupt数组对应的表项,表项的内容之前也已分析过push vector

2017-01-03 15:12:59 3750

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除