八股文7:操作系统与IO模型

操作系统基础

什么是操作系统

在这里插入图片描述

内核的管理工作

让内核作为应用连接硬件设备的桥梁,应用程序只需关心与内核交互,不用关心硬件的细节。
在这里插入图片描述

在这里插入图片描述

内核态与用户态

内核的两种体系结构(宏内核和微内核)

在这里插入图片描述

CPU工作模式

在这里插入图片描述

内存管理

虚拟内存的概念

在这里插入图片描述
在这里插入图片描述

内存的存储管理(虚拟地址->物理地址)

分段式存储管理(外部内存碎片问题)

虚拟地址的段选择因子里的段号对应“段表”的索引(段寄存器查看自己的段号对应的段基址,注意段基址对应的段界限限定了虚拟地址的偏移量,偏移量不能超过段的界限)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

优点:分段的好处就是能产生连续的内存空间;缺点:外部内存碎片–>进一步引起内存置换
在这里插入图片描述

外部内存碎片和内部内存碎片de区别

外部内存碎片(没人能够使用),内部内存碎片(占了茅坑不拉屎)
在这里插入图片描述

分页式存储管理(解决内存碎片问题—>页表大)

将虚拟内存(页)与物理内存空间(页框)划分为更细粒度的“固定尺寸”的大小!!!!就是“页”

在这里插入图片描述

在这里插入图片描述

分页管理的缺陷:页表本身很占内存(映射过多)

在这里插入图片描述

利用页面置换算法,将不需要的页换出,需要用到的页换入

在这里插入图片描述

(非连续式分配管理)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

多级页表和快表

在这里插入图片描述

一级页表对应一级页号与二级页表地址的关系,二级页表真正存放的是二级页号和物理内存地址的关系

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

段页式存储管理 (段+页)

给每个程序一张段表,段表的每个段又建立一张页表

在这里插入图片描述

在这里插入图片描述

进程(CPU)管理

什么是进程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

进程的状态

在这里插入图片描述

进程间的通信方式

1.共享存储(同步互斥控制)

在这里插入图片描述

2.消息传递(消息缓冲队列—信箱)

在这里插入图片描述

3.管道通信

在这里插入图片描述

信号量(进程间的同步方式)

p操作减一后需要判断自身需不需要阻塞,v操作加一后需要判断自己需不需要唤醒别人(一个线程执行的pv操作是成对出现的,先占用资源在释放资源的成对操作)
在这里插入图片描述

互斥信号量:信号初始化为 1,就代表着是互斥信号量,它可以保证共享内存在任何时刻只有一个进程在访问,这就很好的保护了共享内存。
在这里插入图片描述

同步信号量:进程 A 是负责生产数据,而进程 B 是负责读取数据,这两个进程是相互合作、相互依赖的,进程 A 必须先生产了数据,进程 B 才能读取到数据,所以执行是有前后顺序的。那么这时候,就可以用信号量来实现多进程同步的方式,我们可以初始化信号量为 0
在这里插入图片描述

总结

注意:
1.父子进程指主进程fork出来的子进程
(对于匿名管道,它的通信范围是存在父子关系的进程。因为管道没有实体,也就是没有管道文件,只能通过 fork 来复制父进程 fd 文件描述符,来达到通信的目的。
另外,对于命名管道,它可以在不相关的进程间也能相互通信。因为命令管道,提前创建了一个类型为管道的设备文件,在进程里只要使用这个设备文件,就可以相互通信。)
2.消息队列位于内核的一个消息链表,如何需要实现消息的读取与写入都要涉及到----用户态与内核态之间的数据拷贝。
3.共享内存实际是两个应用有一个共享的物理内存空间(需要解决共享资源的同步与互斥的相关操作)

在这里插入图片描述

如何解决多进程间共享资源的同步方式—信号量机制(针对同一台主机);
内核与应用进程之间的交互—信号(异步通信机制);
不同主机的进程间通信—socket通信

在这里插入图片描述

线程间的同步方式

在这里插入图片描述

调度算法(进程调度/页面置换)

小林的调度算法
在这里插入图片描述

进程间的调度算法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

页面置换算法
在这里插入图片描述

IO模型

(用户态与内核态 / 调用者与被调用者 / 发起请求者与处理请求者)

系统调用

在这里插入图片描述

IO模型

在这里插入图片描述

在这里插入图片描述

BIO同步阻塞模型(JDK1.4之前)

在这里插入图片描述

对服务器端的CPU造成了压力了,需要维护很多的线程(上下文切换)。多线程中某个线程阻塞,导致CPU的占用

在这里插入图片描述

NIO同步非阻塞模型

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

NIO 与BIO的区别

在这里插入图片描述

NIO-单线程模型

在这里插入图片描述

在这里插入图片描述

NIO-多线程reactor模型

selector()+线程池里的工人

在这里插入图片描述

AIO异步IO模型(了解)

在这里插入图片描述

在这里插入图片描述

IO多路复用模型(select,poll,epoll)

在这里插入图片描述

Netty (NIO)

在这里插入图片描述

RPC(远程过程调用)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值