摘要:
在Intel i386 CPU中,提供了TSS与TR用于任务切换,但是Linux出于效率的考虑自己实现了任务切换。但Linux内核还是使用了TSS,用于完成系统堆栈空间的自动切换(从用户空间进入系统空间时的堆栈切换)。 进程调度与切换 三种不同应用的需求:交互式,批处理,实时 调度政策:内核为系统中 阅读全文
摘要:
X86 CPU对中断的硬件支持 中断控制器的功能:把设备的中断信号,转换为CPU能够明白的中断向量。 中断(interrupt)、陷阱(trap)、异常(exception) 中断向量表中的项为门(gate),中断发生时,必须先通过这些门,才能进入相应的服务程序。 通过中断门进入中断服务时,会将CP 阅读全文
摘要:
若要问构成一个“操作系统”的最重要的部件是什么,那就莫过于进程管理和文件系统了。 文件系统调用 VFS 具体文件系统 VFS文件系统与具体文件系统的连接通过:file_operations、inode_operations、dentry_operations、super_operations数据结构 阅读全文
摘要:
主要函数以及数据结构 内核地址空间中,虚拟地址与物理地址之间的转换函数: pgd、pud、pmd、pt表中的数据结构: page frame到page结构的转换 由于现在内存模型为SPARSEMEM模型,所以现在pfn到page结构的转换并不是像以前一样通过mem_map page数组计算得到。 稀 阅读全文
摘要:
概念 系统总线(System Bus) 系统总线是用来连接计算机硬件系统中若干主要部件(如:CPU、主存、I/O模块)的总线。Intel公司新推出的芯片组中,对系统总线赋予了特定的含义,把CPU连接到北桥芯片的总线称为系统总线,也称为处理器总线,或叫前端总线(Front Side Bus)。CPU通 阅读全文
摘要:
SystemTap脚本里面嵌入C语言代码需要在每个大括号前面加%号。(猜测应该与yacc和lex有关) 获取脚本参数要用STAP_ARG_前缀 一般long等返回值用STAP_RETURN,而string类型返回值要用snprintf、strncat等方式把字符串复制到STAP_RETVALUE里面 阅读全文
摘要:
Layout 字段 unsigned int len:缓冲区中的数据大小,包括主缓存中的(由 head指向)和分段(fragment)中的。这个值在数据穿越协议栈各层中会改变,比如从L2到L3会丢弃L2的头部,造成该字段变小 unsigned int data_len:只包含fragment中的数据 阅读全文