本章讲了计算机操做系统的运行过程,计算机操做系统具体有什么功能?起到什么做用?
经过查找资料知道,操做系统堪称是应用程序和硬件之间插入的一层软件。操做系统能够防止硬件被失控的应用程序滥用;并且向应用程序提供简单一致的机制来控制复杂而又一般截然不同的低级硬件设备。参考:操做系统管理硬件html
本章主要讲的是信息的存储,以及整数浮点数的表示。经过第二章的浏览,咱们知道对于要输出的数值或者字符,咱们要有一个符号限制,好比输出整数有&d,那么对于复杂一点的输出值咱们应该如何选择数据类型?C语言容许在各类不一样的数字数据类型之间作强制类型转换,那么不一样的数据类型会形成什么影响和偏差呢?参考:有符号数和无符号数之间的转换web
在C语言中,没有可靠的方法来防止对数组的越界写,那么在发生了越界写的时候,在没有形成任何有害结果以前,应该怎么尝试检测,来避免栈被破坏?算法
最近的GCC版本在产生的代码中加入了一种栈保护者机制,用来检测缓冲区越界,其思想是在栈中任何局部缓冲区与栈状态之间存储一个特殊的金丝雀值。这个金丝雀值是在程序每次运行时随机产生的,所以,攻击者没有简单的办法知道它是什么。在恢复寄存器状态和从函数返回以前,程序检查这个金丝雀值是否被该函数的某个操做或者函数调用的某个操做改变了。若是是,那么程序异常终止。参考:栈破坏检测编程
由于存在反馈的流水线(即一条指令可能须要屡次执行某个操做,或使用某个数据,访问某个存储器或寄存器)致使流水线冒险(数据,控制),流水阶段长度不一,流水线深度过大插入寄存器影响性能?数组
暂停(系统判断是否会产生冒险,会则插入气泡,延迟下条指令执行),转发(使产生的结果理解送入须要的位置,避免暂停),加载\使用(当存储器读发生较晚时须要暂停和转发机制同时使用)参考:数据冒险解决方案服务器
程序的优化能够经过手工改变代码结构,优化算法效率和数据结构,提升执行效率。参考改变代码结构经过实例代码,解释了代码结构的优化。网络
若是断电,DRAM和SRAM会丢失它们的信息,那么在忽然断电状况下,信息如何处理?数据结构
非易失性存储器即便在断电后仍然保存着他们的信息。可编程ROM(PROM)只能被编程一次。PROM的每一个存储器单元有一种熔丝,他只能用高电流熔断一次。可擦写可编程ROM(EPROM)和电子可擦除PROM(EEPROM)可被屡次编程。闪存(flash)基于EEPROM,也是一类非易失性存储器。存储在ROM设备中的程序称为固件。 参考:非易失性存储器并发
连接是将各类不一样文件的代码和数据部分收集(符号解析和重定位)起来并组合成一个单一文件的过程。连接器使得全部模块中的每一个符号只有一个定义,当多个模块定义同一个符号的时候,咱们的连接器到底怎么作,连接器如何解析多重定义的全局符号? 参考:连接器解析多重定义的全局符号函数
当一个程序捕获多个信号时,好比发送了3个SIGCHILD信号,那么这3个SIGCHILD信号是否均可以被接收?这个答案显然是不该定的,也只有两个信号被接受了。缘由是,一段程序,当每一个子进程结束,才能够触发一个该信号;一次该函数调用只能处理一个SIGCHILD信号。可是虽然一个子进程结束出发一个信号,但该函数经过循环,也能尽量多的处理多个SIGCHILD信号。参考:信号处理问题
主存中每一个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。这里的虚拟地址和物理地址有什么区别? 物理地址是计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组,每一个字节都有一个惟一的物理地址;在一个带虚拟存储器的系统中,CPU从一个有N=2^n个地址的地址空间中生成虚拟地址。 参考:虚拟地址和物理地址
对于I/O的选择,上图中展示了几种I/O的关系模式,在应用程序中应该使用哪些函数呢?标准I/O函数是磁盘和终端设备I/O的首选。可是对网络套接字上尽可能使用健壮的RIO或者系统I/O。以下图:
参考:I/O使用的抉择方法
web客户端和服务器之间的交互用的是一个基于文本的应用级协议,叫HTTP(超文本传输协议)。web服务和常规的文件检索服务(例如FTP)有什么区别?web内容能够用HTML(超文本标记语言)语言编写。 web服务器以两种不一样的方式向客户端提供内容:取一个磁盘文件,并将它的内容返回给客户端。静态内容,静态服务;运行一个可执行文件,并将它的输出返回给客户端。动态内容,动态服务。
父子进程间共享状态信息,进程有一个很是清晰的模型:共享文件表,但不共享用户地址空间。这是优势也是缺点:一个进程不可能不当心覆盖另外一个进程的虚拟存储器;可是为了共享信息,他们必须使用显示的IPC机制,另外一个缺点就是,他们每每比较慢,由于进程控制可IPC的开销很高。参考:基于进程的并发编程