- 博客(8)
- 资源 (7)
- 收藏
- 关注
原创 Linux 2.4进程调度分析 1
Linux 2.4 进程调度分析 内容提要:● 前言:技术的背景、特点和应用价值● 就绪进程选择算法● 相关数据结构● 调度器及其他核心应用的调度相关部分:具体实现时函数的调用关系,并对各函数的基本功能进行说明● Linux 2.4调度系统的一些问题:从操作系统原理的角度对所选择技术的优缺点及可能存在的改进方法进行分析 一. 前言1. 技术背
2004-05-29 16:02:00 3079
原创 Linux 2.4进程调度分析 5
2. 调度器工作时机调度器的启动通常有两种方式:A. 主动式在核心应用中直接调用schedule()。这通常发生在因等待核心事件而需要将进程置于挂起(休眠)状态的时候--这时应该主动请求调度以方便其他进程使用CPU。下面就是一个主动调度的例子:/* 节选自[drivers/input/mousedev.c] mousedev_read() */
2004-05-29 16:02:00 4574
原创 Linux 2.4进程调度分析 4
B. prev在schedule中,当前进程(也就是可能被调度走的进程)用prev指针访问。对于SCHED_RR的实时进程,仅当该进程时间片结束(counter==0)后才会切换到别的进程,此时将根据nice值重置counter,并将该进程置于就绪队列的末尾。当然,如果当前就绪队列中不存在其他实时进程,则根据前面提到的goodness()算法,调度器仍将选择到该进程。如果处于TAS
2004-05-29 15:48:00 2155
原创 Linux 2.4进程调度分析 6
六. 其他核心应用的调度相关部分系统中很多技术都和调度器相关,这里仅就其中几个稍作展开,并且不涉及该技术的细节,仅就其中与调度器相关的部分进行讨论,假定读者对于该技术有初步的了解。1. IDLE进程系统最初的引导进程(init_task)在引导结束后即成为cpu 0上的idle进程。在每个cpu上都有一个idle进程,正如上文所言,这些进程登记在init_tasks[]数组中,并可用i
2004-05-29 15:48:00 2535
原创 Linux 2.4进程调度分析 7
3. smp系统初始化init_task在完成关键数据结构初始化之后,在进行硬件的初始化之前,会调用smp_init()对SMP系统进行初始化。smp_init()调用smp_boot_cpus(),smp_boot_cpus()对每一个CPU都调用一次do_boot_cpu(),完成SMP其他CPU的初始化工作。
2004-05-29 15:48:00 1758
原创 Linux 2.4进程调度分析 8
3. 实时性能Linux 2.4通过就绪进程选择算法的设计区分实时进程和非实时进程,只要有实时进程可运行,非实时进程就不会获得运行机会。Linux又将实时进程分为SCHED_RR和SCHED_FIFO两类。SCHED_RR时间片结束后会发生调度,并将自己置于就绪队列的末尾,从而给其他rt_priority相同(或更高)的实时进程运行机会(见"调度器工作流程"),而SCHED_FIFO不会因时间
2004-05-29 15:48:00 2217
原创 Linux 2.4进程调度分析 2
3. current核心经常需要获知当前在某CPU上运行的进程的task_struct,在Linux中用current指针指向这一描述符。current的实现采用了一个小技巧以获得高效的访问速度,这个小技巧与Linux进程task_struct的存储方式有关。在Linux中,进程在核心级运行时所使用的栈不同于在用户级所分配和使用的栈。因为这个栈使用率不高,因此仅在创建进程时分配了两个页(8
2004-05-29 15:47:00 2420
原创 Linux 2.4进程调度分析 3
四. 进程切换过程从一个进程的上下文切换到另一个进程的上下文,因为其发生频率很高,所以通常都是调度器效率高低的关键。在Linux中,这一功能是以一段经典的汇编代码实现的,此处就着力描述这段代码。这段名为switch_to()的代码段在schedule()过程中调用,以一个宏实现: /* 节选自[
2004-05-29 15:47:00 2020 2
spring cloud中文版【Spring Cloud Config】--spring cloud中文文档.pdf
2019-06-21
Spring Cloud Netflix【spring cloud中文版】--spring cloud中文文档.pdf
2019-06-21
《Spring Cloud 微服务架构进阶》_朱荣鑫.pdf
2019-06-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人