操作系统学习总结及考试
本人JILIN UNIVERSITY,软件工程专业16级,学校开设了操作系统这门课程,包括上课15周和上机4周,上机课非常水,暂且不提。
以下将从学习内容、考试相关和上机三个方面总结这门课程。
一、
学习内容
1.
前言:
所用书籍:《现代操作系统》,英文第三版,这本书有中文翻译版,网上两本书的PDF都有,如果有专门看PDF的电子设备(笔记本体验非常差,kindle一般般,手机也不是很好),那么可以不买书,因为书上是非常详细的举例子和找原因,而上课不可能这样,很多例子对考试没有帮助,这两本书非常重,建议买一本中文即可(上课老师英文PPT,中文授课),买中文主要是为了写考试的名词解释,我只有一本英文,也觉得可以,因为这本书所有关于名词概念的地方是很不清楚的,它更倾向于向你介绍原理和引入概念,而非概念本身。这将在我下面的学习内容中有所体现。
这本书如果考前一个一个字地看,非常费时间,如果想看原因、分析、例子,建议平时看,考试真的不会考这么细,我们学习的只是整本书的一点点,我个人认为这本书比较枯燥,这本书有意思的地方在后面,就是关于OS的设计方面,有很多定律,事件,各种奇葩的、好玩的例子(比如程序员写个程序,每天让它运行检查发工资名单上有没有它,没有就让系统不能正常打开,或者必须有程序员的口令才能打开),在讲解其设计原则上提到的,这部分挺有趣,但是毋庸置疑,是最难的,也是考试不考的。
另外,感觉这个难是正常的,不是这个算法、概念有多难,而是你只能做到理解算法、概念和一些过程,这些操作系统中概念的由来和书上不断的举例子,表示每个方法的不好之处,还有可能遇到的种种问题,这才是真正难的地方,考试和上课讲的内容不难,但是你很难到达一个设计的层面(本身也很少有人这么做),有太多我们不知道的东西了。
2.
第一章:学习操作系统的基本概念,以及它是如何对计算机的各个部分进行管理的。
计算机的基本构成如下:
硬件:冯诺依曼模型:运算器+控制器+存储器+输入输出
其中,运算器和控制器统一构成CPU,输入输出设备也称为外围设备;
软件:应用软件(我们平时使用的软件)
系统软件:即操作系统OS,是最基本的软件,其他应用软件均在其管理下;
总的来说,操作系统就是资源的管理者,他不仅要管理CPU、内存、I/O设备等硬件资源,也要管理一些软件资源。(考试会出OS的概念)
那么学习的过程也非常清楚,就是操作系统如何对资源进行管理的,我们学习的包含以下章节:①进程与线程(如何分配CPU资源?)
②内存管理(如何管理内存资源?怎么分?不够怎么办?)
③死锁(CPU的一种状态,无法自己打破,必须让OS处理)
④文件系统(如何管理文件?)
⑤I/O管理(I/O设备怎么管理)
从上面的五点可以看出,本质上我们依次学习了OS对于各个硬件资源的管理,在课程里,这五点好像是彼此无关的,但是OS时刻都在管理包括这五方面的各个方面,相比计算机学院,我们学习的理论部分较少,事实上是多为相关的原理。
对于第一章,主要就是上面内容的简介,重要的知识点:
①
OS的定义、作用(作为Extended Machine and Resource Manager)
②上面五点简单了解
③System Call、File系统等概念(考试会考概念,平时理解即可)
④历史:批处理系统、分时系统、实时系统、多道程序设计,(此部分就是纯理论,平时了解,我们考试说了不考,结果还是考了==,老师非常喜欢出批处理系统相关的选择题)
3.
第二章:进程与线程(非详细笔记,只是标注重点和难点)
知识点:①进程:进程概念 PCB
进程状态
进程被创建的事件
进程结束的事件
进程执行过程中产生中断,如何处理中断?
进程状态相互转换(这部分非常重要,其实之前的都是概念,这个才是真正进程怎么被OS管理的部分),
上面的这些没有任何折扣可打,不仅考试会考,而且是最基本的知识,这些不会就emmm
②线程:
线程引入的原因(书上很长,好像分3-4点,平时理解,考试可能考简答)
线程概念(书上概念模糊,我认为维基百科的概念比较好,会在“二、考试相关“中给出
Thread 管理的三种方法(用户管理/系统管理/二者混合);
(POP-UP Thread 了解)
③※条件竞争(Race Condition)概念
④※临界区互斥访问的四点要求+※临界区概念
⑤※如何实现排他性对临界区互斥访问?
关中断:缺点?
锁变量(Lock Variables):问题?
严格交替:如何实现?问题?
Peterson’s solution:如何实现?问题?
TSL/XSHG指令:如何实现?问题?
引入“原语”,sleep/wakeup了解;
※信号量:概念?如何使用它解决生产者消费者问题?
※管程:概念?wait/signal含义?怎么用它解决生产者消费者问题?
消息传递:了解
⑥屏障(了解)
⑦进程调度:
什么时候调度?四点(考试考,平时知道)
调度原则:了解
调度方法:批处理系统、分时系统、实时系统有各自不同的方法,实时系统中基本就一个公式(一个实时系统所能接受的实时事件需满足),了解;
分时系统中的调度算法理解即可,考试基本不考,很难考题;
批处理的注意先来先服务、最短时间先执行、最短剩余时间先执行;区分后两个,我考试写错了ww,这三个考试都有可能考,是简单的应用题,容易抓分。
⑧IPC问题
哲学家就餐问题(理解,考试不会出这道题,但是思想一定要理解,因为大题出信号量时,这个思想非常普遍)
※读写者问题(读优先、写优先、无优先次序),考试有过原题好像,并且这个思想挺重要的。
第三章 内存管理
①存储器体系结构(计算机组成原理的知识,了解,基本不会考)
②※重定位Relocation:概念,动态/静态,是内存管理的核心
※③存储保护(protection):概念,怎么实现(两钟)(虽然看起来简单,但是非常重要和必要)
④单一连续存储:了解即可,了解
用户空间足够,但不连续怎么办?
用户空间不够怎么办?
程序在运行中,预留空间(room for growth,存放数据)不够,怎么办?
了解上述答案,其中包含内存紧缩、交换技术等概念
⑤记录空闲内存块的两种方法?位图+链表
⑥※分配内存算法:First Fit\Next Fit \Best Fit\Worse Fit\Quick Fit;
考试考简答;
⑦※虚拟内存技术:概念(考试考)
⑧※页式管理重定位过程:理解了非常简单,考试基本不会直接考,但是解题的过程中要用。
⑨※页表结构(主要标志位含义):不直接考,但是算法里会用到
⑩※地址映射过程(如何将(页号p,页内偏移量d)转化为(页架号f,偏移量d):重点在于理解思想,考试不直接考,嵌入考题中。
⑾多级页表(了解)、Hash Table了解
{十二}、页面置换算法:理解,考试会考
{十三}负载控制、局部分配、全局分配、页的大小讨论、共享页、共享库、cleaning;理解即可,基本不考;
{十四}缺页中断处理过程:我们考试考了,明明说不考的;
{十五}内存系统组成:了解
{十六}段式存储、段页式存储管理:知道就行,可能出概念
4.
第六章:死锁(我简写了,基本全是重点,但是真的很简单)
①
※基本概念:考试会考,理解也很重要;
②
※死锁的四个必要条件:非常重要,可能出简答
③
※处理死锁:4点,考试可能简答,本章的内容基本就是围绕这四点
④
※死锁检测:何时?两种检测(一种资源只有一个:建模有向图再找环、一种资源有多个找安全序列)
⑤
※死锁恢复:对应处理死锁中一点
⑥
死锁避免:银行家算法,本质上和安全序列是一样的
⑦
其他(我们考试没有下面范围):死锁避免(破坏四个条件)
死锁其他原因(了解)
饥饿(了解)
5.
第4章:文件管理(这章不难,老师是按计算机学院的教材讲的,所有有很多部分不考,而且这部分不是我们原来老师讲的,老师出差,换了个老师,再加上我有事缺席了一次,虽然事后补回了笔记,但是这部分整体还是有点乱,当然从复习的角度,其实很简单,所以这部分按自己理解标注内容,过于简单的不标注
①
文件存取方式:(两种)顺序+随机
②
文件目录、目录项、文件控制块、目录文件的概念(考试会考)
③
单级目录与层次目录
④
绝对路径与相对路径(了解)
⑤
文件查找算法:顺序查找、散列查找、对分查找;改进
⑥
目录查询技术(单级目录下)过程:根据文件名在目录文件中顺序查找目录项;从目录项中找到文件号;从文件号找到i_Node,通过i_Node找到磁盘块,读入磁盘块,若是目录文件,则根据下一级目录查找。
⑦
UNIX文件卷组织形式:了解,计算机学院的不考应该;
⑧
UNIX中link\unlink的操作(了解)
⑨
实现文件存储的四种方式:简答:连续存储、链接存储、i节点(I_Node)、在内存中用表的链接存储(文件分配表,-1表示结尾)
⑩
目录文件实现(了解)
⑪
文件共享(了解)
⑫
日志文件系统(了解)
⑬
磁盘空闲块管理:成组链接、申请空闲块操作、释放空闲块操作,考试不一定考,但是挺有意思的;
⑭
记录空闲块、文件系统备份、文件系统一致性、文件系统性能改进;了解
6.
第5章:I/O管理(同样非常快的一章,考试东西很少,大部分概念)
①
访问I/O设备过程:了解
②
访问I/O设备方式:查询+内存映像
③
※精确中断和不精确中断概念
④
※I/O实现方式(书上3种)程序控制+终端+DMA,重点是DMA;
另外,有一种“通道技术”,在计算机组成原理中讲过,去看看这个,我考试没看,结果考了,我去==,只能说书有点老了,老师也没讲,记得看
⑤
I/O软件层次、中断过程、设备无关软件了解即可;
⑥
Device Driver\Device Independence概念,总考
⑦
Buffering概念(设备无关软件那里的),总考;
⑧
磁盘划分及后面时钟等都了解,后面的重点是电梯算法、SSF算法(必考),RAID和Stable Storage的概念,以前总考;
二、
考试相关
考卷中文答题,共五道大题,150分钟,满分100分;
第一大题:名词解释10个,每个2分;
第二大题:选择10个,每个1分;
第三大题:简答题5个,每个4分;
第四大题:计算4个,每个6分;
第五大题:应用题1-2个(一道题就是两个问,其实是一样的),共26分;
第一大题:名词解释有范围,再加上以前的卷子的名词解释大致有20+个,听说之前有学生也给了范围但一个没考,但我这里是全在老师给的范围+自己在卷子上找的范围的;
第二大题:没有规律,我这次感觉要错5个吧w=w,老师明明说不考OS历史,结果出了2-3个批处理系统的特点什么的,以前的卷子也有批处理系统的选择题,结论:老师就喜欢这个,一定要看这个,老师范围没有这个忽略,是老师先不按范围出的
第三大题:没有规律,可自己总结,同样超范围了,MD很多没看却考了;主要是有一个“通道和DMA的区别”,老师你想一想你讲通道了吗?我笔记上没有,书上也没有,MD我虽然知道这个玩意,在网上看到了都跳过了=W=;
第四大题:反正这两年题型相同,就是一个作业调度(给你多个进程到达时间和需要CPU的时间,按照不同算法,比如先来先服务、最短作业优先、最短剩余时间优先,来计算不同进程的开始时间、完成时间、周转时间=完成时间-到达时间);
第二个是银行家算法判断是否存在安全队列;
第三个是根据不同的页面置换算法计算缺页率、淘汰次数、淘汰页号,中间涉及页式存储管理的地址重定位;
第四个是考电梯算法和SSF算法对应的调度序列,计算经过的磁道个数;
总之,应用题非常简单,比背东西什么的简单很多,都是套路题,算法也不难;
第五答题:就是一种题型,用信号量、管程monitor解决同步问题,搞明白就不难,搞不明白难哭,建议多看和理解生产者消费者问题、哲学家就餐问题、读写者问题,还有历年计算机、软件的卷子上的这类问题(计算机学院能找到的卷子远多于软件,他们更看重理念,选择非常多,大题计算也复杂,只看这类问题即可),这上面的一些问题主要包括:两个生产者一个消费者问题(一个生产盒子、一个生产盒盖、一个组装),过桥问题、游客游园问题、工作线程和请求调度进程问题等,我会专门写一篇分析上述问题,把这个东西弄懂了。
其实知道信号量怎么写,管程的自然就出来了。
三、
上机
大概和平时成绩一起,占总课程的30分,但是上机课很水,因为老师把代码都给了,实验报告的每个部分基本老师的PPT里都有,虽然老师的每份代码都有错误,改完了截个图,复制下老师的PPT,这门课也就结了。为啥这门课这么水?首先,这个课用的是LINUX系统,写代码不可避免的涉及其中的系统调用和系统的一些变量,上课不可能讲这么细的东西;
其次,上机课的老师们也不会对这个PPT进行讲解,就是自己看,然后把老师的代码改一改运行一遍,你很难理解;然后,这个上机占4周,基本在结课的前1-2周开始上,中间就是考试周,你不可能有时间天天琢磨这个不复习吧?我们就是最后一周教的报告,第二天就考试了,时间上也比较紧。