![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机系统结构
sunupzhou
专注于高效能云存储,云计算以及分布式存储架构,致力成为一流
展开
-
存储器层次结构
1. 一些基本的定义:cache是存储层次中第一层的名字,距离处理器最近的存储层次.cache是根据局部性原理,将缓存的机制使用在重复利用经常发生的事件.cache 命中:当处理器在cache中找到要访问的数据时cache缺失:当处理器在cache中找不到要访问的数据根据时间局部性原理:我们将包含所需字的固定大小的数据集作为一个块,来源于存储器并放置于cache中,原创 2012-04-25 10:46:21 · 813 阅读 · 0 评论 -
计算机系统中的异常控制流
从给处理器加电,直到断电为止,程序计数器假设一个值的序列a0, a 1, . . . , an−1其中每个ak是某个相应的指令Ik的地址,每次从ak到ak+1的过渡称为控制转移,这样的控制转移序列叫做处理器的控制流异常控制流:系统使得控制流发生突变对异常做出反应异常控制流发生层次:(1)硬件层,硬件检测到的事件会触发控制突然转移到异常处理程序(2)系统层,内核通原创 2012-08-28 10:46:37 · 625 阅读 · 0 评论 -
进程
什么是进程进程是由一组元素组成的实体,进程的两个基本元素为程度代码和代码相关的数据集进程可以表示为一下元素:标识符:跟这个进程相关的唯一的标识符,区别其他进程状态:程序正在进行,则处于运行态优先级:相对于其他进程的优先级程序计数器:程序中即将被执行的下一条指令的地址内存指针:程序代码和进程相关数据的指针,其他进程共享内存块的指针上下文数据I/O状态信息记原创 2012-08-27 18:34:43 · 855 阅读 · 0 评论 -
fork()函数
fork()函数最有趣,他只被调用一次,却返回两次:一次是在调用进程中,一次是在新创建的子进程中。在父进程中,返回子进程的PID,在子进程中,fork返回0#include "csapp.h" int main() { pid_t pid; int x = 1;pid = Fork(); if (pid == 0) { /* Child原创 2012-08-30 12:23:28 · 574 阅读 · 1 评论 -
死锁和饥饿
死锁的原理:相互竞争系统资源或者进行通信的进程永久阻塞当一组进程中的每个进程都在等待这个事件,而只有在这组进程中的其他被阻塞的进程才可以触发这个事件可重用资源:资源分为两类:可重用的和可消耗的可重用资源:一次只能供一个进程安全的使用,并且不会由于使用而耗尽的资源可消耗资源:可消耗资源是指可以被创建和销毁的资源当消费进程得到一个原创 2012-05-17 13:38:12 · 3280 阅读 · 0 评论 -
操作系统的互斥与同步
关键术语:原子操作:一个或者多个指令的序列临界区:一段代码,在该代码中进程将访问该共享资源死锁:两个或者两个以上的进程因其中的每个进程都在等待其他进程做完事情而不能继续执行活锁:两个或者两个以上的进程为了响应其他进程中的变化而持续改变自己的状态但是不做有用的工作互斥:当一个进程在一个临界区访问共享资源时,其他进程不能进入该临界区访问任何共享资源竞争条件:多个线程或者进程在读原创 2012-05-17 13:37:27 · 8026 阅读 · 0 评论 -
随机访问存储器
随机访问存储器:动态的和静态的静态的比动态的更快SRAM:作为高速缓存存储器,可以在CPU芯片上,可以在片下DRAM:作为主存以及图形系统的帧缓冲区静态RAM:SRAM:将每个位存储在一个双稳态的存储单元中该单元用一个六晶体电路来实现的,无限期的保持在两个不同电压配置或者状态之一动态RAM:DRAM:对每一个存储为对一原创 2012-05-29 21:00:14 · 3241 阅读 · 0 评论 -
基于目录的cache一致性
基于目录的cache一致性:目录协议必须进行的操作:处理读缺失和处理共享未修改cache块的写操作cache块出现的状态:共享:一个或者多个处理器拥有cache的数据块未缓存:没有任何一个处理器含有该数据块修改:只有一个处理器拥有该cache块的副本并已经进行写操作除了cache中的块以为,还需要跟踪拥有共享数据块副本的处理器,因为执行写操作原创 2012-05-05 16:09:13 · 10531 阅读 · 0 评论 -
对称式共享存储器系统结构
对称式共享存储器系统支持共享和私有化数据的缓存私有数据被单个处理器使用,共享数据则被多个处理器所使用 ,基本上是通过读写共享数据实现处理器之间的通信共享数据的好处:减少访问的时延和降低对存储器带宽的要求减少多个处理器同时读取共享数据时的竞争现象共享数据放入cache会导致cache一致性的问题存储器行为的两个方面:一致性(coherenc原创 2012-05-04 17:12:38 · 2272 阅读 · 0 评论 -
用一致性实现锁
用一致性实现锁:自旋锁:处理器通过循环来不停尝试获得锁,直到成功为止自旋锁两种情况:程序员占用锁的时间很短程序员要求锁在可用时,锁定过程的时延较低自旋锁要阻塞处理器并且一直循环等待锁被释放,自旋锁在某些条件下是不适用的.把锁放到cache中保证其一致性:自旋(在一个紧凑的循环中不断检测和尝试占用锁)过程的实现能够在本地cache副原创 2012-05-05 16:07:15 · 1050 阅读 · 0 评论 -
Cache性能
平均存储器访问时间:平均存储器访问时间=命中时间+缺失率*缺失代价命中时间为cache命中时间(1)平均存储器访问时间和处理器性能假定所有的存储器停顿都是由cache缺失引起的.cache命中的时钟周期数应该被认为是CPU执行时钟,命中时钟周期数包含在CPU执行时钟周期数中cache的行为对于处理器的性能影响:CPI表示每条指令执原创 2012-04-28 19:35:11 · 10045 阅读 · 0 评论 -
cache实例
64KB cache容量,块大小为64字节. 采用2路组相联,LRU替换策略,写回法,写分配策略.进入cache的物理地址被分为两个部分:34位块地址,块地址只包括标志地址与索引地址6位块内地址偏移(与64相关)索引字段:确定哪一个标志将被检验,将该标志与处理器发出的访问地址中的标志进行比较.索引字段的宽度决定于cache的大小,块大小,组相原创 2012-04-26 14:54:12 · 1420 阅读 · 0 评论 -
存储器层次结构的四个问题
1)块的放置,在较高层中,一个块能够被放置在哪里?(该层表示存储结构层次)(2)块的标志,如果一个块在较高层中,如何找到它?(3)块的替换,如果块发生缺失,哪个块被替换?(4)写时策略.写操作时会发生什么?一个块可以被放置到cache的什么地方?直接映射:(块地址)MOD(cache中的块数),每个块只能出现在唯一位置上全相连映射:一个块可以放置在cache中的任意原创 2012-04-26 11:01:29 · 5097 阅读 · 0 评论 -
存储器
存储器系统:具有不同容量,成本和访问时间的存储设备CPU寄存器保存最常有的数据靠近CPU的小的,快速的高速缓存存储器作为一部分存储在相对慢速的主存储器中的数据和指令缓冲区域主存暂时存放存储在容量较大的,慢速的磁盘数据一个编写良好的程序倾向于更频繁的访问某一个层次上的存储设备存储器层次对于性能的影响:若cpu需要的数据存储在cp原创 2012-08-27 18:43:22 · 883 阅读 · 0 评论