操作系统与计算机网络

  2017-11-5 


操作系统

进程线程调度

内存管理

CPU查找一个数据,先进行逻辑地址翻译成物理地址(先查缓存中的快表TLB有无记录,若无,去主存中的页/段表查)

TLB or 主存中最终查得到目标页面的物理地址和该页面是否被调入内存(虚拟内存机制),如果没有调入内存,则产生缺页中断(中断处理将该页面调入内存)

这里获取到物理地址,并确定目标页在内存中之后,就应该通过物理地址去获取数据了。(先查缓存cache中是否存有该物理地址对应的页面,如果没有,再去指定地址的主存查找)

最多要访问两次主存

总体来说就是:逻辑地址->物理地址,(考虑虚拟内存机制),物理地址->访问数据

文件系统

FCB文件控制块

目录结构

硬链接接指针指向目标文件

软链接记录目标文件的路径

访问控制表

文件物理地址分配:

连续分配

链接分配(隐式链接:一个串一个;显式链接:一个FAT文件分配表记录所有链接,FAT在磁盘中只有一张,可以加载进内存,每个表项存放对应块的下一块连接指针)

P.S. FAT32中表示文件大小的那个变量是4个字节,也就是32位表示,所以最大支持4G

索引分配(每个文件都有索引块储存在外存,所以需要IO两次或多次(若为多级索引))

文件储存空间管理(物理块是否空闲分配):

空闲表法、空闲链表法、位视图法

磁盘:

一个盘面很多磁道,一个磁道划分成固定大小的几百个扇区(通常512B),一个扇区叫一个盘块

扇区是最小可寻址单元

是根据不同的文件系统决定的,可以1KB 2KB 4KB等,是每次读写数据时的最小单位

而文件物理地址分配的时候,分配的是簇(因为是读写最小单位),比如FAT里一个表项是一个簇

磁盘调度算法:FCFS、SSTF(最短寻找时间)、SCAN(电梯)、CSCAN(循环)

IO

程序直接控制方式:CPU阻塞等待IO数据

中断驱动方式:IO使用中断通知CPU数据好了

DMA:IO与内存直接交换数据,CPU只在开始和结束做点微小的工作

SPOOLing假脱机:提高IO速度,将独占设备改造为共享设备,实现虚拟设备等(实际上就是把需要打印机要打印的东西先拷到磁盘中,然后挂载到打印机等待队列上,等资源有了就打印)

计算机网络

从高层向下逐层封装,然后到最底层实际通过物理层发送

物理层

①物理层(原生bit流):

工作设备:中继器,集线器

数据链路层

②数据链路层(帧):差错控制(确认、超时重传)。流量控制、传输管理;提供点到点通信(点:一个硬件或IP地址)分为MAC(介质访问控制子层)和逻辑链路控制子层

PPP HDLC;工作设备: 网桥、交换机(帧转发),网卡

网卡存在一个唯一的代码:MAC(介质访问控制)地址,也叫物理地址

重传:回退N帧重传(只收顺序帧);回退N帧缓存窗口只重传丢弃;窗口外丢弃;收一个ACK一个

控制介质访问:ALOHA;间隙ALOHA;CSMA/CD;CSMA/CA(无线)

当数据经过网络层分组转发到达LAN之后,LAN中是在数据链路层MAC地址寻址(具体见网络层的ARP)

网络层

③网络层(数据报):流量控制、拥塞控制、差错控制、网际互联、路由选择<-路由器(路由选择、分组转发)

IP ICMP ARP RARP OSPF

路由算法:1距离向量(RIP,每个结点仅与它的直接邻居交谈;30秒固定更新;有最高跳数,超出即不可达,以防止环路)

2链路状态(OSPF,每个结点都具有完全的网络拓扑信息,每个结点向所有结点广播,但仅广播与它直接相连的链路的费用,然后问题变成了最短路径问题,使用Dijkstra算法;链路每变化一次就更新,重新计算最小路径)

层次路由:通过层次路由,将互联网划分为很多自治系统,每个自治系统AS(AS内部有很多个路由器,可以由多个局域网组成)自己决定域内的路由选择协议(如RIP、OSPF),对于域外交流,需要用到BGP协议(应用层协议,基于TCP)(一种外部网关协议,用在互联网的网关之间,每个AS选出一个BGP发言人,与其它AS的BGP发言人TCP交换路由信息)

由于链路层数据报有最大传送单元MTU限制,所以IP数据报过大会被分装在多个小的IP数据报中(称为片),然后再在目的地的网络层被重新组装

路由表中的每一行:<目的IP地址,子网掩码,下一跳地址>

分组转发过程:①从数据报首部获取目标主机IP,得到目标网络地址 ②对与路由器直接相连的网络逐个排查,用子网掩码与IP按位与,看结果是否和相应的网络地址相匹配,若匹配则直接交付③若路由表中有目的地址的主机路由,则将数据报传送给该路由④对路由表中每一行的子网掩码和目的IP按位与得到目标网络地址,若与该行的目的IP地址相同,则传送给下一跳路由器⑤若有默认路由,则传给默认路由器⑥出错

