深入理解计算机系统
五山小新新
希望每天6点下班,然后逛超市,买水果,买牛奶,看美女。
展开
-
深入理解计算机系统之异常控制流----fork打印问题
异常是允许操作系统提供进程的概念所需要的基本gouz原创 2014-08-15 16:20:19 · 2512 阅读 · 0 评论 -
Linux写时拷贝技术(copy-on-write)
COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之原创 2014-08-16 14:22:53 · 631 阅读 · 0 评论 -
解析目标文件
最近在看《程序员的自我修养》,颇有体会,故化繁为简,整理书中部分内容,作为学习笔记。PC平台上流行的可执行文件格式主要是windows下的PE(Portable Executable)和Linux下的ELF(Executable Linkable Format),他们都是COFF(common file format)格式的变种。可执行文件(windows下.exe和Linux下的ELF可原创 2014-08-16 15:16:30 · 789 阅读 · 0 评论 -
深入理解计算机系统之存储器层次结构
一、存储技术 1、 基本的存储技术包括随机存储器(RAM)、非易失性存储器(ROM)和磁盘。RAM分静态RAM(SRAM)和动态RAM(DRAM)。SRAM快些,也贵些,主要用做CPU芯片上的高速缓存,也可以用作芯片下的高速缓存。DRAM慢些,便宜些,主要用作驻村和图形帧缓冲区。ROM也叫做只读存储器,即使在断电的情况下,也能保持他们的信息,它们用来存储固件。原创 2014-08-16 15:33:28 · 1149 阅读 · 0 评论 -
C 语言程序中与存储器相关的常见错误(即指针相关)
对于书写 C 语言程序的程序员而言, 与存储器有关的错误是非常让人郁闷无语的, 因为不管是在空间还是时间上, 错误和异常通常是在距离错误根源有一段时间或空间距离上才表现出来. 给查找真正的错误源带来很大困难. 将错误的数据写到错误的位置, 程序可能在最终失败前运行了好几个小时甚至几天几月(嵌入式系统), 但是程序的错误已经离真正的源头很远了, 呈现的错误也好像是"刻舟求剑"的结果, 只有刀痕原创 2014-08-15 21:46:25 · 562 阅读 · 0 评论 -
共享内存实现原理
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和原创 2014-08-16 01:27:11 · 27624 阅读 · 0 评论 -
可执行文件(ELF)格式的理解
ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是构成众多xNIX系统的基础之一,所以作为嵌入式Linux系统乃至内核驱动程序开发人原创 2014-08-16 14:47:21 · 1592 阅读 · 0 评论 -
深入理解计算机系统之链接
链接链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行。链接可以执行于编译时(compile time),也就是在源代码被翻译成机器代码时;也可以执行于加载时(load time),也就是在程序被加载器(loader)加载到存储器并执行时;甚至执行于运行时(run time),由应用程序来执行。静态原创 2014-08-16 15:26:52 · 2028 阅读 · 0 评论 -
深入理解计算机系统之虚拟存储器
进程提供给应用程序的关键抽象:一个独立的逻辑控制流,它提供一个假象,好像我们的程序独占地使用处理器。一个私有的地址空间,它提供一个假象,好像我们的程序独占地使用存储器系统。原创 2014-08-15 21:33:45 · 5967 阅读 · 0 评论