Linux内核之进程管理学习笔记

1、支持线程的计算机系统里面,进程作为资源分配的基本单位而存在,线程作为调度的基本单位而存在。线程仅拥有必不可少的一些资源,如:一组寄存器、堆栈信息等等和其他线程共享同一个进程的所有资源。所以,在同一个进程的线程切换时不需要大量的保存和恢复工作,同时由于共享同一个存储空间,不需要更新快表TLB,提高了系统性能。

线程的实现方法有三种:1、用户级线程;2、内核级线程;3、混合线程模型。Linux内核中的进程和线程都用相同的数据结构task_struct表示;线程是特殊的进程,共享同一地址空间、共同合作。

2、进程与进程描述符是一一对应的关系。用数据结构task_struct来表示,(定义在/Linux/sched.h中),它包含了进程的详细信息,主要有进程标识符PID、进程占用的内存区域、相关文件的文件描述符、进程环境、信号处理、同步处理等。

3、进程标识符PID。POSIX标准中规定一个多线程应用程序中的所有线程都必须有相同的PID,在linux内核引入线程机制时,采用了线程组机制,同一线程组中的线程有相同的线程组号(ThreadGroupID),tgid.线程组组号放在进程描述符的成员变量tgid中.

4、进程的状态

进程的转移关系如下图:

深度睡眠和浅度睡眠进程得到它需要的资源被唤醒,通过schedule()进入执行态,深度睡眠的进程不能被信号或者定时中断唤醒,只有它申请的资源又有效是才能被唤醒。

5、进程上下文

在进程切换时,需要保存当前运行进程的执行状态,这些状态信息就是进程上下文。内核设计了一个更小巧的数据结构structthread_struct 来保存内核使用的相关任务状态段内容,他们在进程描述符的成员变量thread中。

6、当前进程

Linux内核之进程管理(学习笔记)

Linux2.2内核开始采用宏定义current来获取当前进程的描述符。

内核首先将当前进程的地址及需要快速访问的其他状态标记记录在数据结构structthread_info中,然后将该数据结构保存到内核态栈栈空间中的最低地址位置。该数据结构在内核态的位置有数据结构unionthread_union 决定,定义如下:

union thread_union {

struct thread_info thread_info;

unsignedlongstack[THREAD_SIZE/sizeof(long)];

}

这里,内核态栈stack与数据结构thread_info共享同一块内存。由于内核态栈由高地址向地地址方向增长,且内核态栈占的空间比数据结构thread_info大得多,所以有效的防止他们互相覆盖和冲突。

宏定义current通过下面的函数获取

static inline struct task_struct * get_current(void)

{

returncurrent_thread_info()->task;

}

static inline struct thread_info * current_thread_info(void)

{

struct current_thread_info *ti;

__asm__(“andl %%esp, %0”;”:”=r” (ti) : “0”(~(THREAD_SIZE-1)));

return ti;

}

将当前指针%esp与数值~(THREAD_SIZE-1) 按位与运算,并将结果给ti。ti保存的值恰好是内核态栈中的最低位地址,这里正是进程描述中成员变量thread_info所在的位置,也即当前进程描述符的成员变量thread_info的地址。

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/33867.html

更多阅读

上古卷轴5之mod管理器NMM的使用方法 上古卷轴5用mod管理器

上古卷轴5之mod管理器NMM的使用方法——简介上古卷轴5是个好游戏。具体怎么好,网上的赞美之词铺天盖地,也用不着我在说什么了。而让上古卷轴获得好评的其中最重要的一点,就是同样铺天盖地的mod。不断涌现的它让众多玩家把老滚5下了又删

中小学教师职业道德规范学习笔记

中小学教师职业道德规范学习笔记一、依法执教。学习和宣传马列主义、毛泽东思想和邓--同志建设有中国特色社会主义理论,拥护党的基本路线,全面贯彻国家教育方针,自觉遵守《教师法》等法律法规,在教育教学中同党和国家的方针政策保持一

linux添加分组和用户学习笔记

(1)关闭linux的命令:Shutdown –h now(2)进入linux后添加组的操作:group addpoliceman这个就添加了policeman这个分组。(3)查看所有分组:

伤寒学习笔记(下

伤寒学习笔记---14,桂枝用量问题?学习仲景药法,涉及用量问题。深入考证,固然不必,简单了解,实属必要。仅以桂枝为例,整理如下:基本资料:《现代中医药应用与研究大系》1985年版,简称《大系》。药法:凡例里说:“将其折合今之用量---,并结合笔者临床

关于闪光灯TTL的学习笔记

关于闪光灯TTL的学习笔记(转)俺注:一直对加闪光灯的拍摄比较疑惑,要知道并不是加开个闪光就一了百了的。特别是现在的专业闪灯,有好几种模式,都需要配合相机的测光使用。今天无意之间看到一篇解疑的文章,赶紧收集下来仔细学习。想学习下闪

声明:《Linux内核之进程管理学习笔记》为网友巛幻影仙峰队灬分享!如侵犯到您的合法权益请联系我们删除