操作系统复习要点
linux怎么读文件内容这篇⽂章总结⼀下操作系统笔试和⾯试常考的⼀些问题,主要集中在进程和线程,以及线程的同步问题上。操作系统设计的核⼼就是进程和线程的管理。
零、序⾔
0.1 什么是操作系统?
1. ⽤户与计算机硬件之间的接⼝
2. 控制和管理计算机资源的软件
0.2 计算机由什么硬件组成?
1. CPU
2. 存储器
3. 输⼊/输出设备
4. 总线等
⼀、进程和线程
1.1 什么是进程?什么是线程?
注:
1. 资源是指处理器CPU时间、存储器、⽂件、IO设备这四个
2. 单进程,单线程:MS_DOS, 多进程,单线程:Unix, 单进程,多线程:JVM,多进程,多线程:Linux, Windows,Android,IOS.
1.2 进程和线程的区别?相⽐进程,线程有哪些好处?
1. ⼀个进程可以有多个线程,多个线程可以并发,可以共享进程数据,拥有⾃⼰独⽴的栈空间和执⾏序列。
2. 进程与线程是不同的系统资源管理⽅式。进程拥有独⽴的地址空间,⽽线程没有。⼀个进程崩溃后,在保护模式下,不会对其他进程
造成影响;⽽线程只是进程的⼀个执⾏路径,没有⾃⼰独⽴的地址空间,⼀旦⼀个线程崩溃,整个进程就会崩溃。所以,多进程的程序⽐多线程程序更加健壮。
3. 线程不占⽤系统资源,调度线程⽐调度进程开销更⼩,在线程间切换⽐在进程间切换效率⾼。
4. 对于⼀些要求同时进⾏⽽⼜共享某些变量的并发操作来说,只能⽤多线程,不能⽤多进程。
使⽤线程有哪些好处?
1. 创建线程⽐创建进程需要的时间更少
2. 终⽌线程⽐终⽌进程时间更少
3. 切换线程⽐切换进程更快
4. 线程间通信⽆需调⽤内核即可实现。同⼀进程的线程共享进程的数据。
1.3 进程间通信的⽅式有哪些?
Windows 和 Linux操作系统有不同的进程间通信⽅式
windows和linux共有的进程间通信⽅式:
1. 消息(linux中叫做信号)
2. 共享内存
3. 邮槽
4. 管道
5. socket
1.4 线程同步⽅式有哪些?进程同步的⽅式有哪些?
问:什么是线程同步?
答:线程同步是指多线程通过特定的⽅式(如互斥量)来控制线程之间的执⾏顺序(同步),也可以说是在线程之间通过同步建⽴起执⾏顺序的关系,如果没有同步那线程之间是各⾃运⾏各⾃的。
问:线程同步⽅式有哪些?
答:
1. 互斥(信号)量,每个时刻只有⼀个线程可以访问公共资源。只有拥有互斥对象的线程才能访问公共资源,互斥对象只有⼀个,⼀个时刻
只能有⼀个线程持有,所以保证了公共资源不会被多个线程同时访问。
2. 信号量,允许多个线程同时访问公共资源。当时控制了访问资源的线程的最⼤个数。
3. 事件 in windows(条件变量 in linux)。通过通知的⽅式保持多线程的同步,还可以⽅便的实现多线程优先级的⽐较
4. 临界区。任意时刻只能有⼀个线程进⼊临界区,访问临界资源。
问:进程同步的⽅式有哪些?
答:
1. 原⼦操作
2. 信号量
3. 管程
4. 会合
5. 分布式系统
1.5 临界区?
问:什么是临界区?
答:每个进程(线程)中,访问临界资源(不可共享的资源)的那段代码称为临界区。每次只允许⼀个进程(线程)进⼊临界区,进⼊后不
允许其他进程(线程)进⼊。
问:如何解决临界区冲突?
答:
1. ⼀次只允许⼀个进程(线程)进⼊临界区,如果有⼀个进程(线程)已经进⼊了⾃⼰的临界区,其他试图进⼊临界区的进程(线程)
必须等待
2. 进⼊临界区的进程(线程)要在有限的时间内退出临界区,以便于其他进程(线程)进⼊⾃⼰的临界区
3. 如果进程(线程)⽆法进⼊⾃⼰的临界区,则应该让出CPU等资源,避免进程(线程)出现“忙等”现象。
问:实现临界区的⽅法有哪些?
答:
1. 软件实现
2. 中断屏蔽(关中断,开中断)
3. 硬件指令⽅法
1.6 进程有⼏种状态?状态之间的转换是怎么样的?
就绪。进程已经获得了除CPU以外的所有所需资源,等待分配CPU资源
运⾏。已获得了CPU资源,进⾏运⾏。处于运⾏态的进程数<=CPU核⼼数
阻塞。进程等待某些条件,在条件满⾜前⽆法执⾏
1.7 进程创建的过程?
1. 给新进程分配⼀个唯⼀的标识符
2. 给进程分配内存空间
3. 初始化进程控制块PCB
4. 将PCB放⼊就绪队列中,等待分配CPU资源
1.8 什么是进程控制块PCB?PCB保存了哪些信息?
1. 是进程存在的唯⼀标识
2. 创建⼀个进程就会创建⼀个PCB,当进程撤销时,系统回收它的PCB
3. 系统对进程的控制根据PCB进⾏,对进程的管理通过管理PCB实现
4. 能实现间断性的运⾏⽅式
5. 提供进程间通信管理所需的资源
6. 提供进程调度所需的信息
PCB中保存了
1. 进程的标识信息
2. 进程的状态信息(就绪、运⾏、阻塞)
3. 进程的控制信息
1.9 进程和程序的区别?
1. 程序是计算机指令的集合,以⽂件的形式存放在磁盘上,是静态的⽂本。不使⽤系统资源,不能申请资源,不能被调度,不能作为运
⾏的单位。
2. 进程是程序的运⾏实体,包含了程序段、数据段、PCB,是程序在其地址空间中的执⾏活动,是系统分配资源的基本单位。使⽤系统
资源,可以运⾏。
1.10 进程(线程)调度的⼏种算法?
1. 时间⽚轮转调度算法(RR):给每个进程固定的执⾏时间,根据进程到达的先后顺序让进程在单位时间⽚内执⾏,执⾏完成后便调度
下⼀个进程执⾏,时间⽚轮转调度不考虑进程等待时间和执⾏时间,属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下⽂切换较费时。适⽤于分时系统。
2. 先来先服务调度算法(FCFS):根据进程到达的先后顺序执⾏进程,不考虑等待时间和执⾏时间,会产⽣饥饿现象。属于⾮抢占式调
度,优点是公平,实现简单;缺点是不利于短作业。
3. 优先级调度算法(HPF):在进程等待队列中选择优先级最⾼的来执⾏。
4. 多级反馈队列调度算法:将时间⽚轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按
时间⽚轮转。优点是兼顾长短作业,有较好的响应时间,可⾏性强,适⽤于各种作业环境。
5. ⾼响应⽐优先调度算法:根据“响应⽐=(进程执⾏时间+进程等待时间)/ 进程执⾏时间”这个公式得到的响应⽐来进⾏调度。⾼响
应⽐优先算法在等待时间相同的情况下,作业执⾏的时间越短,响应⽐越⾼,满⾜段任务优先,同时响应⽐会随着等待时间增加⽽变⼤,优先级会提⾼,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应⽐开销⼤,适⽤于批处理系统。
1.11 缓冲区溢出?
问:什么是缓冲区溢出?
答:当前计算机向缓冲区填充数据时,超出了缓冲区⾃⾝的容量,溢出的数据覆盖在合法的数据上。
问:缓冲区溢出的危害?
答:
1. 程序崩溃,导致拒绝服务
2. 跳转并执⾏⼀段恶意代码
问:缓冲区溢出的原因是什么?
答:程序没有在填充前检查⽤户的输⼊长度。
1.12 进程调度和线程调度的关系?
1. 进程和线程都有三种状态(就绪、运⾏、阻塞)
2. 如果⼀个线程进⾏了系统调⽤,则整个进程阻塞(系统调⽤会使进程阻塞,⽽线程还是处于运⾏态,不会阻塞),控制权从程序转移
⾛,但在线程⾓度看,此线程还在运⾏态。⽽进程已经到了阻塞态。
3. 当线程A等待线程B的某些事件时,A被阻塞,控制权从A移到B。
1.13 线程实现的两种⽅式?各有什么优缺点?
1. ⽤户级线程(Linux)
2. 内核级线程(Windows)
1.14 死锁?
问:什么是死锁?
答:在两个以上的并发进程中,如果每个进程都持有某种资源⽽⼜等待其他进程释放他们持有的资源,在未改变这种状态前,谁都⽆法推进,则发⽣了死锁。所有进程⽆限期等待,且循环等待,都处于阻塞态。
问:死锁产⽣的四个必要条件?
1. 互斥。⼀个资源⼀次只能被⼀个进程占有
2. 请求与保持。⼀个进程因为请求资源⽽阻塞时,不释放⾃⼰持有的资源
3. ⾮剥夺。⽆法在进程结束前剥夺它对资源的所有权
4. 循环等待。若⼲进程收尾相接形成环形等待关系
问:死锁处理的策略?
答:
1. 预防死锁。破坏后三个条件中的⼀个即可(互斥是⾮共享设备的特性,⽆法更改):
1. 破坏请求与保持条件。规定⼀个进程开始前,必须申请所有需要的资源。
2. 破坏⾮剥夺条件。当⽆法得到需要的资源时,释放⾃⼰持有的资源,等需要时再重新申请。
3. 破坏循环等待条件。将所有资源按类型线性排队,并赋予不同的编号,所有进程请求资源时,必须按照资源递增顺序,以防出现
环路。如果⼀个进程已经分配到了R资源,那么它再申请时,只能申请排在R后⾯的资源,⽽不能申请前⾯的资源。
2. 死锁避免。避免死锁并不是事先采取某种限制措施破坏死锁的必要条件,⽽是再资源动态分配过程中,防⽌系统进⼊不安全状态,以
避免发⽣死锁:
1. 银⾏家算法
2. 系统安全状态
3. 安全性算法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论