计算机系统中所有的信息都是由一串比特表示的。
区分不同数据对象的唯一方法:读取数据对象时的上下文。
c:系统级编程
C++/java :应用级程序
编绎系统:
gnu环境:EMACS编辑器、GCC编译器、gdb调试器、汇编器、链接器、处理二进制文件的工具以及其他一些部件
了解编绎系统如何工作的作用:
优化程序性能 理解链接时出现的错误避免安全漏洞
shell:命令行解释器。它输出一个提示符,等待输入一个命令行,然后执行这个命令。如果该命令行的第一个单词不是一个内置的shell命令,那么shell就会假设这是一个
可执行文件的名字,它将加载并运行这个文件。
系统硬件组成:
总线:携带信息并负责在各个部件传递。传送定长的字节块。也就是字。字:32位或64位
控制器:I/O设备本身或主板上的芯片组
适配器:一块插在主板插槽上的卡
主存:
物理:一组动态随机存取存储器(DRAM)芯片组成
逻辑:一个线性的字节数组,每个字节都有唯一的地址(数组索引)从零开始。
组成程序的每条机器指令不同数量的字节构成
处理器:解释存储在主存中指令的引擎。
核心:一个大小为一个字的存储设备(或寄存器),称为程序计数据器(PC)。在任可时刻,PC都指向主存中的某条机器语言指令(即含有该指令的地址)
存储器层次结构的主要思想:上一层的存储器作为低一层存储器的高速缓存。
操作系统管理硬件:
操作系统有两个基础功能:
防止硬件被失控的应用程序滥用
向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备
进程: 操作系统会提供一种假象,就好像系统上只有这个程序在运行。程序看上去是独占地使用处理器、主存和I/O设备。处理器看上去就像在不间断地一条接一条地执行程序中的指令,即该程序的代码和数据是系统内存中唯一的对像。
线程:每个线程都运行在进程 上下文中,并共享同样的代码和全局数据
虚拟内存:它为每个进程提供一个假象,每个进程都在独占地使用主存。每个进程看到内存一致的,称为虚拟地址空间
虚拟内存基本思想:把一个进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。
文件:就是字节序列
Amdahl定律:
并发和并行
线程级并发
多核处理器的组织结构
指令级并行:处理器可以同时执行多条指令的属性
单指令、多数据并行(SIMD并行):许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作。