您的位置:首页 > 运维架构 > Linux

操作系统精髓与设计原理--linux进程和线程

2016-10-13 22:08 288 查看
linux中的进程或任务由一个task_struct数据结构表示,task_struct包含以下分类信息:

(1)状态,进程执行状态(执行,就绪,挂起,停止,僵死)

(2)调度信息:linux调度进程所需要的信息。

(3)标识号:每个进程有一个唯一的进程标识号,还有用户标识号和组标识号。

(4)进程间通信:linux支持UNIX SVR4中的IPC机制

(5)链接:每个进程都有一个到他的父进程的链接以及它的兄弟进程的链接和到所有子进程的链接

(6)时间和计时器:包括进程创建时间和进程所消耗的处理器的时间总量。

(7)文件系统:包括指向被该进程打开的任何文件的指针和指向该进程当前目录和根目录的指针

(8)虚存:定义分配给该进程的虚存空间

(9)处理器专用上下文:构成该进程上下文的寄存器和栈信息

linux线程:

在linux中通过复制当前进程的属性可创建一个新进程。

一个新进程可以被克隆,因此它可以共享资源如文件,信号处理程序和虚存。

当两个进程共享相同的虚存时,他们可以被当作是一个进程中的线程。

但是没有单独为线程定义的数据接口。

通常在使用fork()的地方,linux用clone()命令创建进程。

传统的fork()系统调用在Linux上是用所有克隆标志清除的clone()系统调用实现的

被克隆的进程是共享同一内存空间进程组的组成部分,但他们不能共享同一个用户栈。

所以clone()调用为每个进程创建独立的栈空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: