转载-linux 2.6 进程总结
转载-linux 2.6 进程总结
进程、轻量级进程(LWP)、线程
进程:程序执行体,有生命期,用来分配资源的实体
线程:分配CPU的实体。
用户空间实现,一个线程阻塞,所有都阻塞。
内核实现,不会所用相关线程都阻塞。用LWP实现,用线程组表示这些线程逻辑上所属的进程。
进程描述符
进程描述符(简称pd, process descriptors),结构体是:task_struct
数据较多,存放在kenerl的动态内存空间。
pd的引用放在thread_info中,
thread_info与内核栈,放在一个8K空间(它的地址8K对齐)。内核程序使用的栈空间很小。
thread_info在底部,内核栈在顶部向下增长。
好处:多CPU时方便,每个CPU根据自己的栈指针就可以找到当前的pd (以后用current表示当前CPU运行的进程描述符)。
esp(内核栈指针)低8位置零,就是thread_info地址。
每进程有自己的thread_info, (分配释放函数: alloc_thread_info, free_thread_info)
描述符的内容
相关的ID (一个4元素数组)
进程ID (PID)
PID按创建顺序连续增长,到最大值后从最小值开始。
0号进程:交换进程(swapper)
有PID可用位图,表示那一个PID可用,至少占一个页。
线程组ID(tgid),用LWP实现多线程支持
多进程时,进程id,就是线程组id, 也就是组长的pid(LWP)。 getpid() 取的是线程组的id(tgid), 也是组长的pid.
单线程时,pid = gid。所以getpid,也是真正的pid.
进程组ID(pgrp)。
回话的ID(session).
组ID,都是组长的PID。FIXME: 但pb也有各组长的PID
线程组长:tgid
进程组长:signal->pgrp ,
会话长:signal->session
管理ID数据结构——哈希表管理 (利用id找到所用相关的pd,方便)。
一个哈希表数组(pid_hash),存放四个哈希表, 每一个表代表一类id (pid, tgid, pgrp, session)
每个哈希表的由数组(索引为哈希值)和二维链表(嵌入到进程描述符内的pids中)实现
相关文档:
1、总结背景
在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本案例基于RedHat AS4讲 ......
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息, 并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。
wait(等待子进程中断或结束)
相关函数 waitp ......
作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息。但是网络设备通常只支持有限的用户管理功能。学习如何使用 Linux™ 上的一个外部 RADIUS 服务器来验证用户,具体来说是通过一个 LDAP 服务器进行验证,可以集中放置存储在 LDAP 服务器上并且由 RADIUS 服务器进行验证的用户信息,从而既 ......
如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bootloader)、规模缩小的分发版
(distribution)、文件系统和 GUI
看起来可能太多了。但是这些丰富的选项实际上是一种恩赐,允许您调整开发或用户环境以完全符合您的需要。对 Linux
嵌入式开发的概述将帮助您理解所有这些选项。
Linux 正在嵌入式开发领域稳步发 ......
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2: ......