技术交流QQ群:1027579432,欢迎你的加入!
欢迎关注我的微信公众号:CurryCoder的程序人生
1.内核同步的原因
- 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实像多进程多线程编程一样,也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。
2.同步方式
- 原子操作、信号量(semaphore)、读写信号量(rw_semaphore)、自旋锁(spinlock)、大内核锁(BKL,Big Kernel Lock)、读写锁(rwlock)、大读者锁(brlock-Big Reader Lock)、读-拷贝修改(RCU,Read-Copy Update)、顺序锁(seqlock)
3.死锁
- 产生原因:系统资源不足、资源分配不当、进程运行推进顺序不合适
- 产生条件:互斥、请求和保持、不剥夺、环路
- 预防:
- 打破互斥条件:改造独占性资源为虚拟资源,大部分资源已无法改造
- 打破不可抢占条件:当一进程占有一独占性资源后又申请一独占性资源而无法满足,则退出原占有的资源
- 打破占有且申请条件:采用资源预先分配策略,即进程运行前申请全部资源,满足则运行,不然就等待,这样就不会占有且申请
- 打破循环等待条件:实现资源有序分配策略,对所有设备实现分类编号,所有进程只能采用按序号递增的形式申请资源
- 有序资源分配法
- 银行家算法
4.文件系统
- Windows:FCB 表 + FAT + 位图
- Unix:inode + 混合索引 + 成组链接
5.主机字节序与网络字节序
- 5.1主机字节序(CPU字节序)
- 概念:主机字节序又叫 CPU 字节序,其不是由操作系统决定的,而是由 CPU 指令集架构决定的。主机字节序分为两种:
- 大端字节序(Big Endian):高序字节存储在低位地址,低序字节存储在高位地址
-
小端字节序(Little Endian):高序字节存储在高位地址,低序字节存储在低位地址
- 概念:主机字节序又叫 CPU 字节序,其不是由操作系统决定的,而是由 CPU 指令集架构决定的。主机字节序分为两种:
- 5.2网络字节序
- 概念:网络字节顺序是 TCP/IP 中规定好的一种数据表示格式,它与具体的 CPU 类型、操作系统等无关,从而可以保重数据在不同主机之间传输时能够被正确解释。网络字节顺序采用:大端(Big Endian)排列方式。
6.页面置换算法
- 概念:在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
- 分类:
- 全局置换:在整个内存空间置换
- 局部置换:在本进程中进行置换
- 算法:
- 全局:
- 工作集算法
- 缺页率置换算法
- 局部:
- 最佳置换算法(OPT)
- 先进先出置换算法(FIFO)
- 最近最久未使用(LRU)算法
- 时钟(Clock)置换算法
- 全局: