C++内存管理 - 9~11 此笔记需要等待更新和确认。 重载 operator new, operator delete 注意红色的是较为常见的重载成员函数中的operator new。绿色的是不常见的重载全局函数的operator new 重载全局operator new, operator delete 一定要注意,全局的::operator new下面是mal...
C++内存管理 - 7~8 此笔记需要等待更新和确认。 array new 和 array delete 用new和delete对数组进行操作时,会调用对应长度的次数的构造/析构函数 并分配/释放对应大小的内存。 Complex* pca = new Complex[3]; //这里会调用三次构造函数 delete[] pca; //这里会调用三次析构函数。三次会指向不同的对象 ...
C++内存管理 - 1~6 此笔记需要等待更新和确认。最好搭配深度探索6.1一起看 我们由上图可以看出malloc和free是比new delete更底层的东西。malloc和free属于c函数,而new和delete属于c++表达式。 内存分配方式: 使用malloc分配特定大小的内存。使用malloc会返回一个未定类型的指针。 类型决定了...
Linux多进程开发-2.15-有名管道 有名管道 有名管道以FIFO的文件形式存在于文件系统中。但是内容是在内存中。 创建有名管道 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <un...
Linux多进程开发-2.12-父子进程通过匿名管道通信 一次性写入 #include <unistd.h> #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int...
王道操作系统笔记-进程(13)– 用信号量实现进程互斥、同步、前驱关系 信号量 为了方便理解,我们可以认为 信号量的值 = 这种资源的剩余数量 所以如果信号量的值小于0,说明此时有进程正在等待这个资源。 P(S) 也就是wait(S) —— 申请一个资源S。如果资源不够就阻塞等待。 V(S) 也就是signal(S) —— 释放一个资源S。如果有进程在等待该资源,则唤醒一个进...
王道操作系统笔记-进程(12)– 信号量机制 信号量 用户进程可以通过使用操作系统提供的一对原语(wait 和 signal)来对信号量进行操作。从而进行进程互斥和进程同步。 信号量其实就是一个变量。可以是一个整数,也可以是更复杂的记录型变量。可以用一个信号量来表示系统中某种资源的数量。 整型信号量 用一个整数型变量做为信号量。用来表示系统中某种资源的数量。 整型信号量不满...
王道操作系统笔记-进程(11)– 进程互斥的软件实现方法 单标志法 — 违背空闲让进的规则 双标志先检查法 - 违背忙则等待原则 双标志后检查法 - 违背了空闲让进和优先等待原则 Peterson算法 - 违背让权等待原则 总结
王道操作系统笔记-进程(10)– 进程同步、进程互斥
王道操作系统笔记-进程(9)–时间片轮转、优先级、多级反馈队列调度算法 RR - 时间片轮转 如果时间片太大,使得每一个进程都可以在一个时间片内完成,则时间片轮转调度算法回退化为先来先服务调度算法,并且会增大进程响应时间。所以 时间片不能太大 。 另一方面,进程调度和切换是有时间代价的(保存,恢复运行环境)。所以如果时间片太小,会导致 进程切换过于频繁 系统会花费大量的时间来处理...