summary

2.18

休眠通过等待队列进行处理。等待队列是由等待某些时间发生的进程组成的简单链表。

内核用wake_queue_heat_t来代表等待队列。

2.17

如果一个进程的大部分时间都在休眠,那么它就是I/O消耗型的。

如果一个进程执行的时间比休眠的时间长,那么它就是处理器消耗型的。

选定下一个进程并切换到它去执行是通过schedule()函数实现的;

自旋锁用于防止多个任务同时对可执行队列进行操作;

调度程序中最基本的数据结构是运行队列(runqueue);

可执行队列是给定处理器上的可执行进程的链表,每个处理器一个;

LInux的调度程序定义于kernel/sched.c中;

时间片是一个数值,它表明进程在被抢占前所能持续运行的时间;

进程并不是一定非要一次就用完它所有的时间片;

调度程序总是选择时间片未用尽,并且优先级最高的进程运行;

2.16

所有的进程都是PID为1的init进程的后代。内核在系统启动的最后的阶段启动init进程。该进程读取系统的初始化脚本(initscript)并执行其他的相关程序,最终完成系统启动的整个过程;

进程的另一个名字是任务(task)。Linux内核通常把进程也叫做任务。

内核调度的对象是线程,而不是进程;

存放全局变量的数据段;

一段可执行程序代码,代码段(text section);

2.15

认真阅读源码非常必要,Linux系统代码的开放性其实是弥足珍贵的,不要无动于衷地将它搁置一边,从而浪费了打好资源。

只有动手写代码才能真正融会贯通。

Linux克隆了Unix,但Linux不是Unix。

尽管Linux借鉴了Unix的许多设计并且实现了Unix的API,但Linux没有像其他Unix变种那样直接使用Unix的源代码;

通常,一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成;

内核开发者通常把那些对时间要求比较高,而本身长度又比较短的函数定义成内联函数;

2.13

driver routines registered with VFS  through the file_operations structures;

2.2

distinguish pages(groups of data) from page frames(physical address in main memory).

This allows the same page to be stored in a page frame, then saved to disk and later

reloaded in a different page frame.This is the basic ingredient of the virtual memory mechanism.

术语“页”既指一组线性地址(即虚拟地址),又指包含在这组地址中的数据;

把线性地址(虚拟地址)映射到物理地址的数据结构称为页表(page table);

2.1

80*86微处理器怎样进行芯片级寻址,linux又是如何利用寻址硬件的;


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值