typora-root-url: image
深入理解计算机系统
第一章
1.如何理解计算机数据含义
计算机信息基本都是使用0,1二进制进行数据保存,本身不具有特殊含义。这些数据的解析需要配合上下文环境,比如:ascII码,就是用固定的二进制转换成的10进制代表不同字符含义。java字节码,每一个class文件,也都是二进制组成,如果要 解析就要按字节码文件格式按长度解析(class文件开头4个字节固定魔数,后面为版本号)
2.C程序文件的编译过程
源程序文件通过预处理器进行文件内容引用的替换后生成 点 i 程序文件
点 i 文件通过编译器编译生成点 a 的汇编文件
点 a 文件通过汇编器生成点 o 的可重定位目标程序
点 o 文件最后通过链接器生成最终的目标可执行程序
在此过程中有很多的知识点,后面章节会详细介绍
3.计算机系统硬件组成
程序在执行过程中,需要经过很多地方,进行多次拷贝。导致执行效率不高。为了进行优化引入了高速缓存的概念,加快执行速度。(我们平时写代码时也会加入缓存来提高一定的效率,个人认为他们概念有类似的地方:代码里用缓存空间换时间,缓存太大,虽然时间快但是,空间成本高。硬件上高速缓存数据快,但是成本高。都需要找到一个合理的平衡点)
4.操作系统管理硬件和系统间通信
进程是操作系统对一个正在运行的程序的一种抽象。一个进程可以由多个线程执行单元组成。
虚拟内存是一个抽象的概念,它为每一个进程提供了一个抽象,即每个进程都在独占的使用主存。
文件是一个简单而精致的概念非常强大,它向应用程序提供了一个统一的视图,来看待系统中可能含有的所有各式各样的I/O设备。
系统间一般通过网络进行通信。
5.Amdahi定律,并发和并行,虚拟机
系统是硬件和系统软件互相交织的集合体。只有其中一小块的性能提升,并不会给整个系统带来很大的提升。想要显著加速整个系统,必须提升全系统中相当大的部分速度。
并发是一个通用的概念,指一个同时具有多个活动的系统
并行指的是用并发来使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运行。重要的三个层次:
线程级并发(超线程或称为同时多线程,是一项允许一个cpu执行多个控制流的技术。它涉及cpu某些硬件有多个备份,比如程序计数器和寄存器,其他的只有一份)
指令级并行
单指令,多数据并行
虚拟机它提供对整个计算机的抽象,包括操作系统,处理器,程序。