摘要:
输出LOG不光是内核调试, 即使是在用户态程序的调试中, 也是经常使用的一个调试手段. 通过在可疑的代码周围加上一些LOG输出, 可以准确的了解bug发生前后的一些重要信息. linux内核中输出LOG的函数是 printk (语法和printf几乎雷同, 唯一的区别是printk可以指定日志级别) 阅读全文
摘要:
和系统调用打交道的方式:通过库函数,把系统调用给封装起来 用户态vs内核态: 一般现代CPU都有几种不同的指令执行级别 在高级别的状态下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别对应着内核态 在相应的低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动 为什 阅读全文
摘要:
1. 什么是系统调用 系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时候,通过系统调用来使用硬件设备。 系统调用的存在意义: 1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。 比如:用户程序通过write()系统调用就可以将数据写入文件,而不 阅读全文
摘要:
第一章 Linux内核简介 (1) Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2) 在Unix中,所有的东西都被当作文件对待,通过一套相同的系统调用接口来进行:open(),read(),write(),lseek(),close() (3) 阅读全文
摘要:
一. Linux内核源代码简介 稳定版内核:Linux-3.18.6 Linux内核源代码的目录结构: arch目录:在Linux内核源代码里占有的比重很大,因为Linux内核支持很多的体系结构,而arch目录是支持不同的CPU的源代码.arch/x86目录下的代码是重点 Documentation 阅读全文
摘要:
一.函数调用堆栈 l 计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构; 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能; enter pushl 阅读全文
摘要:
视频 一. 存储程序计算机工作模型 冯诺依曼体系结构:存储程序计算机 从硬件角度:CPU上的IP总指向内存的某一块区域,CPU执行其所指向的指令 从程序员角度:内存保存指令和数据,CPU解释执行 二. X86汇编基础 通用寄存器: 段寄存器: 注:CPU实际取指令时根据cs:eip来准确定位一个指令 阅读全文
摘要:
每周读书笔记链接汇总[第三周读书笔记] http://www.cnblogs.com/20135305yg/p/4829558.html[第四周读书笔记]http://www.cnblogs.com/20135305yg/p/4854079.html[第五周读书笔记]http://www.cnblo... 阅读全文
摘要:
第9章 虚拟存储器9.1 物理和虚拟(1)一个使用物理寻址的系统:当CPU执行这条加载指令时,它会产生一个有效的物理地址,通过存储器总线,把它传递给主存。主存取出从物理地址4处开始的4字节的字,并将它返回给CPU,CPU会将它存放在一个寄存器里。(2) 一个使用虚拟寻址的系统:使用虚拟寻址时,CPU... 阅读全文
摘要:
第十一章 网络编程11.1 客户端-服务器编程模型每个网络应用都是基于客户端-服务器模型的一个应用是由一个服务器进程和一个或者多个客户端进程组成服务器管理某种资源,并通过操作这种资源来为他的客户端提供某种服务客户端-服务器模型中的基本操作是事务,由四步组成:11.2 网络客户端和服务器通常运行在不同... 阅读全文