注意:得到下一跳路由器的IP地址并不是直接将该地址填入待发送的数据报,而是将IP地址转换成MAC地址(荣国ARP),将其放在MAC帧首部中,然后根据这个MAC地址找到下一跳路由器(链路层)。在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是最终目的IP地址是不会变的。

网络地址转换NAT:通过将专用网络地址(如本地局域网)转换为公用网络地址,从而对外部隐藏内部管理的IP地址

局域网内不需要路由器,因为只有广域网才需要路由转发功能。局域网使用的协议主要工作在数据链路层,广域网使用的协议主要工作在网络层。一个局域网连接进广域网就需要路由器。

IP地址:

分为<网络号,主机号>

网络号首部为标志位(ABCDE类网络)

主机号全为0表示本网络本身,如202.98.174.0

127.0.0.1为回环地址,永远不会出现在网络上(不会被转发出去)

0.0.0.0表示本网络上的本主机

255.255.255.255表示本网络的广播地址

路由器对广播域有隔离作用

子网划分:

不划分子网,即一台机器一个物理地址会使得路由表太大

所以变成:<网络号,子网号,主机号> + 子网掩码

路由交换的时候必须告知子网掩码

网络变成三级结构了

软件实现,将子网掩码与IP地址按位与就可以得到子网地址

CIDR(无分类域间路由选择):灵活划分子网,可以实现路由聚合,构成超网

表示法:<网络前缀,主机号>/前缀所占比特数,如206.1.0.0/17

仍然有掩码一词,网络前缀-网络号即为人为划分子网数

ARP:每台主机都有一个ARP缓存。主机A欲向本局域网的某主机B发送IP数据报,就先在ARP缓存中查看是否有误主机B的IP地址,若有,则直接查出B的MAC地址。若没有,就通过使用目的MAC地址为FFFFFFFFFFFF的帧来封装并广播ARP请求分组,同一个局域网内的主机B收到ARP请求后,向主机A发送响应ARP分组,包含MAC地址。

主机A收到后写缓存,并向目的MAC地址的硬件发送MAC帧。

ICMP:ICMP是网络层协议!它可以让主机或路由器报告差错和异常情况。分为ICMP差错报告报文、ICMP询问报文;

PING工作在应用层,直接使用网络层的ICMP,不使用TCPUDP

Traceroute/Tracert(跟踪分组路过的路由)工作在网络层,使用ICMP

组播:只发一份,分叉(路由)复制

局域网内不需要网络层的分组转发,直接用交换机即可(数据链路层);公网就需要网络层分组转发、路由选择,需要路由器(网络层)

传输层

④传输层:屏蔽下层通信子网;为端到端提供可靠的传输服务、流量控制、差错控制、服务质量、数据传输管理等

TCP UDP;提供端到端的逻辑通信(端:运行在主机上的进程,一个进程由一个端口标识,所以叫端)

套接字是一个通信端点:

TCP:面向连接,可靠

UDP:无连接,非可靠(UDP也要校验,有差错就丢弃)

TCP如何做到可靠传输:校验、序号(保证有序)、确认号(标明希望下一个报文段的序号,累计确认至第一个断序处)、重传(超时重传、冗余ACK确认可以快速重传)

TCP流量控制:滑动窗口,每次可以动态要求窗口大小

TCP拥塞控制(防止过多数据注入,以免网络中的路由器或链路过载,一般表现为超时):[慢开始算法、拥塞避免算法](慢开始窗口从1开始,倍数增大,到一个门限改用拥塞避免算法,窗口加法增大,第一次超时,窗口变为1,门限减半)、[快重传、快恢复](快重传指收到3个ACK就认为超时,这时候以门限/2为窗口大小开始发包,直接进入拥塞避免状态)(慢开始快重传都指的是拥塞/超时从什么时候开始,从1窗口开始是慢开始,从门限开始是快重传,门限都会减半)

一旦发现拥塞,缩小窗口/减少主机发送分组数

关于三次握手四次挥手(非常重要,但这里不解释)

三次挥手的原因:

如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端,但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接,不采用三次握手,只要服务端发出确认,就建立新的连接了,此时客户端忽略服务端发来的确认,也不发送数据,则服务端一致等待客户端发送数据,浪费资源

应用层

⑤应用层(会话层、表示层、应用层)

会话层:不同主机的各个进程之间进行有序的会话,也叫建立同步

表示层:提供数据表示的变换功能

应用层:用户与网络的解谜,如FTP,DNS,SMTP,HTTP,DHCP,BGP

DHCP:基于UDP;往返共四次,都是广播,前面先确认,后面再发送。某计算机启动,①向本地网络广播DHCP发现报文,②只有DHCP服务器才能回复该报文,DHCP先在数据库查找该计算机配置信息,找不到就在IP池中取一个地址,然后将信息广播,DHCP回复称为提供报文(也是广播)③计算机如果接受该配置信息,就通过广播发送DHCP请求报文确认④DHCP广播DHCP确认报文,将该IP地址分配给计算机


且听风吟