转载-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中)实现
相关文档:
环境软件版本介绍:
APACHE 2.0.59
PHP5.2.3
MYSQL5.0.45
GD-2.0.35
Zend Optimizer v3.3.0
  ......
Fedora8----------VMWare6.03 build-80004
1. host(win)-guest(fedora)共享文件夹
在VMWare中设置共享文件夹
选择vmware workstation程序菜单中VM > install VMware tools...
#mkdir /mnt/cdrom
#mount -t iso9660 /dev/cdrom /mnt/cdrom(vmtools的安装文件放在vmware虚拟的cdrom中,首先要moun ......
随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统。由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Windows操作系统共存形成异构网络。在服务器端大多使用Linux和Unix的,目前Linux的擅长应用领域是单一应用的基础服务器应用,譬如DNS和DHCP服务器、W ......
1 安装 中文输入法
2 PDF 文件乱码
sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional poppler-data
3 安装Flash firefox
sudo apt-get install flashplugin-nonfree
sudo update-flashplugin
opera与scim冲突的问题
sudo apt-get install scim-qtimm
sudo gedit /usr/bin/opera
添加 ......