2019年3月6日

摘要: 一、问题 在Linux下,使用mmap是操作文件内容的一个非常方便的方法,它可以将相对受限的文件操作接口转换为大家喜闻乐见的内存操作。这个本身可以引申出很多方便的操作,比如,我们可以将这个内存地址(也就是对应的文件的某个部分)转换为一个特定的数据结构指针,从而可以方便的进行结构的读取和修改。 大部分 阅读全文
posted @ 2019-03-06 20:48 tsecer 阅读(3968) 评论(0) 推荐(0) 编辑
摘要: 一、概述 题目有些绕,因为不知道这两种信号的学名是什么。我想表达的意思就是两种不同来源的信号:一种是实实在在发生的信号,例如程序运行的过程中遇到了一个非法地址访问,最为典型的就是 *(int *) 0 = 0; 此时程序一定会收到一个SIGSEGV信号的,因为此时程序不能再继续运行下去了。用拟人的语 阅读全文
posted @ 2019-03-06 20:47 tsecer 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 一、引言 在嵌入式系统中,串口几乎是系统操作的唯一途径,所以串口的使用在嵌入式系统中有着重要作用。因为嵌入式是一个爹不亲,娘不爱的苦命娃,它一般成本比较低,当它被制造出来之后,人们就希望它这么安安静静、平平安安、兢兢业业的运行一辈子。也就是这些设备和人(human being)的交互机会比较少,但是 阅读全文
posted @ 2019-03-06 20:46 tsecer 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 一、键盘输入 根据大量资料的描述,最早的IBM XT PC标准键盘是有83个按键,键盘按键被按下的时候它们向键盘控制器发送的扫描码是合这些按键在键盘上的物理位置相联系的(从左到右,从上到下,ESC扫描码为1,Del为0x53)。我们现在的键盘外观和当时的键盘已经有较大区别,所以这些位置看起来可能不那 阅读全文
posted @ 2019-03-06 20:45 tsecer 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 一、伪终端的意义 在计算机中,有很多的虚拟技术,使用纯软件的技术来模拟一个硬件设备。例如,使用一个qemu来模拟一个计算机系统、使用tun来模拟一个网卡。归根到底,这些虚拟的原因在于兼容,兼容就是后来的实现要以不修改已有实现为前提。就像intel的指令集和windows的API一样,这里的内容就只能 阅读全文
posted @ 2019-03-06 20:45 tsecer 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 一、虚拟终端模拟的问题 前面曾经说过,所谓控制台是对tty设备的一种模拟。tty和主机之间就一根线,所有的交互都在这条串行线上一个bit一个bit的交互,可以看做是“竹筒倒豆子”--直来直去的模式。进一步说,主机不能(也没有义务)直接控制tty设备上的显示设备(比如显示设备对应的内存、显示控制寄存器 阅读全文
posted @ 2019-03-06 20:44 tsecer 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 一、主题 当定位一个问题的时候,最为直观和简单的方法就是在代码的特定位置加上对我们感兴趣的特定数据的打印,这是不依赖其它外部工具(调试器类工具)最简单和直观的方法,这个方法在用户态和内核态调试中都是适用的,就连最经典的C语言程序也是一个printf(“Hello World\n”),可见这个prin 阅读全文
posted @ 2019-03-06 20:43 tsecer 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 一、问题 在编译一些大的工程的可执行文件的时候,可以发现如果使用DEBUG版本,代码段加上和代码段放在一起的只读数据(字符串或者常量全局变量等)数量将会比较庞大,而在glibc的crti中会有一个对GLABAL_OFF_TABLE(GOT)表的重定向,这个重定向类型为为,从网络上可以看到这种错误类型 阅读全文
posted @ 2019-03-06 20:42 tsecer 阅读(991) 评论(0) 推荐(0) 编辑
摘要: 一、问题引出 为了精确定位一个任务退出的时候是何种原因,例如是看门狗复位,或者是受到了某些人为主动复位(kill 指定任务,或者reboot导致的简介SIGTERM+SIGKILL组合),或者是某些第三方库中执行了exit导致了线程的退出等原因。这就需要内核进行介入,记录指定感兴趣任务(之后称为受控 阅读全文
posted @ 2019-03-06 20:41 tsecer 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 一、问题 这个就是在一些使用了共享目标文件的可执行文件编译时环境和运行时环境不同(比方说,编译的时候在一个较高版本的环境中编译的,此时使用的C库版本较新,然后将生成的可执行文件放在一个较低版本的系统中运行,此时可能会提示符号版本错误,从而可执行文件加载失败)而导致的可执行文件夹加载失败,这种问题在网 阅读全文
posted @ 2019-03-06 20:41 tsecer 阅读(3225) 评论(0) 推荐(0) 编辑

导航