赞
踩
ISA 指令集体系 提供了程序执行的一种顺序说明,也就是一条指令执行完了,下一条指令才会开始。
定义一个指令集体系结构(例如Y86-64)包括定义各种状态单元、指令集和它们的编码、一组编程规范和异常事件处理。
Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分。这称为程序员可见状态。
指令集的一个重要性质就是字节编码必须有唯一的解释。任意一个字节序列要么是一个唯一的指令序列的编码,要么就不是一个合法的字节序列。
从IA32指令开始,大大简化数据类型、地址模式和指令编码,我们定义了Y86-64指令集。ISA既有RISC指令集的属性,也有CISC指令集的属性。
逻辑门是数字电路的基本计算单元。它们产生的输出,等于它们输人位值的某个布尔函数。
将很多的逻辑门组合成一个网,就能构建计算块,称为组合电路。
将不同指令组织放到五个阶段中处理,根据被执行的指令的不同,每个阶段中的操作也不相同。据此,我们构造了SEQ处理器,其中每个时钟周期执行一条指令,它会通过所有五个阶段:取指 、译码 、执行 、访存 、写回 、更新PC
流水线化通过让不同的阶段并行操作,改进了系统的吞吐量性能。在任意一个给定的时刻,多条指令被不同的阶段处理。
会计算:
存储器系统为CPU存放指令和数据。在简单模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置,是一个具有不同容量、成本和访问时间的存储设备的层次结构。
CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存存储器(cache memory)作为一部分存储在相对慢速的主存储器(main memory)中数据和指令的缓冲区域。主存缓存存储在容量较大的、慢速磁盘上的数据,而这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓冲区域。
基本存储技术包括随机存储器(RAM)、非易失性存储器(ROM)和磁盘。
RAM有两种基本类型。**静态RAM(SRAM)**快一些,但是也贵一些,它既可以用做CPU芯片上的高速缓存,也可以用做芯片下的高速缓存。动态RAM(DRAM)慢一点,也便宜一些,用做主存和图形帧缓冲区。
非易失性存储器,即使是在关电的时候,ROM也能保持它们的信息,可以用来存储固件。旋转磁盘是机械的非易失性存储设备,以每个位很低的成本保存大量的数据,但是其访问时间比DRAM长得多。固态硬盘(SSD)基于非易失性的闪存,对某些应用来说,越来越成为旋转磁盘的具有吸引力的替代产品。
磁盘:
磁盘容量:一个磁盘上可以记录的最大位数称为它的最大容量,或者简称为容量。
磁盘容量是由以下技术因素决定的:
·记录密度(recording density)(位/英寸):磁道一英寸的段中可以放入的位数。﹒
·磁道密度(track density)(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁道数。
·面密度(areal density)(位/平方英寸):记录密度与磁道密度的乘积。
一个编写良好的计算机程序常常具有良好的局部性(locality)。也就是,它们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理(principle of locality),是一个持久的概念,对硬件和软件系统的设计和性能都有着极大的影响。
局部性通常有两种不同的形式:时间局部性和空间局部性。
存储技术:不同存储技术的访问时间差异很大。速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小。CPU和主存之间的速度差距在增大。
计算机软件:一个编写良好的程序倾向于展示出良好的局部性。
主存到Cache三种映射关系:直接映射、组相联映射、全相联映射
了解如何使用os提供的服务来构建系统及程序
链接可以在编译时由静态编译器来完成,也可以在加载时和运行时由动态链接器来完成。链接器处理称为目标文件的二进制文件,它有3种不同的形式:**可重定位的、可执行的和共享的。**可重定位的标文件由静态链接器合并成一个可执行的目标文件,它可以加载到内存中并执行。共享目标文件(共享库)是在运行时由动态链接器链接和加载的,或者隐含地在调用程序被加载和开始执行时,或者根据需要在程序调用dlopen库的函数时。
链接器的两个主要任务是符号解析和重定位,符号解析将目标文件中的每个全局符号都绑定到唯一的定义,而重定位确定每个符号的最终内存地址,并修改对那些目标的引用。
一个系统中的进程是与其他进程共享CPU 和主存资源的。
为了更加有效地管理内存并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟内存(VM)。
虚拟内存是对主存的一个抽象。支持虚拟内存的处理器通过使用一种叫做虚拟寻址的间接形式来引用主存。处理器产生一个虚拟地址,在被发送到主存之前,这个地址被翻译成一个物理地址。从虚拟地址空间到物理地址空间的地址翻译要求硬件和软件紧密合作。专门的硬件通过使用页表来翻译虚拟地址,而页表的内容是由操作系统提供的。
虚拟内存是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。
通过一个很清晰的机制,虚拟内存提供了三个重要的能力:
1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存。
2)它为每个进程提供了一致的地址空间,从而简化了内存管理。
3)它保护了每个进程的地址空间不被其他进程破坏。
地址翻译的过程必须和系统中所有的硬件缓存的操作集成在一起。大多数页表条目位于Ll高速缓存中,但是一个称为TLB的页表条目的片上高速缓存,通常会消除访问在Ll 上的页表条目的开销。
现代系统通过将虚拟内存片和磁盘上的文件片关联起来,来初始化虚拟内存片,这个过程称为内存映射。内存映射为共享数据、创建新的进程以及加载程序提供了一种高效的机制。应用可以使用mmap函数来手工地创建和删除虚拟地址空间的区域。然而,大多数程序依赖于动态内存分配器,例如malloc,它管理虚拟地址空间区域内一个称为堆的区域。动态内存分配器是一个感觉像系统级程序的应用级程序,它直接操作内存,而无需类型系统的很多帮助。分配器有两种类型。显式分配器要求应用显式地释放它们的内存块。隐式分配器(垃圾收集器)自动释放任何未使用的和不可达的块。
了解应用程序利用操作系统提供的服务来与I/O设备及其他程序通信
每个网络应用都是基于客户端-服务器模型的。根据这个模型,一个应用是由一个服务器和一个或多个客户端组成的。服务器管理资源,以某种方式操作资源,为它的客户端提供服务。客户端-服务器模型中的基本操作是客户端-服务器事务,它是由客户端请求和跟随其后的服务器响应组成的。
客户端和服务器通过因特网这个全球网络来通信。从程序员的观点来看,我们可以把因特网看成是一个全球范围的主机集合,具有以下几个属性:
1)每个因特网主机都有一个唯一的32位名字,称为它的IP地址。
2)IP地址的集合被映射为一个因特网域名的集合。3)不同因特网主机上的进程能够通过连接互相通信。
客户端和服务器通过使用套接字接口建立连接。一个套接字是连接的一个端点,连接以文件描述符的形式提供给应用程序。套接字接口提供了打开和关闭套接字描述符的函数。客户端和服务器通过读写这些描述符来实现彼此间的通信。
Web服务器使用HTTP协议和**它们的客户端(例如浏览器)**彼此通信。浏览器向服务器请求静态或者动态的内容。对静态内容的请求是通过从服务器磁盘取得文件并把它返回给客户端来服务的。对动态内容的请求是通过在服务器上一个子进程的上下文中运行一个程序并将它的输出返回给客户端来服务的。CGI标准提供了一组规则,来管理客户端如何将程序参数传递给服务器,服务器如何将这些参数以及其他信息传递给子进程,以及子进程如何将它的输出发送回客户端。只用几百行C代码就能实现一个简单但是有功效的Web服务器,它既可以提供静态内容,也可以提供动态内容。
现阶段理解整理the end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。