
linux & unix
文章平均质量分 81
haopeng123321
这个作者很懒,什么都没留下…
展开
-
linux 进程调度 总纲
操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了实际环境,这些结论是比较片面的。而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TASK_RUNNING状态的进程进行调度(参见《Linux进程状态浅析》)。如果进程不可执行(转载 2017-02-04 10:22:54 · 315 阅读 · 0 评论 -
如何查看linux命令源代码
用Linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下:以搜索ls命令源码为例,先搜索命令所在包,命令如下:[Java] view plain copylpj@lpj-linux:~$ which ls /bin/ls 用命令搜索该转载 2017-02-08 20:35:21 · 367 阅读 · 0 评论 -
linux
2.6之前不支持内核抢占,支持用户抢占。用户态抢占必须等内核代码运行完毕,返回用户态前夕。内核抢占是在内核代码运行期间,内核态里其他代码间互相抢占。内核态抢占发生时机:1.中断调用返回,need_resched == 1,2.内核从不可抢占变为可抢占preempt_count(这个是持有锁个数) ==0,也是隐式调用schedule()3.内核任务显示调用schedule,原创 2017-02-05 21:01:32 · 258 阅读 · 0 评论 -
linux内核线程 [实现2]
一.基础知识:线程和进程按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。无论按照怎样的分法,一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等),而将线程分配到某个cpu上执行。一个进程当然可以拥有多个线程,此时,如果进程运行转载 2017-02-05 16:17:00 · 388 阅读 · 0 评论 -
linux内核线程 [实现]
首先从OS设计原理上阐明三种线程:内核线程、轻量级进程、用户线程内核线程内核线程就是内核的分身,一个分身可以处理一件特定事情。这在处理异步事件如异步IO时特别有用。内核线程的使用是廉价的,唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。支持多线程的内核叫做多线程内核(Multi-Threads kernel )。轻量级进程轻量级线程(LWP)是一种由内核支持的用户线程。转载 2017-02-05 14:56:04 · 928 阅读 · 0 评论 -
linux内核线程 [内核线程 用户进程 用户线程]
只有“内核线程”的概念,不存在所谓的“内核进程”。 内核线程的作用主要有:周期性的将dirty内存页同步到磁盘设备上。 比如 bpflush线程周期性的把dirty数据写回磁盘内存页很少的情况下,把内存page 交换到磁盘空间。 比如kswapd,系统会为每一个NUMA创建一个kswapd进程,但是在非NUMA系统上,则仅有一个kswapd管理延时动作实现文件系统的事物日志转载 2017-02-05 11:08:37 · 2679 阅读 · 0 评论 -
linux内核线程 [创建]
本文以ARM架构为例,讲解linux的内核线程是如何创建的。Linux内核在完成初始之后,会把控制权交给应用程序。只有当硬件中断、软中断、异常等发生时,CPU才会从用户空间切换到内核空间来执行相应的处理,完成后又回来用户空间。如果内核需要周期性地做一些事情(比如页面的换入换出,磁盘高速缓存的刷新等),又该怎么办呢?内核线程(内核进程)可以解决这个问题。内核线程(kernel threa转载 2017-02-05 14:08:55 · 576 阅读 · 0 评论 -
linux进程调度 [分章]抢占
非抢占式内核非抢占式内核是由任务主动放弃CPU的使用权。非抢占式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务假设使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。非抢占式内核如下图所示。非转载 2017-02-05 09:54:25 · 394 阅读 · 0 评论 -
linux 进程调度 [分章]算法
首先,从不同的角度,可以对运行中的进程分类。如,从资源耗损的角度,可以分为I/O受限(频繁使用I/O设备)和CPU受限(需要大量的CPU计算)。又如,从运行模式上,可以分为交互式进程(需要大量的时间等待用户的键盘和鼠标指令,同时进程需要在指令到达后被尽快唤醒),批处理进程(如编译程序,数据库等),实时进程(如软件codec,编码对实时性要求很高)。还如,从在内核中被调度的方式上,可以分转载 2017-02-05 09:41:35 · 271 阅读 · 0 评论