自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

redAnt的博客

有梦想,爱学习,实力派

  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 挑战408——组成原理(13)——并行存储器

随着计算机应用领域的不断扩大,处理的信息量越来越多,并且现代计算机的I/O设备也在不断增加,因此,提高访存的速度已经成为了迫不及待的任务。于是就出现了并行存储器。在介绍并行存储器之前,先来介绍一个概念:**存储器的带宽:表示单位时间内存储器存取的信息量,可用字/秒或者位/秒表示。是衡量数据传输率的重要技术指标。**存储器的带宽是决定了以存储器为中心的机器获得信息的速度。可以通过下面的几种方式提...

2018-10-30 11:53:41 3694 4

原创 挑战408——组成原理(12)——图解字扩展与位扩展

由于单片存储芯片的容量总是有限的,很难满足实际的需要,因此必须将存储芯片连在一起才能组成足够的容量。这个过程简称主存扩容。常见的扩容方式有:字扩展,位扩展,字位同时扩展主存与CPU的连接通过数据总线,地址总线,控制总线与CPU相连接。如下图所示:其中:地址线决定了CPU可寻址的最大内存空间。控制总线(读写)指出总线周期的类型和本次输入输出操作完成的时刻。MDR:数据寄存器,用来存入内存...

2018-10-29 11:44:36 24808 11

原创 挑战408——组成原理(11)——ROM

ROM——只读存储器,顾名思义,只能读出不能写入的存储器。但是随着用户的需要,总希望修改原ROM里面的内容。ROM中一旦有了信息,就不能轻易改变,也不会在掉电时丢失,它们在计算机系统中是只供读出的存储器。因此,SRAM、DRAM都是易失性(挥发性)存储器,而ROM是非易失性的存储器。ROM器件有两个显著的优点:结构简单,所以位密度比可读/写存储器高。具有非易失性,所以可靠性在计算机系...

2018-10-29 10:03:31 756 1

原创 挑战408——操作系统(15)——进程管理刷题(1)

本节刷题内容:进程管理题库来源:408真题,王道教材,百度文库涉及的知识点:进程与线程进程状态转换进程控制进程通信进程调度基础概念第一题解析:在前面我们就强调,进程是运行中的程序,引入进程的目的就是为了动态的研究程序的运行状态。所以进程的动态性和程序的静态性是进程与程序最根本的区别。不多说,课本原话。第二题解析:调度是操作系统的基本功能,几乎所有的计算机资源在使用前...

2018-10-28 21:32:52 799

原创 挑战408——操作系统(14)——银行家算法与死锁解除

回顾之前提到的死锁的解决方式:预防,检测,避免。避免死锁的方式中最著名的就是银行家算法了。不过在介绍之前,先引入一段介绍。死锁的避免安全序列产生死锁的原因有很多,资源不足还有进程推进次序非法,都是原因。但是系统有不可能一下子满足所有进程的资源请求,才会产生死锁的危险。我们知道,进程结束以后是会释放资源的,释放的资源也是可以给后面的进程使用的。我们可以回顾一下哲学问题,我们的那种作法其实就是,...

2018-10-28 15:35:47 1241

原创 挑战408——组成原理(10)——SRAM与DRAM

半导体随机存储器芯片内集成有记忆功能的存储矩阵,译码驱动电路和读/写电路等等。下面介绍几个重要的概念:读写电路:包括读出放大器和写入电路,用来完成读/写操作。地址线:单向输入,其位数与芯片的容量有关片选线:确定哪个芯片被选中(用来选择芯片)数据线:双向输入,其位数与芯片可读出或者写入的位数有关,也与芯片容量有关。存储容量通常我们将存储容量表示为:字数 X 位数,比如 64K X8...

2018-10-27 15:30:55 2431

原创 挑战408——组成原理(9)——存储器简介

计算机数据的内容就暂时告一段落,还有一小部分内容(比如编码)没提到,那部分到大题的时候再细说,先把主干知识抓住。存储器这一章,哇,可以中重点重的重点来形容,两个字,必考,而且是考大题。理由很简单,它跟操作系统中的存储管理关系很是紧密,两者可以结合在一起出题,也可以单独考。所以这部分内容重要且内容繁多,但是如果与操作系统一起复习,又会有意想不到的收获。存储器的分类存储器是计算机系统中的记忆设备,...

