银行家算法:银行家算法顾名思义就是银行家(操作系统)贷款(资源),给顾客(进程) ,进程用完资源就得快速归还
银行家算法有四个数组,Max(资源的最大需要量) need(还需要多少) Avail(当前分配了多少) P(还剩多少资源)
判断安全:去找need,看是否当前资源能够满足,能够满足的话就给它,然后一次顺序找可以分配资源的进程,如果找了一圈发现当前资源不能够满足它了,那么就结束,代表当前状态处于不安全,可能发生死锁
如果所有进程能够满足完,那么代表当前是一个安全序列
进程通信: 有直接通信和间接通信两种
直接通信: 管道 共享内存
间接通信:信号 消息队列
信号:过程进程注册时候把自己有的信号函数注册在内核以便识别,然后处理器或者别的进程发送信号,这个时候从内核取出信号函数进行判断
管道:一般用于父进程建立子进程,然后父子通信,一边发,一边收,创建的时候有参数是一个两位数组,过程大概是shell建立一个管道,然后把进程放入管道发方,再把进程放到收方
消息队列:消息队列支持多个进行发送,然后发送到消息队列里面,以字节为单位,然后收方直接去消息队列中去取,消息队列是内核操作的
共享内存:如果是线程的话,那么就是天然的共享内存,进程的话有专门设置一个共享区,然后因为共享内存可能发生两个进程一起在写的情况,所以一般要搭配同步来使用
文件系统 和 IO 下次写把,挂机了