- 博客(10)
- 收藏
- 关注
原创 操作系统 :银行家算法的实现(C++)
文章目录银行家算法实验原理银行家算法中的数据结构银行家算法安全性算法完整代码测试测试代码测试数据测试结果银行家算法银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。(破坏了环路等待条件)实验原理银行家算法中的数据结构1)可利用资源向量Available是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则
2020-05-31 16:52:01 2537 3
原创 操作系统 : 按优先数调度算法实现处理器调度(C++)
文章目录实验原理算法流程数据结构PSA算法思路完整代码测试测试代码测试数据测试结果实验原理(1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。要求运行时间——假设进程需要运行的单位时间数。优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。状态
2020-05-29 17:43:06 9367 2
原创 C++ STL : 模拟实现STL中的list类
文章目录listlist的介绍list的优缺点list的迭代器失效问题实现的接口节点部分迭代器部分list部分代码实现listlist的介绍list的文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单
2020-05-27 20:03:54 979
原创 C++ STL : 模拟实现STL中的vector类
文章目录vectorvector的介绍vector的优缺点实现时需要注意的细节问题1. Capacity增长问题2. memset等函数来带的按字节拷贝问题3. 深浅拷贝问题4. 迭代器失效问题实现的接口代码实现vectorvector的介绍vector的文档介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容
2020-05-23 18:51:00 1452
原创 操作系统:生产者消费者模型的两种实现(C++)
文章目录生产者消费者模型什么是生产者消费者模型生产者消费者模型的321原则生产者消费者模型的优点生产者消费者模型的实现方法基于循环队列,信号量实现基于阻塞队列,互斥锁、条件变量实现生产者消费者模型什么是生产者消费者模型生产者消费者模型是针对在任务处理中既要产生数据,又要处理数据这一情景而设计出来的一种解决方案。如果生产者生产资源很快,消费者处理资源的速度很慢,则生产者就必须等待消费者处理完数据才能继续生产,反之同理,这样的话生产者与消费者之间的耦合度较高(依赖关系),导致总体效率较低。于是通过引入
2020-05-15 21:44:08 4323 3
原创 C++ STL : 模拟实现STL中的string类
string的文档介绍string是表示字符序列的类标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作 单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信 息,请参阅basic_string)。string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic
2020-05-12 17:07:23 1515 1
原创 Linux 多线程(二)线程安全:线程安全、互斥与互斥锁、死锁、同步与条件变量
线程安全互斥同步死锁线程控制 线程安全所谓线程安全,其实就是当多个线程对临界资源进行争抢访问的时,不会造成数据二义或者逻辑混乱的情况(通常情况下对全局变量和静态变量进行操作时在会出现)常见的线程安全的情况:每个线程对全局变量或者静态变量只有读取的权限,而没有写入的权限,一般来说这些线程是安全的类或者接口对于线程来说都是原子操作多个线程之间的切换不会导致该接口的执行结果...
2020-05-08 17:01:33 898
原创 Linux 多线程(一)线程概念:线程概念、线程与进程、线程间的独有与共享、多线程与多进程、线程控制
线程概念线程与进程线程间的独有与共享多线程与多进程 线程概念什么是线程线程是进程中的一条执行流,执行程序中的某部分代码。linux下没有具体实现的线程,只有库函数用pcb来实现的线程,所以可以认为,每个pcb就是一个线程,所以进程中都至少有一个线程,这些PCB共用进程中的同一个页表和虚拟地址空间,比传统的进程更加轻量化,所以这些线程在linux下也被称为轻量级进程。PCB也就...
2020-05-04 18:02:41 916
原创 C++ 泛型编程(一):模板基础:函数模板,类模板,模板原理,模板匹配规则
类模板函数模板泛型编程泛型编程,泛型即是指具有在多种数据类型上皆可操作的含义,其实就是能够帮助开发者编写完全一般化并可重复使用的算法,同样的工作不需要做多次,同样的算法针对不同的类型也不应该写多次,所以需要通过某种途径,来使一个容器或者算法,能够兼容所有的类型,这就是泛型编程。void Swap(int& left, int& right) { int t...
2020-05-01 15:26:58 1215 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人