2018-10-27 10:31:53 712

原创 挑战408——操作系统(13)——死锁(deadlock)

死锁,可以定义为一组竞争系统资源或者相互通信的进程,相互的“永久性“”的阻塞,若无外力作用,这组进程将永远没有办法继续执行。很遗憾,目前这种问题没有一种有效的通用解决方案。这里对于死锁的定义理解要注意死锁的对象——一组进程,相互竞争。如果是一个进程可能长期或者永久性得不到执行,那么这个进程是处于饥饿状态而不是死锁。同时,饥饿 ≠死锁!,饥饿现象只是死锁的一种结果,就是说由于死锁的出现,导致了死锁...

2018-10-26 13:35:15 649 1

原创 挑战408——操作系统(12)——进程通信,管程介绍

PS:这部分内容考的比较少,了解实例就好进程间的通信,要解决的问题是进程之间信息的交流问题。根据交流信息量的大小,我们将通信分为低级通信和高级通信两种。低级通信中,进程中只能传递状态跟整数值,比如我们刚刚提到的PV操作。高级通信中,进程能传递任意数量的数据,传递的信息大。下面主要谈一些高级通信机制。进程通信的类型高级进程之间的通信机制主要分为三种: 共享存储器系统,消息传递系统,管道通...

2018-10-26 10:46:38 874

原创 挑战408——组成原理(8)——数据的表示及其运算刷题(2)

