进程是操作系统中最重要的概念,但是进程如何表示?通常的操作系统书籍都用了一个词:进程控制块,简称:PCB。也就是在一块连续的内存中包含了进程的各种信息。这些信息通常包含
1、标识信息。主要是用于识别进程,常见的有进程名,进程id,用户id等等。
2、调度信息。像栈指针,CPU时间、进程状态和一些调度相关参数。
3、资源信息。例如打开的文件列表、已经打开的内核对象列表等。
4、各类统计信息。
具体到Lenix,Lenix使用一个结构体来表示进程。具体的定义是这样的
typedef struct _proc_t
{
struct _proc_t * proc_wait;
char proc_name[32]; /* 进程名称 */
void * proc_stack; /* 进程栈指针 */
void * proc_entry;
uint32_t proc_pid;
uint32_t proc_exit_code; /* 退出代码 */
uint32_t proc_alarm; /* 进程定时器 */
uint32_t proc_sched_factor;
uint32_t proc_seize; /* 抢占标志 */
byte_t proc_stat; /* 进程状态 */
char proc_cpu_time;
}proc_t;
这个只是初步的定义,随着内容的深入,这个结构会慢慢变得庞大。
目前这个结构中,只是包含了最基本的信息。各个字段的用途在往后的内容中,慢慢进行说明。