深入了解Linux系统进程

深入了解Linux系统进程
注释:该过程是执行期间的程序和它所包含的所有资源的通用名称,包括虚拟处理器、虚拟空间、寄存器、堆栈、全局数据段等。
1。什么是过程

该过程是执行期间的程序和它所包含的所有资源的通用名称,包括虚拟处理器、虚拟空间、寄存器、堆栈、全局数据段等。

在Linux,每个进程被分配一个数据结构时,它被创造,被称为一个进程控制块(简称进程控制块),PCB包含系统调度和过程本身是用了很多重要的信息。所有进程的PCB存储在内核空间,PCB最重要的信息是,内核进程PID,唯一标识一个进程通过pid.pid可以回收,和最大是32768,init进程的PID为1,和其他进程是init进程的后裔。

除了进程控制块(PCB),每个进程有一个独立的内核堆栈(8K),一个进程描述符的结构,这是存储在内核空间作为过程控制信息,而在进程用户空间的代码和数据的主要存储。

2创造。过程

这个过程是通过调用fork(),:::::Clone和VFORK()()系统调用创建一个新的过程。在内核中,他们都是调用fork函数do_fork.the传统直接拷贝父进程的所有资源给子进程,Linux的:叉()通过复制页面实现的,也就是说,父进程和子进程共享同一资源的副本。只有当数据发生变化时,数据才会被复制。

三者之间的差异如下:

:():父进程的所有数据结构将副本复制到子进程(写时复制页)。

::VFORK():只复制task_struct和内核堆栈,所以生成是父进程只有一个线程(没有独立的用户空间)。

::Clone():功能强大,有很多参数。::(克隆)允许您有选择地继承父母的资源,可以选择为::VFORK()作为父进程共享一个虚拟空间,从而创建线程,不能分享你的父进程,你甚至可以选择创建与父进程不再是父子关系,但兄弟之间的关系。

撤销3。过程

进程退出执行调用退出(),这将终止进程并释放所有资源。父进程可以查询是否是子进程的终止wait4()。在死亡状态,当进程退出,直到它的父进程调用wait()或waitpid(到目前为止)。当家长进程退出,内核指定线程组或init进程的其他进程的父进程的子进程新的。当一个进程接收到信号,无法处理或忽略,或当一个不可恢复的CPU异常是在内核态的产生,内核只是代表运行的过程中,和内核可使进程终止。

4。过程管理

在一个双向循环链表存储过程的信息称为内核的任务列表(内核空间),列表中的每个项目都是task_struct,即进程描述符。它包含一个特定进程的所有信息,包括打开文件、进程地址空间、挂起的信号、进程状态等。
通过板经销商task_struct Linux,所以实现对象的复用和缓存着色(预配置和task_struct,反复使用可避免资源的消耗引起的动态分配和释放)。
核心组织中的所有进程task_running状态到运行双向循环队列。通过扫描整个运行队列,调度功能得到最可执行的流程执行,避免扫描所有进程和提高调度效率。

5的内核堆栈。过程

Linux为8kb大小的内存区域的每个过程中存储过程的两个不同的数据结构:该thread_info进程的内核栈。

当进程在内核中,堆栈是不同的从用户态栈,用于内核控制路径栈很少,所以对8KB够栈描述符。

tag:系统进程电脑软件Linux

相关内容