作业、进程、线程、管程的定义
作业:相当于一个Job,包含一个事务处理过程中要求计算机所做工作的集合
进程:一个程序在一个数据集上的一次运行过程,所以一个程序在不同数据集上运行,乃至一个程序在一个数据集上的多次运行都是不同的进程
线程:进程的一个实体,被系统独立调度和执行的基本单位
管程:定义了一个数据结构和在该数据结构上能为并发进程所执行的一组操作
进程间通信
信号、信号量、消息队列、共享内存
所谓进程间通信是指进程之间的一些交互,交互有简单也有复杂,可以传递一些message,比如消息队列
都可用来实现同步和互斥
信号是使用信号处理器来进行的,信号量是使用P.V操作来实现的
消息队列是比较高级的一种进程间通信方法
一个消息队列可以被多个进程所共享,IPC就是在这个基础上进行的
共享消息队列的进程所发送的消息中除了message内容本身外,还需要一个标志表明该消息的发送者或者接收者
mutex互斥器用于进程之间互斥,critical section临界区是线程间互斥
死锁的四个必要条件
互斥条件:一个资源每次只能被一个进程所使用
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
不剥夺条件:已获得的资源,未使用完之前,不能强行剥夺
循环等待条件:进程之间形成一种环路等待资源关系
防止死锁
互斥条件不能被破坏,其他三个条件破坏即可解除死锁
资源静态分配策略,破坏请求与保持条件,也叫部分分配调节
允许进程剥夺其他进程占有的资源
资源有序分配,破坏环路
预防死锁
主要是不让四个必要条件成立,确定资源的合理分配,避免进程永久性占据系统资源,防止进程处于等待状态的情况下占用资源
分配资源前进行动态检测,若分配后可能死锁,则不允许分配
处理死锁
除了防止死锁外,发生后的处理方式是将其杀死
exe、dll、ocx、sys、com都是pe文件,即可移植文件
内存、知道的DLL、清单与.local、应用程序目录、当前工作目录、系统目录、路径变量即path变量
动态链接库文件
不能单独运行
通用模块功能
由全局数据、服务函数和资源组成
DLL可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序是相同的堆栈
一个DLL在内存中只有一个实例
调用方式
静态调用
动态调用
CPU中的缓存和操作系统中的缓存的区别
OS中的缓存:快表
提高系统的存取速度,增加一个快表用于存放当前访问最频繁的少数活动页面的页号。
存取数据时,先在快表中查找,找到物理地址
如果快表中没有,那么再通过原始的地址映射找到物理地址,存入快表
如果快表已满,那么根据淘汰算法淘汰某一行
目的是加快对磁盘上文件的访问
CPU中的缓存:Cache
位于CPU和内存之间,交换速度快
起缓冲作用