日期:2014-05-16  浏览次数:20678 次

《Linux内核设计与实现》学习笔记之“Linux进程管理机制”

一.进程(或者称为“任务”)简介

进程是OS最基本的抽象之一,通常进程包括“可执行程序代码”,“其他资源”(如:打开的文件,挂起的信号,内核内部数据,处理器状态,地址空间,一个或多个执行线程等)


.执行线程简介

执行线程(或称线程)是进程中活动的对象,内核调度的对象是线程,而不是进程,每个线程中都有一个独立的程序计数器,进程栈进程寄存器


.进程虚拟机制简介

进程提供了两种虚拟机制(后面的章节,我们还会学习哈~):

1.虚拟处理器:给进程一种假象,让这些进程觉得自己独享处理器(这个需要控制好时间片哈~不能太长也不能太短)

2.虚拟内存: 让进程再获取和使用内存时觉得自己拥有整个系统的所有内存资源


(注:线程之间可以共享虚拟内存,但拥有各自的虚拟处理器)


.进程在Linux内核中表示的数据结构task_struct

1.内核把进程存放在“任务队列”(一个双向循环链表的结构)中,链表中每一项都是类型为“task_struct(进程描述符)”的结构(<linux/sched.h>中

2.进程的task_struct是通过slab分配器分配生成的

3.内核通过一个唯一的进程标或者PID来标识每个进程。PID是一个数,int类型(最大默认为32768 [short int最大值]


struct task_struct {