linux是单内核,模块在编译时可以选择是否编译进内核,或以模块的形式编译。如果以模块的形式编译,运行时加载模块和编译时添加进模块没有功能上的区别。
linux内核占据线性地址空间3G以上,用户程序可视空间4G。
linux所有程序包括内核使用的段的定义都一样,都是从0~... 也就是说进程切换时段寄存器不用改变。但是为什么程序不会冲突呢?也就是都从线性地址0开始,不会物理地址重合吗?不会,因为每次任务切换时页目录都换了。
linux只有一个TSS项,并不是每个任务一个TSS
linux内核线程是内核为了处理内核事物而创建的,避免了进程代表内核执行的缺点(上下文切换的开销)
linux支持内核抢占,但是不抢占中断处理,软中断。只抢占异常。最新版本内核采用四层分页模型,针对80x86,讲中间两层对应的为设为0,即还原成2层页目录 页表结构
linux使用轻量级进程实现线程,轻量级进程能独立被内核调度
静态优先级用于计算进程运行时间片,动态优先级是调度程序选择哪一个进程执行时使用。
linux里有实时进程,普通进程。实时进程调度中优先级低的进程不可能在优先级高的进程执行完之前执行。带时间片的实时进程是指同优先级间的时间片轮换执行,不是不同优先级之间的。