您现在的位置是:首页 > 技术资料 > 内核分析:进程
推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

内核分析:进程

更新时间:2020-11-30 12:01:28 大小:6M 上传用户:sun2152查看TA发布的资源 标签:内核 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

从系统内核的角度看来,一个进程仅仅是进程控制表(process table)中的一项。进程控制表中的每一项都是一个 task struct结构,而 task struct结构本身是在include/linux/sched.h中定义的。在 task struct结构中存储各种低级和高级的信息,包括从一些硬件设备的寄存器拷贝到进程的工作目录的链接点

进程控制表既是一个数组,又是一个双向链表,同时又是一个树。其物理实现是一个包括多个指针的静态数组。此数组的长度保存在 include/linux/tasks.h定义的常量 NR TASKS中,其缺省值为128,数组中的结构则保存在系统预留的内存页中。链表是由 next task和prev task两个指针实现的,而树的实现则比较复杂

系统启动后,内核通常作为某一个进程的代表。一个指向 task struct的全局指针变量current用来记录正在运行的进程。变量 current只能由 kernel/sched.c中的进程调度改变当系统需要查看所有的进程时,则调用 for each task,这将比系统搜索数组的速度要快得多

、用户进程和内核线

某一个进程只能运行在用户方式(user mode)或内核方式(kernel mode)下。用户程序运行在用户方式下,而系统调用运行在内核方式下。在这两种方式下所用的堆栈不一样用户方式下用的是一般的堆栈,而内核方式下用的是固定大小的堆栈(一般为一个内存页的大小尽管1iux是一个宏内核系统,内核线程依然存在,以便并行地处理一些内核的“家务室”。这些任务不占用 USER memory(用户空间),而仅仅使用 KERNEL memory。和其他内核模块一样,它们也在高级权限(i386系统中的RING0)下工作作。内核线程是被 kernel thread

[arch/i386/kernel/process]创建的,它又通过调用著名的 clone系统调用ereh/i3s6//kernel/(类似fork系统调用的所有功能都是由它最终实现int kernel thread(int(*fn)(void*)void*arg,unsigned long flags)


部分文件列表

文件名 大小
内核分析:进程.pdf 6M

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载