ARP协议
完成主机或路由器IP地址到MAC地址的映射(解决下一跳的问题)
使用过程:
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组。源主机收到此映射写入ARP缓存
DHCP协议
动态主机配置DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
1.主机广播DHCP发现报文
2.DHCP服务器广播DHCP提供报文
3.主机广播DHCP请求报文
4.DHCP服务器广播DHCP确认报文
OSPF协议
开放最短路径优先OSPF协议,开放标明OSPF协议不是受到某一家厂商控制,而是公开发表,最短路径优先是因为使用了Dijkstra提供的最短路径算法
OSPF的特点:
1.使用洪泛法向自治系统内所有路由器发送消息,即路由器通过输出端口向所有相邻的路由器发送消息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器
2.发送的消息就是与本路由器相邻的所有路由器的链路状态
3.只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息
IP数据报传输方式
单播:单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址,作为目的地址,是一种点对点传输方式
广播:是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式
组播:当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式
如何实现原语的原子性
CPU执行了关中断指令hi后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。
关中断和开中断之间的这些指令序列就是不可被中断的,这就实现了原子性
地址转换三种方式
绝对装入:编译器负责地址转换(单道程序阶段,无操作系统)
可重定位装入:装入程序负责地址转换(早期多道批处理阶段)
动态运行时装入:运行时才进行地址转换(现代操作系统)
动态分区分配算法
算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
空闲分区以地址递增的次序排列,每次分配内存时顺序查找空闲分区链,找到大小能满足要求的第一个空闲分区
最佳适应算法
空闲分区按容量递增次序连接,每次分配内存时顺序查找空闲分区链,找到大小能满足要求的第一个空闲分区
缺点:每次都选最小的分区进行分配,会留下很多越来越小的内部碎片
最大适应算法
空闲分区按容量递减次序链接,每次分配内存时顺序查找空闲分区链,找到大小能满足要求的第一个空闲分区
邻近适应算法
空闲分区以地址递增的顺序排列,每次分配内存时从上次查找结束的位置开始查找空闲分区链,找到大小能满足要求的第一个空闲分区
链接的三种方式
静态链接:在程序运行之前,先将各个目标模块及他们所需的库函数链接成一个完整的可执行文件,之后不再拆开。
装入时动态链接:将各目标模块装入内存时,边转入边链接的链接方式
运行时动态链接:在程序执行中需要该目标模块时,才对他进行链接。其优点是便于修改和更新,便于实现对目标模块的共享
分页存储
将内存空间分为一个个大小相等的分区(每个分区4kb),每个分区就是一个页框(页框=页帧=内存块=物理块=物理页面)每个页框有一个编号,即页框号(页框号=页帧号=内存块号=物理块号=物理页号),页框号从0开始
将进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部分称为一个页或者页面,每个页面有一个编号,即页号,页号也是从0开始。
操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中,进程的页面与内存的页框有一一对应的关系
各个页面不必连续存放,可以放到不相邻的各个页框中
分段,分页管理对比
页是信息的物理单位,分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管理上的需要,完全是系统行为,对用户是不可见的
段是信息的逻辑单位。分页的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显示地给出段名
页的大小固定且由系统决定,段的长度却不固定,决定于用户编写的程序
分页的用户进程地址空间是一维的,程序员只需要给出一个记忆符即可表示一个地址
分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址
分段比分页更容易实现信息的共享和保护,不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的,可修改的代码是不能共享的
分页:第一次访存-查内存中的页表,第二次访存-访问目标内存单元,总共两次访存
分段:第一次访存-查内存中的段表,第二次访存-访问目标内存单元,总共两次访存