1.在Linux中轻量级进程就是线程,轻量级进程之间可以共享资源。
进程描述符:task_struct 存放一个进程相关的所有信息。可以说一个进程描述符就代表一个进程。
进程的七种状态:可运行状态、可中断等待状态、不可中断等待状态、暂停状态、跟踪状态、僵死状态、僵死撤销状态
进程标识符(PID)
进程描述符存放在动态内存中,便于内核管理。内核将线程描述符(thread_info)和内核态的进程堆栈一起存放于8K字节的两个页框中。
线程描述符和进程描述符相互关联,即分别存在于对方的字段中。
current宏标识运行在当前CPU上的进程。
进程链表:双向链表,将所有进程的描述符链接起来。进程链表的头是init_task描述符,即所谓的0进程。
Linux为每种进程优先权都建立一个对应的链表。prio_array_t 数据结构存放这些链表。
进程间的关系:
进程描述符中表示进程亲属关系的字段描述:
real_parent、parent、children、sibling
内核为加速从PID导出对应的进程描述符指针引入了4个散列表:PID,TGID,PGID,SID
Linux利用链表来处理冲突的PID:每一个表项由冲突的进程描述符组成的双向链表。
等待队列:当进程需要等待某个事件的发生而需要睡眠时,则当前进程就把自己放进合适的等待队列,等待内核唤醒他们。
两种睡眠进程:互斥进程和非互斥进程
进程资源的限制
2.进程切换
硬件上下文切换,任务状态段的切换
执行进程的切换: http://home.ustc.edu.cn/~hchunhui/linux_sched.html#sec10
保存和加载FPU、MMX、XMM寄存器的值
3.创建进程
原文:https://www.cnblogs.com/ciel12138/p/10564076.html