[Linux内核完全剖析]第五章Linux内核体系结构5.7总结 进程控制
PCB(Process Control Block 进程控制块)又称任务数据结构,位于include/linux/sched.h中:
struct task_struct{ long state; //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。[......]
PCB(Process Control Block 进程控制块)又称任务数据结构,位于include/linux/sched.h中:
struct task_struct{ long state; //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。[......]
Linux内核是宏/单内核,分5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通讯模块、网络接口模块。
三种地址概念:
虚拟地址(Virtual Address)、逻辑地址(Logical Address):是程序产生的。虚拟地址由段选择符和段内偏移两部分组成,段内偏移又称逻辑地址[……]
看到红色的Challenge就想挑战一把,于是搞了下VESA图形模式的编程。
科普知识:
什么是VBE?
VBE的全称是VESA BIOS Extension。
什么是VESA?
VESA的全称是Video Electronics Standards Association即视[……]
LAB1给代码中的’/t’的处理很简陋,直接把’/t’替换为5个空格,这和我们平时习惯有很大不同,所以要改造一下。
1、在kern/console.c cga_putc()函数中,可以看到’/t’case分支,把这个分支替换为如下代码:
case '/t':[......]
在qemu+gdb的调试环境中,gdb的b命令生效地址必须是虚拟机的物理地址,但是OS中运行的程序大部分都是以虚拟地址出现的,所以计算出真实的物理地址才能下断点。
MIT6.828的LAB1中的内核代码中,内核段基址为0x10000000(可由kern/entry.S中的mygdt标号下的数[……]
1、整体
ELF文件结构看起来如下:
Linking View Execution View ============ ============== ELF header[......]
第四章
本章主要讲述了IA32架构下的段页管理以及中断异常和任务的切换等基础知识。要点多,理解难度大。
要点1: 段描述符和门描述符的格式
要点2: 段选择和切换的时候进行的权限验证
要点3: 页目录和页表的格式以及权限设置
要点5: CR0-CR3 GTDR ITDR LTDR TR EFLAG[……]