现在明确一下阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收到数据包,或者调用sleep指定的睡...
分类:
系统相关 时间:
2014-10-20 11:57:26
阅读次数:
182
Linux内核-进程管理
1.进程
#内核调度的对象是线程,不是进程
#对Linux而言,线程只是特殊的进程
#进程提供两种虚拟机制:虚拟处理器、虚拟内存
#创建进程通过fork()来从父进程复制创建进程
2.进程描述符
#任务队列:双向链表(每一项都是task_struct--->进程描述符)
#Linux通过slab分配器...
分类:
系统相关 时间:
2014-10-19 14:19:49
阅读次数:
214
kobox: key_wq.c - v1
说明:
TQ2440按键驱动,对四个按键的驱动处理
key_wq.c和key.c类似,与key.c按键驱动的不同之处:
key.c中使用定时器,在中断发生100ms后调用定时器处理函数来防止按键抖动
key_wq.c使用工作队列,在内核调度共享工作队列,在工作队列中延时100ms然后判断按键状态来防止按键抖动
问题:
只有内核共享工作...
分类:
其他好文 时间:
2014-10-14 02:24:27
阅读次数:
340
系统机制:windows2000为执行体、内核、设备驱动程序等核心态部分提供了一些基础机制。先让我们看看都有哪些:(1)陷阱调度:包括中断、延迟过程调用(DPC)、异步过程调用(APC)、异常处理、系统服务调度。(2)执行体对象管理(3)同步机制:自旋锁、内核调度对象以及等待是如何实现的(4)系统线...
在我看的两种RTOS中,线程都是以优先级队列的方式存储,有的可能支持同优先级的线程,那每一个优先级的线程就以循环链表的方式存储。而这个优先级队列是以数组的方式存储。如下图所示: 在内核调度时,需要从就绪队列中找出优先级最高的线程,乍看下狠高端,其实简化下,就是在数组中找最大数的算法。而且,数的范围是...
分类:
其他好文 时间:
2014-09-09 11:49:18
阅读次数:
842
一个可执行二进制程序,被加载到内存,被内核调度到CPU上运行,这时候,就表现了一个进程。也可以说进程是程序的一个实例,是程序的动态表现。在Linux系统中进程(process)是有属主的,也就是该进程以哪个用户的身份运行的。大家都知道,程序有输入和输出,也称这为程序IO。如果..
分类:
系统相关 时间:
2014-07-10 18:49:16
阅读次数:
586
首先说一下线程的概念.其实就是运行在进程的上下文环境中的一个执行流.普通进程只有一条执行流,但是线程提供了多种执行的路径并行的局面.
同时,线程还分为核心级线程和用户级线程.主要区别在属于核内还是核外.
核心级线程,地位基本和进程相当,由内核调度.也就是说这种系统时间片是按线程来分配的.这种线程的好处就是可以适当的运用SMP,即针对多核CPU进行调度.
用户级线程,在用户态来调度.所以相对来...
分类:
编程语言 时间:
2014-06-22 22:47:42
阅读次数:
328
线程是一种使程序在同一时间做多件事的机制,和进程一样是并发执行的。linux内核调度为每个线程分配一个时间片,使用完后等待下次调度。和进程相比,线程是一种更小的执行单位。
每个进程启动后都会有一个线程在运行,称为主线程,可以在主线程中启动多个子线程,这些线程在同一个进程中,不同线程在给定时间内执行不同的代码片段。
我们可以fork一个子进程,这个子进程就是对父进...
分类:
编程语言 时间:
2014-05-18 04:58:16
阅读次数:
307