本节的内容:数据的表示和运算参考资料:408真题,百度文库,王道涉及的知识点:数的补码,原码,移码表示二进制与16进制强制类型转换定点数及其加减运算浮点数及其加减运算接上篇的文章补码的表示及其大小比较先给一个一般的规律:当使用补码表示时,如果符号位相同,那么数值位越大,码值越大。第一题分析:一般这种题目,我们都是找临界条件的,当X1 = 1,后面的全都是0的时候即(1...

2018-10-25 23:10:52 1026

原创 挑战408——组成原理(7)——数据的表示及其运算刷题(1)

本节的内容:数据的表示和运算参考资料:408真题涉及的知识点:数的补码,原码,移码表示二进制与16进制强制类型转换定点数及其加减运算浮点数及其加减运算补充知识大端对齐与小端对齐大端对齐模式,是指一个字节中的高位字节放在这个字区域内的低地址处。小端对齐模式,是指一个字节中的低位字节放在这个字区域内的低地址处。(最常用)将一个32位的16进制数0x12345678存放在内存...

2018-10-25 18:34:21 1401

原创 挑战408——操作系统(11)——多角度看生产者消费者问题

对于信号量的使用,主要是如何选择信号量和如何安排pv操作在程序中的位置。下面来分析一下经典的生产者消费者问题。教材的说法有点过于笼统了,我就用自己的语言来重新描述一遍。生产者——消费者问题问题描述:有两组进程共享一个环形的缓冲池,其中的一组进程称为生产者,另一组进程称为消费者。缓冲池由若干个大小相等的缓冲区组成,每一个缓冲区都可以容纳一个产品。生产者进程不断的将生产的产品放入到缓冲池中,消费者...

2018-10-25 12:12:33 746 4

原创 挑战408——操作系统(10)——信号量与PV操作

处理同步和互斥的问题,除了用到之前的软件和硬件的方法,用的最多的还是信号量机制。信号量机制是通过定义表示共享资源使用的特殊变量以及两个标准的原语(P操作和V操作),来实现同步和互斥的。根据信号量的数据类型不同,我们将信号量分为整型信号量和记录型信号量。整型信号量整型信号量是一种被定义为用来表示资源数的整型量S,其值只能被wait和signal操作。S的初始值被设置为可访问的资源数的数量。当...

2018-10-24 10:54:58 1696 2

原创 挑战408——操作系统(9)——进程的同步与互斥

操作系统中的并发进程有些是独立的有些需要相互协作,独立的进程在系统中执行不影响其他进程,也不被其他进程影响(因为他们没有共同需要一起用到的资源)。而另外一些进程则需要与其他进程共享数据,以完成一项共同的任务。因此,为了保证操作系统的正常活动,使得程序的执行具有可再现性,保证执行结果的正确性。操作系统必须为这种协作的进程提供某种机制。进程间的协作关系分为:互斥,同步,通信。(实习面试的时候,有个...

2018-10-23 16:07:00 1259 1

原创 挑战408——组成原理(6)——浮点数及其加减运算

相对于定点数,浮点数就是小数点可以浮动的数。通常用来表示数值范围相差很大的数(比如太阳的质量跟电子的质量相差)。通常我们使用这样的表达式来表示浮点数:其中,r表示底(因为是指数的形式,一般取2的n次方),E表示阶码(阶码可正可负)。M为位数(可正可负)。当r = 10的时候,就是我们熟悉的科学计数法。在计算机中我们研究的是r = 2的时候。规格化数与浮点数的规格化为了提高数据的精确度以...

2018-10-22 20:26:23 2149

原创 挑战408——组成原理(5)——定点数及其加减运算

定点数定点数:小数点固定在某一个位置的数,有纯小数和纯整数之分。假设数据用原码表示,那么:纯小数可以表示为对于纯整数,可以表示为:对比前面两幅图,只是小数点的位置不一样而已,在末尾表示整数,在内部表示小数。那么为什么表示整数的时候我们要减去一个1呢?我们回想一下原码的表示范围就会发现,原来是原码中0可以有两种不同的表示方式,因此减去一个重复的0.缺陷:对于定点数而言,由于其小数点位...

2018-10-22 17:06:31 1828 3

原创 挑战408——操作系统(8)——典型的调度算法

通过前面的学习,我们明白了调度的时机,调度的原理及其方式,那么问题来了,怎么样对程序进行调度才能提高CPU的利用率呢?对于不同的系统而言,他们的设计目标不一样,所以调度的方式也不同,常见的调度算法有等会要介绍的几个算法。不过在此之前,得先回顾一下这篇文章:挑战408——操作系统(1)——介绍一下操作系统这个东西先来先服务算法(FCFS)顾名思义,也不需要那么多专业术语,就是一句话,谁先到了就把...

2018-10-20 17:47:37 769

原创 挑战408——操作系统(7)——处理机调度

我们前面说过,进程状态的切换离不开处理机的调度。调度是操作系统的基本功能,几乎所有计算机资源再使用之前都要经过调度。经过进程调度,才把CPU分配给合适的进程,对于处理机而言,可分配的资源就是在处理机上运行的时间。进程调度是多道程序运行的根本。通过进程间切换CPU,操作系统才能提高计算机的效率。调度的类型及其方式多道程序的核心是调度,处理机的调度方式有三种,称为高级调度,中级调度,低级调度。...

2018-10-20 10:42:26 493

原创 挑战408——组成原理(4)——强制类型转换

本来

2018-10-19 16:46:30 2065

原创 挑战408——操作系统(6)——线程详解

20世纪80年代,人们提出了比进程更小,并能独立运行的基本单位——线程。如果说进程的目的是为了让多个程序彼此之间能够并发执行,那么引入线程就是为了减少并发执行所付出的时间和空间开销。从而使得操作系统具有更好的并发性。线程的作用由于进程是一个资源的拥有者,因此在进程的创建,撤销以及状态转换中都要付出巨大的时间和空间开销。因此系统中的进程都不宜过多(打开你们的任务管理器,运行的进程都能数出来),因...

2018-10-18 12:29:05 543

原创 挑战408——操作系统(5)——PCB与进程控制

进程的活动是通过在CPU上执行一系列程序和对数据进行相应操作的完成来体现的,因此程序和数据是组成进程的实体,为了反映进程的动态特征,需要一个数据结构来描述进程本身的特性状态,调度信息以及对资源的占有等等。这个数据结构我们称之为进程控制块(PCB)PCB的内容PCB主要包含下面几部分的内容:进程的描述信息,比如进程的名称,标识符,处理机的状态信息,当程序中断是保留此时的信息,以便CPU返回...

2018-10-18 00:38:11 1179

原创 挑战408——操作系统(4)——进程状态转换

前面我们提到了进程的引入背景,现在就深入了解一下。进程与程序为了从变化的角度,动态地研究可以并发执行的程序,真实反映系统的独立性并发性和动态性,操作系统中不得不引入“进程”这一概念。进程(process),即运行着的程序。直观翻译其英文,就是过程的意思。它表示程序的运行过程。它是分配资源的基本单位,也是并发活动的基本单位。进程是程序的执行过程,但是又与程序不同,我们看看他们之间的区别:进...

2018-10-17 18:08:31 642

原创 挑战408——操作系统(3)——进程与PCB

早期的计算机系统只允许一次执行一个程序,因此程序对系统拥有完全的控制权,能访问系统中所有的资源,而现代的操作系统允许多道程序同时调入内存并发执行,便要求对各种程序提供更加严格的控制和功能划分。这便产生了进程的概念。程序的并发执行多道程序的并发执行是指在内存中存放多道程序,它们在操作系统的控制下,在CPU上交替进行(因此我们前面说的是,宏观上程序并发执行,微观上轮流执行)。在计算问题中,有些操...

2018-10-17 16:10:15 757

原创 挑战408——组成原理(3)——原码,补码,反码

计算机中的数据分为数值数据和非数值型数据(如声音,图像等等)。我们接下来主要谈的是数值型数据。在现实的生活中,数值数据主要分为实数和整数两大类,在计算机中,整数用定点数表示,实数用浮点数表示,而所有带符号的整形都用补码表示。目前通用计算机中浮点数大多数采用IEEE754标准,其中尾数采用定点原码表示,所以浮点数的算术运算涉及原码的加减乘除运算。无符号数与有符号数无符号数,即没有正负号的数,是...

2018-10-17 12:11:49 1069 1

原创 数据结构——排序与查找(5)——折半查找(C++实现)法

顺序查找顺序查找,是一种最直观的查找方式。原理闲荡简单就是我们正常思维的查找,从给定的序列出发,依次检查序列中的每一个项目是否为我们给定的关键字。是则查找成功,否则查找失败。bool searchByOrder(vecter<int> vec){ for(int i = 0; i < vec.size(); i++){ if(vec[i] = k ) return tr...

2018-10-08 21:26:34 1537

原创 数据结构——排序与查找(4)——常见的内部排序算法大全

这篇博文就让我水一次,这两天量产博客,偷个懒,不过下面的文章都是我自己写的:插入排序算法及其分析简单的冒泡排序及其分析希尔排序及其分析快速排序算法及其分析合并排序算法及其分析堆排序算法及其分析选择排序算法及其分析最后附上一张王道书上的内部排序算法的复杂度分析表好了,内部排序算法暂时告一段落,外部排序算法打算在应用篇的时候再提,因为它跟树的应用还是很密切相关的。...

2018-10-08 11:06:34 446

原创 数据结构——排序与查找(3)——冒泡排序(C++实现)

接下来介绍另外一种排序算法

2018-10-08 10:33:24 563 2

原创 数据结构——排序与查找(2)——希尔排序(C++实现)

希尔排序原理希尔排序(Shell’s Sort),也称为“缩小增量排序”,是一种插入排序类的算法。最简单的插入排序,我在上一个专栏的一篇文章C++抽象编程——算法分析(8)——插入排序算法与分析有提到过,这里就不再赘述,这里就只介绍一些我以前没写过的算法。希尔排序是一种改进的插入排序算法。其基本思想如下:将整个待排序列分割成若干个自序列,然后对每个子序列分别进行直接插入排序算法。待整个序列中的...

2018-10-07 18:11:44 880

原创 数据结构——排序与查找(1)——排序与查找简介

为什么要进行排序?

2018-10-07 11:20:39 1276

原创 数据结构——图(9)——拓扑排序与DFS

DAG图与AOV网一个无环的有向图称为有向无环图(DAG)。图的顶点可以表示要执行的任务,并且边可以表示一个任务必须在另一个之前执行的约束; 在这个应用程序中,拓扑排序只是任务的有效序列。 当且仅当图形没有有向循环时,即如果它是有向无环图(DAG),则可以进行拓扑排序。 任何DAG都具有至少一个拓扑排序。这种用弧来表示活动之间的优先级关系的有向图,称为顶点表示的活动的网(简称AOV网)。拓扑排...

2018-10-06 16:56:42 3601

原创 数据结构——图(8)——最小生成树(MST)

问题的提出如下图,假设这里有一系列的房屋,问如何铺设电线,可以使得连接所有房屋的电线的总成本最低?这是20世纪20年代早期研究最小生长树的最初动机。 (捷克数学家OtakarBorůvka完成的工作)。最短路径树与最小生成树(MST)上次,我们看到了Dijkstra算法如何用于在图中找到最短路径树。请注意,最短路径树可能不是MST,反之亦然。为什么这么说呢?最小生成树(或MST)是总成本...

2018-10-05 22:51:34 3688

原创 数据结构——图(7)——最短路径与Dijkstra's Algorithm

虽然

2018-10-05 21:17:59 643

原创 数据结构——图(6)——深入分析BFS算法

DFS的不足和BFS算法虽然我们知道根据DFS算法我们可以找到所有的,由起始节点到目标节点的所有路径,但并不代表那条路是最短的或者是最佳的。就像我们上篇文章所说的一样,对于同一幅图,非递归算法找到的路径就明显比递归算法找的要短。回顾我们之前提到的BFS的基本思想:从起始顶点开始,首先探索邻居节点,然后再移动到下一级邻居。假设我们从a走到i,按照BFS算法,应该是a -> d-&gt...

2018-10-05 17:20:05 927

原创 数据结构——图(5)——深入分析DFS算法

对DFS的过程分析

2018-10-05 16:22:56 1908

原创 数据结构——图(4)——广度优先搜索(BFS)算法思想

广度优先搜索尽管深度优先搜索具有许多重要用途,但该策略也具有不适合某些应用程序的缺点。 深度优先方法的最大问题在于它从其中一个邻居出发,在它返回该节点或者是访问其他邻居之前,它必须访问完从出发节点开始的整个路径。 如果我们尝试在一个大的图中发现两个节点之间的最短路径,则使用深度优先搜索会将我们一直带到图的远端,即使我们的的目的地离我们的出发点仅有一步之遥。广度优先搜索(Breadth-firs...

2018-10-05 13:11:18 2454

原创 数据结构——图(2)——图的存储和表示方式

图的存储方式在实践中,图最常见的策略是:将每个节点的连接存储在邻接列表中。将整个图形的连接存储在邻接矩阵中。用邻接链表来表示图之间的关系在图中表示连接的最简单方法是在每个节点的数据结构中存储与其连接的节点的列表。该结构称为邻接列表。 例如,在航空公司图表中每一个节点连接的相邻节点构成一个邻接表,就像这样:使用邻接矩阵表示节点间的关系虽然临接表提供了一种表示图形中连接的便捷方...

2018-10-05 11:14:27 1812

原创 数据结构——图(3)——深度优先搜索算法(DFS)思想

图的遍历图由顶点及其边组成,图的遍历主要分为两种:遍历所有顶点遍历所有边我们只讨论第一种情况,即不重复的列出所有的顶点,主要有两种策略:深度优先搜索(DFS),广度优先搜索(BFS)为了使深度和广度优先搜索的实现算法的机制更容易理解,假设提供了一个名为visit的函数,它负责处理每个单独节点所需的任何处理。 因此,遍历的目的是按照确定的连接顺序在每个节点上调用且仅调用一次该函数。 因...

2018-10-05 11:13:05 3342

Prog-in-Cpp,完整版

这是斯坦福大学的C++教材,里面包含了C++的入门语法还有C++版本的数据结构。里面的内容很经典,属于经典的教材。让你知其然又知其所以然。强烈推荐

2017-09-04

Programming Abstractions in C++

Programming Abstractions in C++ Stanford大学的c++教材,感觉不错

2017-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除