本章经过运行一个hello程序为例,概述了计算机操做系统的运行过程,讲述了组成计算机系统的硬件和系统软件,讲到了处理器处理一个程序的过程。
这一章中出现了一个我首次据说到的词汇Amdahl定律,该定律的主要思想是,当咱们对系统的某个部分加速时,其对总体性能的影响取决于该部分的重要性和加速程度。也就是说要加速整个系统,必须提高系统中大部分的速度。算法
问题:这个提速是指的硬件性能上的提高,仍是操做系统算法上的优化,或是两个都能影响,谁起到的影响做用更大呢?编程
本章重点讲述了计算机中信息的位表示形式,介绍了无符号数,补码这些信息在计算机中的不一样存放方式。同时向咱们介绍了32位于64位计算机的区别。最后像咱们介绍了计算机中的位级运算和算术运算的方法,计算时会出现溢出的缘由和其相对应的实例,让咱们感觉到不一样定义类型的不一样存储区间和计算时出现溢出计算机的显示状况。缓存
问题:本章让我看到了平时使用的强制类型转换和计算溢出的弊端,会形成很大的偏差,那么咱们在大型程序编写时可能很难考虑清每个变量应当定义怎样的数据类型,也不能全都往大了定义,会形成严重的资源浪费,那么咱们该怎么正确解决这个呢,想好变量在程序中将来会不会溢出吗?仍是定义动态大小呢?安全
本章主要向咱们介绍了汇编语言,介绍了计算机系统中的各类寄存器以及每个寄存器的做用。本章经过一个个咱们熟悉的C语言的代码,如赋值,指针,循环,算术运算等经常使用的C语言指令向咱们讲述当它工做在底层,做为和机器直接交流的汇编语言的时候应当是怎么书写的,以此来让咱们更加清晰的了解到计算机系统中指令执行的过程以及各个寄存器的不一样功能。服务器
问题1:加载有效地址的leaq命令这是首次用到,不过按书中介绍的看来这个命令主要用来进行公式的运算,不过它在使用时是否是真的与地址的计算无关呢?网络
问题2:上周的测试中在查看sum.o的汇编书写时发现了cltq这样一条汇编语句,查询以后没有找到合理的解释,书中也没介绍这条语句,不知怎么使用?数据结构
本章主要介绍了ISA,讲解了Y86-64指令集,分析了一下它与咱们常见的X86-64的不一样,而后向咱们讲解了处理器的流水线操做以及其中的一些异常处理机制,本章最主要介绍的仍是一些汇编语言的书写,在阅读汇编语句的方面还须要必定的功底,了解指令执行的模式也是这一章须要掌握的重点内容。架构
问题1:对于本章中出现的一些硬件结构的图没有特别看懂?并发
问题2:流水线冒险的原理分析和处理还须要深刻了解,以前没有学习?函数
本章主要讲解了代码的优化,讲述了编译器如何能生成高效的代码,首先指出了编程的时候的一些很差的习惯形成的内存资源的浪费,加大系统的开销和执行的时间。接着从底层的硬件架构讲起,了解处理器,寄存器,内存的性能以此来说解怎么进行高效的编程,消除没必要要的工做。
问题:本章重要讲述了优化程序性能,展开循环等等,运用优秀的算法下降开销,那么这与Amdahl定律是否相关呢?
本章介绍基本的存储技术RAM、ROM等,而且讲解了其价格、读写速度等等的一系列差别,告诉了咱们计算机系统中对这些存储器的使用,例如CPU高速缓存区主要使用SRAM,硬盘主要采用ROM制做。那么不一样的存储技术的使用就会形成整台计算机各个部件之间的读写速度差别,所以本章还像咱们介绍了计算机系统平衡速度差别的办法好比映射,组相联高速缓存等方式
问题:第一次接触存储器山的概念依据书中讲述主要是为了记录程序的相应的读吞吐量的,可是仍是不大了解其使用的方法,对于其生成的函数图象看不明白?
本章主要讲解了程序执行过程当中必须经历的重要的一步连接过程,;连接是将各类代码和数据片断收集并组成一个单一文件的过程。连接器处理目标文件时有三种不一样的形式:可重定位,可执行,共享。接着介绍了动态连接和静态连接的两种不一样的连接方式,连接器的两个主要任务是符号解析和重定位。
问题1:动态连接和静态连接使用上的区别?咱们写好程序须要连接时应当如何选择?操做系统中更多的使用哪一种方式?为何?
问题2:对书中介绍的打桩机制不太了解?
本章主要讲解的是操做系统出现的异常,以及对应异常的处理方法。异常是异常控制流的一种形式,一部分由硬件实现,一部分由操做系统实现,所以处理异常须要硬件和软件紧密合做,而异常并非简单的出错,而是包含中断、故障、终止和陷阱四种不一样类型的异常。在操做系统层内核用ECF提供进程的基本概念,在操做系统与应用程序之间的接口经过进程的发射的信号来进行不一样的操做。
问题:书中介绍了30种Linux支持的30种不一样类型的信号,这是否是通常说的所有的中断处理信号,仍是这是不一样的信号,不一样的操做系统之间有类似之处吗?
本章介绍了操做系统当中的虚拟内存,它是对主存的一个抽象,主存的空间较小,为了实现不一样的进程并行,能够都分配相应大小的内存所以引入虚拟内存概念。书中主要讲解了经过分页的方式管理虚拟内存,而且详细的讲解了页表的映射方式,以及当缺页中断来临时如何进行调度的一些算法。
问题:除了分页还有分段,以及段页式的方法,单单使用分页管理不是会形成寻找浪费时间吗?为什么不介绍其余的管理方式呢?仍是Linux操做系统就是只使用了分页管理的方式?
本章讲述了主存和外部设备之间复制数据的过程,介绍了一些基于Unix I/O模型的系统级函数,它们容许应用程序打开、关闭、读和写文件。Linux内核使用三个相关的数据结构表示打开的文件。经过一些编程的例子,以及具体的函数使用方法向咱们展现相应的I/O操做是如何进行的。
问题:我发现C应用程序中包含着标准的I/O函数和RIO函数,而Unix I/O函数单成一类,那么我在C语言文件中可使用相应的函数吗?
本章简单的介绍了网络编程的大致结构,基于客户端和服务器模型进行编程,而且给出了大量的实例来告诉咱们如何进行网络编程,介绍了一些网络编程中才会用到的C语言函数,如connect、bind函数等。
问题:网络编程接触的较少,仅仅接触C#,不过我了解到网络编程中为了安全考虑不去使用指针,为什么我在书中的程序中依然看到了指针的调用?
并发是操做系统很是重要的一个实现方式,它是在时间上重叠的一组逻辑流组成的,经过进程、I/O多路复用和线程构建的并发程序的机制,在本章中主要介绍了进程、线程的并发操做,以及并发中引起的一些问题,好比死锁的产生。