linux 2.6源代码情景分析笔记之进程3
为内核寻找新进程在cpu上运行时,必须只考虑可运行进程(TASK_RUNNING)。
提高调度程序运行速度的诀窍是建立多个可运行进程链表,每种进程优先权对应一个不同的链表。每个task_struct描述符包含一个list_head类型的字段run_list。如果进程的优先权等于k(0-139),run_list字段把该进程链入优先权为k的可运行进程的链表中。
内核必须为系统中每个运行队列保存大量的数据,不过运行队列的主要结构还是组成运行队列的进程描述符表,所有这些链表都由一个单独的prio_array_t数据结构来实现。
185 struct prio_array {
186 unsigned int nr_active; 链表中进程描述符的数量
187 unsigned long bitmap[BITMAP_SIZE]; 优先权位图:当且仅当某个优先权的进程链表不为空时设置相应的位标志
188 struct list_head queue[MAX_PRIO]; 140个优先权队列的头结点
189 };
static void enqueue_task(struct task_struct *p, prio_array_t *array)
{
sched_info_queued(p);
list_add_tail(&p->run_list, array->queue + p->prio);
__set_bit(p->prio, array->bitmap);
array->nr_active++;
p->array = array;
}
此函数将进程描述符插入某个运行队列链表。于此函数对应的是dequeue_task(p,array)
进程描述符的prio字段存放进程的动态优先权,而array字段则是一个指针,指向当前运行队列的prio_array_t数据结构。
程序创建的进程具有父/子关系。如果一个进程创建多个子进程时,则子进程之间具有兄弟关系。进程0和进程1是由内核创建的。进程1(init)是所有进程的祖先。
real_parent:指向创建了p进程的描述符,如果p的父进程不再存在,就指向进程1(init)的描述符(如果用户运行一个后台进程而且退出了shell,后台进程就会成为init的子进程)
parent:指向p的当前父进程(这种进程的子进程终止时,必须向父进程发信号)。它的值通常与real_par
相关文档:
为了方便查看Linux系统下的错误码以及它的含义,写了一个程序来打印这些信息。
listerrno.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define MAX_ERRNO 256
int main(int argc, char* argv[])
{
int n = 0;
printf("----------------------- Errno ------------ ......
一、LINUX的进程状态 僵死态:当父进程还没有结束前,子进程就已经先结束了,这时子进程的资源没有人来回收。通常父进程需要用wait来等待子进程的结束。
进程的模式:用户模式(执行用户程序),内核模式(执行操作系统代码)
进程的类型:系统进程,用户进程 二、进程管理 ①fork函数
功能:创建一个全新的 ......
①malloc函数
原型:extern void *malloc(unsigned int num_bytes);
头文件:#include <alloc.h>
功能:分配长度为num_bytes字节的内存块。
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
举例:
#inclu ......
cfengine(配置引擎)是一种 UNIX 管理工具,其目的是使简单的管理的任务自动化,使困难的任务变得较容易。Cfengine
适用于管理各种环境,从一台主机到上万台主机的机群均可使用。到2.2 版本为止,我们现在所知的用于一般性管理的最大安装机群约为20,000 台。
图-1 是Cfengine 的组成部分的关系图 。
  ......
Some humorous things to do to a UNIX system:
from the csh (c shell):
% make love
Make: Don't know how to make love. Stop.
% got a light?
No match.
% sleep with me
bad character
% man: Why did you get a divorce?
man:: Too many arguments.
% rm God
rm: ......