首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

linux内核上下文切换解析

linux的上下文切换就是进程线程的切换,也就是切换struct task_struct结构体,一个任务的上下文包括cpu的寄存器,内核栈等,由于1个cpu上的所有任务共享一套寄存器,所以在任务挂起的时候需要保存寄存器,当任务重新被调度执行的时候需要恢复寄存器。每种处理器都提供了硬件级别的上下文切换,比如x86架构下的TSS段,TSS段包括了一个任务执行的所需要的所有上下文,主要有:1.通用寄存器和段寄存器。2.标志寄存器EFLAGS,程序指针EIP,页表基地址寄存器CR3,任务寄存器和LDTR寄存器。3.I/O映射位图基地址和I/O位图信息。4.特权级0,1,2堆栈指针。5.链接到前一任务的链指针。所以上下文切换也很简单,直接用call或者jmp指令调度任务。同样ARM架构也有快速上下文切换技术。但是Linux为了适用更多的cpu架构没使用处理器相关的上下文切换技术,而是大部分通过软件实现。linux上下文切换就在schedule()函数里,很多地方都会调用这个函数。scchedule函数前面大部分代码是和调度算法相关的,比如实时任务调度算法,O(1)调度算法(2.6.22版本被CFS调度算法取代),CFS调度算法等。经过前面的代码计算后找出下一个要执行的任务,然后开始执行上下文切换。先看一段linux2.6.18版本还使用O(1)调度算法的schedule函数代码:

03

从业务数据分析到机器学习应用的一次经历

本文通过一次完整的项目经历,从业务数据的分析开始,到产品优化建议,再到通过机器学习进行进一步的处理进行了比较完成的提炼。 腾讯电脑管家作为一款目前最流行的pc端软件之一,如何提升市场份额同时提升用户体验是我们一直在探索和考虑的问题。业务数据分析方面主要是考虑产品优化的建议;机器学习方面,特征构造、模型选型、ABtest等都有比较充分的描述和说明。希望能够对大家在数据分析的工作能有一定的启发,如有不足之处还望大家多指教。 腾讯电脑管家作为一款安全软件,目前在市场上拥有数量非常巨大的用户,并且承载着很多很多与用

02
领券