计网-2
传输介质那边说的带宽都是传输频率,集线器是下一节的内容
传统以太网采用广播模式,同一时间只能允许一台主机发送信息,一般采用曼彻斯特编码
区分基带信号、宽度信号的差别
基带信号是对数字信号用不同的电压表示送到数字信道传输
宽度信号是对基带信号进行调制、频分复用后送到模拟信道上面传输
中继器两端的网络部分是网段,而不是子网,适用于完全相同的两类网络的互连
两端可连相同媒体,也可连不同媒体
使用中继器连接的几个网段仍是一个局域网,两端的网段一定要采用一个协议
能够存储转发的网络设备支持两端可以是不同协议
中继器不能连接两个速率不同的局域网
集线器不能分割冲突域、集线器所有端口都属于一个冲突域,连在集线器上的工作主机平分带宽
一些资料:冲突域参考
实际上涉及了后面几个章节的内容
中继器只管速率相同网络的相互连接,至于协议是否相等,根本不是他考虑的事情
物理层协议也就只需要你速度能够匹配就能给你连上,不用管太多
至于高层到底会不会有协议上的冲突,根本不是中继器管的,他管不了那么多
如果真的需要统一高层的协议冲突的话,那么就引入更高层的设备来统一
二层及以上设备可以隔离冲突域、三层以上设备可以 ...
计网-1
湖工大教书匠对应内容
补充内容
文前提示!
相对而言二轮的时候个人会进行内容的补充、以及借鉴他人文章,进行细节的修补
具体计网个人并不想花太多力气上去,计组和数据结构才是个人想要重点花时间的方向
这些内容平时当作小说看就行了
一些小补充:
报文交换需要注意的就是需要一次性全部传输到一个路由器,才能继续向后发送的特性
而分组就可以并发发送,以组为单位,且可实现流水线
在本书中单位会有所不同,KB和kb就有一定的区别,需要注意,同时注意单位间的换算
流水线工作方式,以几个发送口决定r是多少,统考题目的考察方式
以太网是一种总线拓扑形式的网络,常用于城域网
无连接服务基本上是不可靠的,当然可以通过一些用户手段将其变为可靠的
有连接服务一般都是可靠的
OSI参考模型需要背诵,各个层级和相关的功能,下面是一个简版
物理层-数据链路层-网络层-传输层-会话层-表示层-应用层,分别给定各自的功能属性
物理层:规定信号电气含义、规定接口参数
数据链路层:检测误差(帧错+位错)、流量控制、控制对共享信道访问,主要任务是把上层传下来的封装为帧
网络层:路由选择、流量控制、差错控制、拥塞控制
传输层: ...
OS-12
划重点:
相对而言比较重要的一块内容是I/O软件层级结构,在P309,后面有不少对其的贯穿
设备独立性软件整块内容见P318、设备驱动程序接口见P326
其中设备独立性软件总体内容尚可接受,主要在于第一段话会有相关,其中内容不抽象
上一章同样有一定联系的抽象内容是最后一节文件系统结构、文件系统布局
以及第五章最后一节P337底部开始的,磁盘的管理,这一部分建议一起拿起来复习
虚拟文件系统、文件系统挂载则是更为抽象的内容,还都是文件描述
上面是对第四章最后一节以及第五章较晦涩内容的一些整理,按照此顺序复习会更好些
具体看PPT的顺序个人会进行一定的梳理,为后续复习做一定的完善和铺垫
相对的,还有操作系统引导,P30,第一章的内容,磁盘引导程序
第四章文件管理:
10、11、12、16
第五章:
4、5、6
文件系统结构:
书上的内容并且和PPT内容没有多少重合,只能是走例子
如果按照书上的,那么例子应该变成
首先逻辑文件系统向上提供一些接口,然后用户去调用Read接口函数,并输入目录
逻辑文件系统通过文件名/目录去搜索相应的目录项,同时检查用户是否有权限读/写
读出相应的目录项后, ...
OS-11
前面的设备分类需要有一个大致上的印象,还是比较容易考察的,对例子要有记忆在
多看几遍基本也就熟悉了,问题不大
书上的内容里面,还是需要注意下数据线有时候传的也是控制信号,计组我记得是有题目的
两种对应的,其就是对应统一编址和独立编址
I/O控制方式,其实更建议看计组的内容,那边更加详细,这块是重叠内容
程序直接控制方式,注意细节每次读写传送的单位是一个字
其一定需要经过CPU这一关才能到达内存,数据在跑到内存之前必须经过CPU寄存器
中断驱动方式,同样每次读写的是一个字
DMA方式每次传送是一个块,每次的读写可以是多个块
每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的
通道几乎不考,但还是要了解一下,PPT还是很不错的内容补充
其每次传送单位是一组块
后面的内容不难理解,也大多偏记忆内容,后续复习只需要看王道的相应PPT就行
共享资源包括两种形式,一种是互斥访问,一种是分时同步访问
互斥访问的情况被称作“临界资源”
对设备而言,互斥访问的临界资源设备被称为“独占设备”
能够分时访问的,被称为“共享设备”
不可剥夺资源,被占用后就只能被进程自身释放 ...
OS-10
目录结构书上分为四种,总体看后面两种为主,因为现代应用大多数是后两者
对树形目录的一些补充:
其实核心就是其I/O次数的补充,绝对路径采用从根目录开始不断I/O下去寻找
根据磁盘地址读入一个表,再根据这个表某表项的磁盘地址读入下一级表,比较耗费I/O
课后也有大题,相对而言有点难
因为一直大量I/O肯定不是办法,所以可以用相对目录,直接可以依靠CD来切换当前目录
注意这个是系统调用,此外切换用户默认目录的话需要去修改对应文件,需要区分
无环图主要是对应了引用方式,便于分享
需要注意的是共享链是需要设置计数器的,不过再说
目录操作、目录实现有个印象就行,不是特别重要的考点
文件共享才是比较重要的考点
另外对书上那句比较费解的话的一些解释,就是字面意思,共享文件依旧可以有私有部分
先声明一个要点,文件共享不是简单的复制,其他用户在该文件作的改变别的用户也能看到
一般采用索引结点的方式,而不会采用古老的FCB,那种太费检索时间,另外要会计算
需要注意存满的时候和没有存满的时候对应的计算策略是不同的,可以见P276第二题解答
内存索引、磁盘索引对应的内容在P253,这一些可以结合起来看
共 ...
OS-9
大体框架:
文件属性、文件分类只需要略微记忆即可,稍微注意下文件分类中的形式
注意的是,文件名只在open系统调用的时候使用,后续都只使用其标识符
无结构文件别名“流式文件”,有结构文件别名“记录式文件”
文件控制块FCB包含控制文件的一系列信息,类似于PCB进程管理块
FCB的有序集合被称为文件目录,简单来说就是FCB1、FCB2、FCB3、FCB4…这样一串
一个FCB自然就可以被称作是一个文件目录项,通常由FCB组成的文件目录也视作文件
FCB自然有其的一些特有信息,书上有,重视下创建时需要为文件创建其FCB
理解上可以用FCB列表来理解,一个个列下去
FCB是目录文件中的内容,其中包含了文件所在的物理地址等信息
打开文件表中包含的是该文件的表项,也可以说就是FCB,从磁盘调入内存,方便使用
注意区分:
打开文件表存在的目的是方便一个打开文件的写、读、删等操作的实现,不必再去找磁盘
放在内存里,就不必每次都去文件目录里检索这个文件的目录项在哪
目录项和索引结点分离的目的是,减少检索时的开销,加快检索的速度,要区分开
简单来说就是把检索所需要的信息单独列出来,这样检索就 ...
OS-8
虚存的定义:
需要注意的是,此时应该采用了动态链接、动态装入的策略
操作系统负责缺页的处理(换出、换入),对用户而言是透明不可视的
一个容易混淆的点:
虚拟内存实际上并没有拓展物理存储空间的大小,可以见课后的本节小结内的详细解释
对请求分页管理方式的补充:
主要是对最后流程图过程的补充、理解
当产生缺页中断时,操作系统首先会根据页表中的对应地址(此时未调入是外存地址
去将这个块调入,如果内存没满那么就直接调入,内存满了就需要替换
替换后,被替换的就需要从页表中删除或者说修改,需要同时在快表、慢表中修改
替换的块也需要修改,修改慢表中的内容,并加入快表内,然后再通过快表命中访问
对于2、3、4、5没特别可以说的,主要是第一个可以联系计组的Cache写回策略,计组8内
页框、抖动、工作集:
内存分配策略:固定、可变
固定分配:操作系统为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。即驻留集大小不变
可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少,即驻留集大小可变
置换策略:全局、局部
局部置换:发生缺页时只能选进程自己的物 ...
OS-7
三种装入方式:
本质是地址转换方式的不同
绝对装入:
仅支持单道批程序环境下的产物
内存中仅支持放一个程序,程序的逻辑地址和实际地址完全一致,不用转换
该地址可以被程序员、编译程序所赋予,对应的内存分配策略是单一连续分配
静态可重定向装入:
其特征是为作业分配一块连续的、固定大小的、固定区域的空间
在后续整个程序运行过程中一直保持固定大小,不会变化
地址在装入主存后直接转换为物理地址,相对地址转物理地址,不必使用地址转换机构
对应的内存分配策略为固定分配策略或者静态分配策略
动态可重定向装入:
别名动态运行时装入,其特征是为作业分配一块可不连续、不固定大小、不固定区域空间
在后续程序运行中可以根据实际所需变化空间大小,动态申请内存
地址装入主存后依旧保持逻辑地址,只有在运行的时候才会把逻辑地址转为物理地址
需要地址转换机构的协助,或者说重定位寄存器的服务
对应的内存分配策略是动态分区分配(连续分配),页式、段式、段页式(非连续分配)
三种链接策略:
静态链接、装入时动态链接、运行时动态链接
静态链接是在运行之前或者说装入之前,就全部完成打包不再拆开
对应的模式是:静态可重定向、固定分 ...
PV模型:(有待整理汇总
多生产者、单生产者、多消费者、单消费者、单一生产者资源,单一消费者资源
多生产者资源,多消费者资源,多口袋,口袋容量大于1,口袋容量等于一,排列组合
大多数都是消费者-生产者问题
[https://zhuanlan.zhihu.com/p/593795480]可搭配食用
生产者、消费者问题:
抽象为多生产者提供单一产品,多消费者消费单一产品,单口袋容量大于一的情况
对于生产者:
如果管道不满,并且能够得到管道使用权,那么写
对于消费者:
如果管道不空,并且能够得到管道使用权,那么读
构建逻辑关系:
互斥资源只有一个就是对管道的占据权
同步资源其实就是指当前的管道内的内容资源
下面有对这个资源进行解释,为何需要拆分为一个空,一个满而不是采用一个计数器
因而构建互斥资源初始量为一,两个同步资源一个初始量为零,一个初始量为满
需要先检查,后占用,否则会产生死锁问题
附:
可以更加简化流程
口袋空间设置为资源,口袋的使用权也设置为资源,消费者使用资源也设为资源
A当口袋没有生产者资源或者没有口袋使用权资源时陷入阻塞
A当口袋有生产者资源并且有口袋使用权时被唤醒并提供消费者资源、口袋使用权资 ...
OS-6
一些对课本内容的补充:
死锁和阻塞是必须要完全清楚区分的
课后习题第一题的最后选择,也是这样一件事的阐述
争夺一个资源并不会产生死锁,只有互相抢夺互相所拥有的资源才会产生逻辑死锁
阻塞、饥饿都是多个进程对同一个互斥资源的抢夺,逻辑上不存在互相的锁死
只存在互相的等待行为,等待完了就可以拿到这个资源,逻辑上没有互相锁死的存在
同时也可以通过可以逻辑上该行为可以被自发解决,不会一直僵持下去
饥饿可能阻塞,也可能一直就绪
而死锁是相互的
进程A占有一个资源X后向进程B占用的资源Y索取
进程B占用资源Y的同时向进程A索取资源X,这才是死锁,和阻塞像,但绝对需区分
逻辑上该行为是无法被自发解决的
死锁必然阻塞,阻塞不一定死锁,也可能是饥饿
至于死循环,那个是程序逻辑的问题,和这边没关系
循环等待并不是说那个While()循环,而是课本上P150页上面的图,这个才是循环等待
相关的区分和易混淆点参考
不可抢占资源与临界资源的区分
同时附了一些常见的资源类型,都说了历朝历代考研人才是王道
死锁四个条件内,对于不可剥夺条件、请求与保持条件的一些解释:
这两个是最为类似的,也是最容易搞错的,后面 ...
OS-5
对于书上基础算法较为形象的描述:
其实更应该说是一些较为经典的错误案例
单标志法:
如果现在没有轮到我用,我等
如果现在轮到我用
我用
下次给他用
评价:
这个算法的缺点其实比较明显的,如果下次他不用而我要用,那我就得一直等
更何况就算他用了也不一定考虑我用不用的问题,可能转手就把这个机会让给别人用了
极有可能会导致资源的浪费,甚至说长时间得不到使用导致的饥饿问题
违反了“空闲让进”,并且没有实现“让权等待”
其实核心就是,没有考虑到下次给他用的时候,他到底会不会用,以及会不会让给我用
双标志先检查法:
如果现在他想要用,那么给他用,我等
如果他现在不想用
那么我想用
我用
我用完了不想用了
评价:
这个算法同样存在漏洞
检查的时候他可能不想用,但是就在我设置想用的前那么几刻,他也想用了
而这时候我还没想用,他可能就会以为我不想用,于是我们两个一起想用,冲突了
简单来说就是两者检查均通过
违反了“忙则等待”,没有实现“让权等待”
核心是检查和设置中有一个间隔,这个间隔时间就会导致另一者的检查也通过
双标志后检查法:
我想用
如果他现在想用,那么给他用,我等
如果他现在不想用
我用 ...
OS-4
调度的基本内容:
因为内存空间是有限的,所以当用户提交多个作业时不能完全放在内存里面
必须通过一定的选择选中一些放到内存里面去执行,怎么选择就是调度需要完成的事
这个调度也被称为是作业调度,其发生频率相对于后面两者低很多
至于书上所说的:多道批处理系统大多配有作业调度,而别的通常不需要配置
目前还在困惑……..
补充,来源:
[https://zhuanlan.zhihu.com/p/436887051]
作业调度主要用于多道批处理系统,在分时和实时系统中不设置作业调度。因为分时系统为了做到及时响应,用户通过键盘输入的命令或数据等会被直接送入内存,因而无需配置作业调度机制,但是它也需要设置某种接纳控制措施来限制进入系统的用户数目。类似地,实时系统中也不需要作业调度,但是必须要有接纳控制措施。
又是一个历朝历代的考研人的博客:
[https://blog.csdn.net/qyb19970829/article/details/112441513]
低级调度就是一般所说的,根据优先级从进程里面选一个执行,后面会进一步细化的
讨论的主题也是这样一个方向
当内存不够的时候,中级调 ...
OS-3
进程的状态、转换、控制:
先引入一个原语概念,这个在书上是一小句话
进程控制用的程序是原语,运行在内核态上,通过关、开中断两条特权指令实现屏蔽中断
以此来实现“一气呵成”的运行状态
原语的执行是必须一次性完成的,否则就会导致较为严重的错误
且开、关中断也必须是特权指令,否则用户态可以调用那么随便用一下就可以把系统干崩
更多是为了安全性考虑
然后再来谈进程的控制、转换
这里把进程的控制一起拿过来讲,其实就是因为进程的控制和状态的转换一一对应
进程的控制需要实现的就是各状态之间的切换,书上还有更详细的介绍
此外说下,实际上统考那么多年,总体的题目也是围绕状态转变在出题的,要详细知道
对于各个状态之间的转变需要很熟悉,同时也要对引发转变的事件有一定的积累
书上对这一批的事件实际上描述的非常之多,在41、42、43页均分别有一定的篇章
所以,抓住重点看
先来说创建态:
这里就不再赘述书上已经有的东西了,稍微提几个复习要点
申请空白PCB失败以后并不是意味着这个进程就被删除、取消创建,而是陷入Unused状态
后续如果有机会依旧会调用fork函数重新实现创建进程
注,PCB是存在于内 ...
数据结构复习汇总
我个人是并不提倡将数据结构网页化记录笔记的,因为其更偏理科,要求计算掌握
因而个人在这里基本不会谈太多知识点相关的内容,更多是对方向的把握以及一些感悟
应该会摘取一些较好的他人博客内容,他人的相关思路,以配合复习
KMP:
王道该书其实给予了一个错误的导向,认为只需要会Next、Nextval求法就够了
实际上统考更会考KMP算法执行的过程,让你能够走一遍这个算法,而不是说求Next数组
所以一定要明确方向导向,Next数组/PM表/Nextval数组均只是辅助走流程的工具
一定要会主动执行一遍算法,清楚算法是怎么执行的,这就是统考的考察点
15年和19年的统考真题,课后综合题的第二题的第二小题都是需要重点研究的
最简单的自己检测方法,给定一个主串一个子串,去根据程序走一遍,把每一轮写下来即可
队列、栈的应用:
OS-2
第一章后面几节是纯概念类,以简单选择题为主,但不代表能轻松背得下来…
按照书上的顺序一个个介绍下去:
个人认为单纯说下总体的逻辑结构和大体上的考察方式,以此去做一个复习框架更好
书上写的虽然详细但总会觉得让人两眼一黑,有一个大体框架再说细节的补充吧
分层结构、模块化的两个结构特征以书上的为准,已经足够形象了,不必再多补充什么
关于优缺点的考察:
其实核心就是把握几个特性就行,清楚为什么有这个优点,为什么有这个缺点
但也没那么容易就能完全记住啊……
书上还有很多的进一步阐述,细节依旧还在书上
分层结构:
优点:
便于调试和验证可以采用书上的例子说明,这里不多说
易于扩充和维护、接口清晰固定,这句话稍微解释一下吧:
接口清晰固定是肯定的,因为一开始设计这一层的时候就会把这一批接口给设计好,不变
易于扩充、维护,想修改、替换一层的时候只需实现对上层的接口和下层接口的调用
只要对上层的接口依旧是实现的,不变的,那么你这一层怎么改都是不会有问题出现的
缺点:
仅可以调用相邻层,这个是特性决定的,上一层只能调用下一层相邻的,且是单向的
下一层是不能调用上面一层的接口的
效率低也是从这个特性理 ...
OS-1
操作系统个人初步感受下来就是需要例子来支撑,否则光看书确实会有些晦涩
后面尽可能多利用例子解释…
操作系统管理硬件、协调资源,不管理偏软的东西
学习提示:要重点关注和理解各类操作系统主要想解决的是什么问题,各自的优缺点
这里对书上的内容做一个概况、补充、类别归纳:
直接从这边说,概念定义而言,OS这门课更多注重于资源的管理
而对硬件机器的扩充、接口并不是这门课的核心,会有一定的涉及但不是核心
从一个例子里面就可以大致上理解操作系统的意义、功能,书上也有对其比较详细的定义
然后可以看到操作系统实际上和三层相互连接,用户层、应用程序层、裸机层
书上对其的介绍也是基于这个逻辑一步步展开的
至于其具体的交互案例、逻辑,个人认为书上和PPT讲解足够好,复习只需要看这些即可
书上的目标和功能这一块本身就是按这个逻辑展开的
操作系统管理的主要是计算机资源(硬件资源、广义上的资源
操作系统的特征:
第一个,并发性:
在这门课中的“同时”意味着并发,需要和并行区分
这里可以配合计组的内容复习,如单核处理器和多核处理器的概念
单核处理器实际上在同一时间只能处理一个线程
即使采用了多线程技术, ...
计组18
程序查询方式,如果想具体了解工作流程建议配合前面的P301,I/O接口的通用结构理解
书上的内容其实比较完善,这里是一些补充
程序查询实际上也可以分为两类,一类是独占式查询,一类是定时查询
相对而言定时查询拥有更好的效率,因为不至于一直在查查查,CPU也可以干别的事
这里的例题实际上说的就是定时查询而非独占式查询
只要满足每次数据寄存器满了以后的数据能够被定时带走,那么就没问题
如果满了,而且CPU干到极限了也带不走,那么就会产生数据丢失问题
独占式就没必要算什么占用时间了,就是百分百,我一直等你干完再去干别的活
程序中断方式基本概念:
这里其实主要是谈利用了程序中断这样一个特性完成主机与I/O设备的数据传送
简单来说,就是利用了CPU处理中断是单独跳出去处理,处理完了后又返回原程序
相对之前的程序查询明显有强大的效率提升
对于基本概念,建议看书,书上的内容总体非常详细
全中断工作流程及相应逻辑:
注:此处或许需要勘误,辩证读取
先对目前讨论的中断有个大致上的了解
对于异常的处理,实际上第五章有一定的讲解,但并不是计组这门课的内容
实际上是操作系统的内容 ...
计组17
对于数据总线的一点补充:
数据总线的位数不一定和机器字长或者存储字长相同
如果机器字长32位,数据总线16位,那么CPU取得一个处理数据就要传两次
如果存储字长32位,数据总线16位,那么CPU得到一个存储字就需要访问两次主存
其他情况也是相对应的,类似于指令长度只有存储字长一半
地址总线,当外部I/O设备采用和主存统一编址的时候,那么地址也要考虑到
类似于主存有30个单元,但外面还有3个,那么至少就需要六位地址位才行,六根地址线
控制总线,对于单根线而言,是单向的,但是对于总线而言那么就是双向的
因为既有CPU向外部发出信号的线,也有外部向CPU反馈的信号线
对双总线结构的一些补充:
存在的主存总线支持突发/猝发传送,即可以连续从主存中读取顺序数据而不必多次访存
很明显可以提高效率,减少访存次数
通道程序存放在主存中,需要调用的时候从主存中访问读取
PPT上还有对于四总线结构的介绍,后续有空的时候可以看,但不是重点,是补充
这里对周期进行一个补充,一般来说总线周期是数个时钟周期
但也可能会有相同或者说倒反天罡,一个时钟周期包含多个总线周期的存在
上面是 ...
计组16
补充:
硬件多线程都不是实际意义上的多线程,因为实际上处理的资源就那么一份
一相当于一个人干两个人的活,人就那么一个人,你只能尽可能压榨其最高效率
但多核那么就是真正意义上的多线程,人直接变成了两个人干活
SIMD就是一条指令同时处理了一堆一样的操作,例如全都加一
MIMD实际上可以视作是多个SIMD的组合…
多计算机系统就可以视作是分布式计算机,多处理器就是一个计算机有多个独立CPU
另外说下超线程单核处理器和多核处理器的区别
假如一个超线程单核处理器最多可以同时处理两个线程
一个处理器有两个核
那么对于一百万个线程,谁运行更快?
毫无疑问是双核的处理器,因为超线程实际上并非完全的同时处理
其同时处理线程的时候,大多数情况这两个线程是需要共同争夺相同的缓存等资源
而双核就不可能争夺资源,这资源量是双份的,而超线程实际上是单份资源
参考百度:
超线程和多核是两种提高CPU利用率的技术。多核处理器是指在单个芯片上包含任意多个CPU的处理器。超线程是指每个核心可以同时执行的线程数量,一个核心可以有两个或多个线程。超线程和多核的区别在于,超线程的逻辑处理器并没有独立的执行单元、整数 ...
计组15
异常和中断节:
总体建议以书本知识为主,知识面较详细且有条理,后续可以补上进一步的逻辑思路
没有太多的复习建议,多看几遍应该不会出问题
流水线的意义:
单周期指令执行的时候,每一个组件完成后就闲着等下一条指令,平均闲一个指令时间
会产生大量的浪费,流水线的目的就在于充分利用组件,尽可能减少组件的闲暇时间
而组件执行的时候中间是会有一个寄存延迟的,流水线设置所有延迟为其中最大的那个
因而在执行单指令的时候流水线的效率似乎还不如单周期
但一旦任务量扩大,那么流水线的效率就会明显体现,因为充分利用了各个组件
流水线指令集的特征建议看书,书上比较完整可靠
就设计原则而言,就是以最长的流水线周期计算,包括了延迟时间
例如寄存延迟20NS,流水线80NS,那么至少一个时钟周期就需要100NS设计
然后是关于一些流水线的计算问题:
首先计算N条指令的执行时间,其实就是(第一条指令执行时间+N-1)
当然这个可能会和之前的91页相关内容配合考察,还是要基于理解去思索的
吞吐率就是执行的指令数/执行的总时间
加速比就是流水线下执行的总时间/非流水线状态下执行的总时间(即顺序状态 ...