易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux kernel development Chapter2 进程管理

1 进程管理相关代码
  1.1 thread_info结构,在文件<asm/thread_info.h>中定义
      struct thread_info {
           struct task_struct *task;
           struct exec_domain *exec_domain;
           unsigned long flags;
           __u32 cpu;
           __s32 preempt_count;
           mm_segment_t addr_limit;
           u8 supervisor_stack[0];
        };
        每个任务的thread_info结构在其内核栈顶端分配,其task域指向该任务的事件task_struct结构。
   1.2 任务队列(task list)
      双向循环链表,链表每一项都是一个task_struct(定义在include/linux/sched.h中),该进程描述符包含了一个仅进程的所有信息。
   1.3 slab
       linux通过slab机制分配task_struct结构,以达到对象复用和缓存着色的目的。
   1.4 pid
       linux通过pid(pid_t类型,integer)来标示每一个任务进程。为了与老版本unix和linux兼容,pid最大值为32767.如果需要更多进程,可以通过
修改/proc/sys/kernel/pid_max来提高上限。
   1.5 current宏
        current宏用于查找当前正在运行进程的进程描述符。不同的硬件体系结构的实现不同。
        在x86架构中,寄存器不多,不能使用专门的寄存器指向当前进程的task_struct.它的方式是通过在内核栈顶端创建thread_info结构,间接的
查找task_struct结构:
         (1)通过屏蔽栈指针(esp)的后13个有效位获得thread_info结构,在current_thread_info()函数完成:
        &n


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

Linux内存管理之slab分配器分析(续四)


七:kmem_cache_free()的实现
kmem_cache_free用于把从slab中分配的对象释放掉,同分配一样,它首先会把它放到AC中,如果AC满了,则把对象释放到share链中,如果share也满了,也就把它释放至slab。来看具体的代码:
void kmem_cache_free (kmem_cache_t *cachep, void *objp)
{
     unsi ......

Linux内存管理之slab分配器分析(续五)

 九:几点补充:
1: Slab中使用的页面都会加上“PG_slab”标志,以跟一般的页面区别。另外,在释放内存的时候,经常需要用到从页面到slab的对应转换关系。那是怎样标识的呢?
关于标志:
注意有以下代码:
static void *kmem_getpages(kmem_cache_t *cachep, int flags, int nodeid)
{
  &n ......

Linux 系统时间设置、编程总结

未完待续...
设置时间:
date -s "2009/11/08 11:23:00"
硬件时钟与系统时间同步一下:
hwclock --systohc
编程:
#include <cstdlib>
time_t time(time_t *timer)
调用后将当前系统时间与1900年1月1日相差的秒数存入到timer中,timer可看成是一个长整型数
具体描述:
  函数原型:  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号