1.进程:
(1)处于执行期的程序,但不止是代码,还包括各种程序运行时所需的资源,实际上进程是正在执行的
程序的实时结果。
(2)程序的本身并不是进程,进程是处于执行期的程序及其相关资源的总称。
(3)两个或两个以上并存的进程可以共享诸如打开的文件,地址空间等共享资源。
(4)在Linux中通常是调用fork()系统函数的结果,通过复制一个现有的进程来创建一个新的子进程。
fork()系统函数
(5)fork在这个系统调用结束时,在同一位置上返回两次(从内核返回两次),父进程恢复运行,子进程开始运行。
exec()系统函数
(6) exce这组函数可以创建新的地址空间,并将新的程序载入其中。
exit()系统函数
(7)程序通过exit()系统调用退出执行,这个进程会终结进程,并将其占用的资源释放掉
wait4()系统函数
(8)父进程通过wait4()系统调用来查询子进程是否终结。
执行线程:简称线程,在进程中活动的对象,每个线程都拥有独立的程序计数器,进程栈,和一组进程寄存器。
2.进程描述符及其任务结构
(1)任务队列:进程的列表存放的一个双向循环链表
(2)进程描述符:这个链表的每个元素的类型,为task_stuct的结构体,包含的数据能完整的描述一个正在执行的程序的所 有信息,包括:打开的文件,进程的地址空间,挂起的信号,进程的状态,等。。
(3)分配进程描述符:linux通过slab分配器,分配task_struct结构,每个任务的thread_info结构在它的内核栈的尾端分配 结构中的task域的存放的是指向该任务的实际的task_struct指针。
(4)进程描述符的存放:内核通过唯一的进程标示值或者说PID值来标识每一个进程,PID是一个数,表示为pid_t隐含类型
实际上就是一个int型。
(5)