- 博客(13)
- 收藏
- 关注
原创 详细了解C++多态
什么是多态??1.多态性(polymorphism)据说最早来自希腊语,从字面上理解就是多种形态,多种形式。具体到C++这种面向对象的语言(OOP)中,其实就是一种“接口”,多种实现(方法)。2.多态可以分为静多态和动多态,具体的分类如下:3.静多态和动多态的区别:其实只是区别什么时间将函数实现和函数调用关联起来,是在编译期还是在运行期,即函数地址是在早绑定还是晚绑定的??...
2018-10-30 19:28:12 2857 2
原创 分段内存管理
分页系统的缺点 缺点的改进:①页表太大?这个缺点用多级页表来克服了。②多级页表速度慢?这个问题用TLB解决了大部分。页面的来回更换?这个问题用页面更换算法解决了。 缺点③:共享困难,虽然理论上我们可以按页面进行共享,似乎可以!但是呢这根本就是不现实的,因为一个页面的内容很可能存在代码和数据,即很难使得一个页面里面只包含可共享的内容 或者 不可共享的内容。 缺点④:一个进程只能...
2018-10-29 20:37:36 4738
原创 页式内存管理
基址极限管理模式的问题:上篇博客分析了几种基本的内存管理模式:固定加载地址的内存管理,固定分区的内存管理,非固定分区的内存管理和交换内存管理。第一种只适合单道编程,后三种是多道编程均使用使用了同一种机制:基址与极限。基址与极限的工作原理:将程序发出的虚拟地址加上基址而获得的物理地址。如果该地址值超过指定的极限,则视为地址出界禁止访问,否则访问正常进行。交换内存管理是上述管理中最灵活和先...
2018-10-27 15:32:54 3976
原创 基本内存管理的简单介绍
前言: 操作系统的两个角色:魔术师和管理者。在管理者这个角度,除了CPU之外,内存是操作系统管理的另一个重要的资源。内存管理出现的前景:当初在操作系统出现以前,成不并不需要加载到内存上运行,程序存放在卡片上,计算机每读一张卡片,就运行一条指令,程序直接从卡片到执行。但是这种做法效率极低,且灵活性很差。因此人们发明了内存存储器将需要运行的程序现行加载,在自动执行,从而提高效率和灵活性。...
2018-10-24 09:32:26 1527
原创 IPC——应用二 信号量
一:首先我们先了解几个概念1.临界资源: 同一时间只能被一个进程或者一个线程访问的资源。 2.临界区: 访问临界资源的代码区域。 3.原子操作: 不可被中断的操作,一旦开始执行,只能到其结束。 常见的有P操作,和V操作。 4.进程同步: 指为完成某种任务而建立的两个和多个进程,这些进程在合作的过程中需要协调工作次序进行有序的访问而出现...
2018-10-22 20:30:09 306
原创 八大排序———堆排序
堆排序算法原理: 1.堆排序说明:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定的索引元素。堆分为大根堆和小根堆,是完全二叉树。大根堆要求每个节点的值都不大于其父节点的值。在数组的非降序排序中,使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定是在堆顶。 2.算法描述:(建堆 -》调整堆 -》堆排...
2018-10-18 10:54:54 136
原创 最大数串问题
题目描述: 设有n个正整数,将他们连接成一排,组成一个最大的多位数。如:n=3时,3个整数13,312,343,连接成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成最大整数为7424613。输入描述: 有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)。输出描...
2018-10-17 20:42:37 250
原创 IPC———应用一 管道(匿名 和 有名)
进程通信之管道(pipe,fifo) 进程通信(IPC Interprocess Communication)的一般目的: 数据传输,通知事件,资源共享,和进程控制。背景 但是对于每个进程而言其所看到的内存资源,就是他所独自占有的,所以进程间通信会比较麻烦。原理 让不同的进程能够看到一份公共的资源。因此资源必须是存放在内核上的,在内核开辟一块缓冲区,进程1把数...
2018-10-12 16:05:52 349
原创 八大排序———希尔排序
希尔排序(Shell's sort)是插入排序的一种 又称为“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是不稳定的排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量的逐渐减少,每组包含的关键字越来越多,当增量减少至1时,整个文件恰被分为一组,算法终止。 希尔排...
2018-10-10 19:30:09 306
原创 计算各个位数不同的数字的个数
题目: 给定一个非负整数n,计算各位数字都不同的数字x的个数?例子: 输入:2(数字为两位) 输出:81 解释:在[10,100)区间除去 11 22 33 44 55 66 77 88 99剩下的数 思路: 根据排列组合的性质,如果是三位数,一共0-9 10个数字第一位:为1~9共9个选择,第二位:为0~9再减去第一位那个数字,10 - 1 = ...
2018-10-05 20:37:40 428
原创 八大排序———快速排序
背景介绍:快速排序(Quicksort) 是对冒泡排序的一种改进。 快速排序由C.A.R.Hoare在1962年提出。它的基本思想是: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,将整个排序过程可以递归进行,依次达到整个数据变成有序序列。 一:算法思想 ...
2018-10-05 14:13:28 191
原创 八大排序———插入排序(及优化)
一:直接插入排序的原理 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数据,插入后使该数据序列仍然有序。算法适用于少量的数据排序,时间复杂度为O(n^2),是稳定的排序算法。 关键码:是数据元素中某个数据项的值,用于标识一个数据。例如:一个学生的信息就是一条记录,它包括学号,姓名,性别等,学号是关键码。 稳定性:若待排序的记录中,存在两个或两个...
2018-10-03 09:47:38 1834
原创 八大排序———选择排序
一:选择排序的原理 n个数据的文件可经过n-1趟直接选择排序得到有序结果。 ①初始状态:无序区 R[1....n] ,有序区为空。 ②第一趟排序:在无序区R[1....n]选出下标最小的记录R[1],通过比较获得无序区中最小的,将他与无序区的第一个记录R[1]交换,使得R[1..1]和R[2...n]成为新的有序区域,和新的无序区域。 ③第i趟排序:第i趟开始时,有序区域R[1....
2018-10-01 13:31:06 116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人