Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

读书笔记之《深入理解LINUX内核》第7、8、9章

来源: engrossment 分享至:

第7章:进程调度

进程调度(scheduling)主要关心什么时候进行进程切换及选择哪一个进程来运行。

    第一节调度策略。Linux的调度基于分时(time sharing)技术:多个进程以“时间多路复用”方式运行,因为CPU的时间被分成“片(slice)”,给每个可运行进程分配一片。

    第二节调度算法。分为普通进程的调度和实时进程的调度。每个普通进程都有它自己的静态优先级,根据该优先级可以算出它的基本时间片。当然,还有根据进程的平均睡眠时间来调整的动态优先级。

    第三节调度程序所使用的数据结构。数据结构runqueue是Linux2.6调度程序最重要的数据结构。系统中的每个CPU都有它自己的运行队列,所有的runqueue结构存放在runqueue每CPU变量中。此外,进程描述符也是很重要的数据结构。

    第四节调度程序所使用的函数。这一节讲解的函数有以下几个:scheduler_tick()、try_to_wake_prio()、recalc_task_prio()、schedule()。

    第五节多处理器系统中运行队列的平衡。调度域的概念:实际上是一个CPU集合,它们的工作量应当由内核保持平衡。还有三个重要函数:rebalance_tick()、load_balance()、move_tasks()。

    第六节与调度相关的系统调用。讲解了好几个系统调用:nice()系统调用,不过已经被setpriority()取代、getpriority()、setpriority()、sched_getaffinity()、sched_setaffinity()、sched_getscheduler()、sched_setscheduler()、sched_getparam()、sched_setparam()、sched_yield()、sched_get_priority_min()、sched_get_priority_max()、sched_rr_get_interval()。

第8章:内存管理

这章有三大块内容,“页框管理”和“内存区管理”两节分别介绍对连续物理内存区处理的两种不同技术,而“非连续内存区管理”一节介绍的是处理非连续内存区的技术。

第9章:进程地址空间

当用户态进程请求动态内存时,并没有获得请求的页框,而仅仅获得对一个新的线性地址区域的使用权,而这一线性地址区间就成为进程地址空间的一部分。这一区间叫做“线性区”

    第一节进程的地址空间只是简单介绍了线性地址的一些相关内容。例如进程获得新的线性地址的几种情况。

    第二节内存描述符。每一个内存描述符包含了它所对应的进程的地址空间的全部信息,一共有50个左右的字段用于标识各种信息。由于内核的特殊性,内核进程不拥有内存描述符。

    第三节线性区。这是本章的重点。因为进程的地址空间就是有一个一个的线性区组成的。线性区描述符由vm_area_struct结构体实现。进程所拥有的线性区从来不重叠,并且内核尽力把新分配的线性区与紧邻的现有线性区进行合并。对某一个进程所拥有的所有的线性区,有两种组织方式,一种是链表,另一种是红黑树。

    第四节缺页异常处理程序。这一节讨论了各种导致缺页异常的情况及其处理方法。另外还介绍了请求调页技术和写时复制技术。

    第五节创建和删除进程的地址空间。创建时调用copy_mm()函数,使用写时复制技术。当进程结束时调用exit_mm()函数,释放进程的地址空间。

2011.12.8


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史