12个操作系统知识点

本文详细介绍了操作系统的12个关键知识点,包括并发、共享、虚拟、异步等基本特征,深入探讨了进程与线程的区别、状态、同步与通信方式,以及页面置换算法和内存管理。此外,还涵盖了死锁原因、处理方法,以及虚拟内存的作用。
摘要由CSDN通过智能技术生成

12个操作系统知识点

问题一、操作系统的基本特征

1、并发

并发指一段时间内能同时运行多个程序,并行指同一时刻能运行多个指令。操作系统通过引入进程和线程,使得程序能够并发运行。

2、共享

共享是指系统中的资源可以被多个并发进程共同使用。它主要有两种共享方式:互斥共享和同时共享。多个应用并发执行的时候,宏观上要体现出它们在同时访问资源的情况,而微观上要实现它们的互斥访问。比如说我们说到的内存。

3、虚拟

虚拟技术把一个物理实体转换为多个逻辑实体。利用多道程序设计技术(程序的交替运行),让每个用户都觉得有一个计算机专门为他服务。主要有两种虚拟技术:时间复用技术和空间复用技术。

时间复用技术是指多个进程能在同一个处理器上并发执行,让每个进程轮流占用处理器,每次只执行一小个时间片并快速切换。

空间复用技术值将物理内存抽象为地址空间,每个进程都有各自的地址空间。当需要一个地址空间时,如果没有那就执行页面置换算法。

4、异步

异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。但只要运行的环境相同,OS需要保证程序运行的结果也要相同。

问题二、进程与线程的本质区别、以及各自的使用场景(重要)

1、进程

进程是资源分配的基本单位。就好比是手机上的一个个应用程序。

2、线程

线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。

3、进程和线程的理解

QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。

4、进程和线程的区别

(1)资源分配

进程是资源分配的基本单位,但是线程不拥有资源,多个线程可以共享进程资源。

(2)资源调度

在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。就好比是打开了QQ,又打开了浏览器。

(3)系统开销

线程不占用系统资源,比进程开销更小效率更高。这是因为创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,切换进程时候,还要保存CPU状态。

(4)对于一些要求同时进行而又共享某些变量的并发操作来说,只能用多线程,不能用多进程。

问题三:进程的几种状态

进程主要是三种状态。

(1)就绪。进程已经获得了除CPU以外的所有所需资源,等待分配CPU资源

(2)运行。已获得了CPU资源,进行运行。处于运行态的进程数<=CPU核心数

(3)阻塞。进程等待某些条件,在条件满足前无法执行

图片

在这里我们最主要的是状态之间的切换,比如说阻塞状态是不能到运行状态的。

问题四:常见的进程同步方式和线程同步方式

1、进程同步的方式

(1)为什么要进程同步

多进程虽然提高了系统资源利用率和吞吐量,但是由于进程的异步性可能造成系统的混乱。进程同步的任务就是对多个相关进程在执行顺序上进行协调,使并发执行的多个进程之间可以有效的共享资源和相互合作,保证程序执行的可再现性。

(2)同步机制需要遵循的原则:

  1. 空闲让进:当没有进程处于临界区的时候,应该许可其他进程进入临界区的申请
  2. 忙则等待:当前如果有进程处于临界区,如果有其他进程申请进入,则必须等待,保证对临界区的互斥访问
  3. 有限等待:对要求访问临界资源的进程,应保证进程能在有限时间进入临界区,以免陷入“饥饿”状态。
  4. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等

(3)进程同步的方式:原子操作、信号量、管道。

2、线程同步方式

(1)互斥(信号)量,每个时刻只有一个线程可以访问公共资源。只有拥有互斥对象的线程才能访问公共资源,互斥对象只有一个,一个时刻只能有一个线程持有,所以保证了公共资源不会被多个线程同时访问。

(2)信号量,允许多个线程同时访问公共资源。但是控制了访问资源的线程的最大个数。

(3)事件 in windows(条件变量 in linux)。通过通知的方式保持多线程的同步,还可以方便的实现多线程优先级的比较

(4)临界区。任意时刻只能有一个线程进入临界区,访问临界资源。

问题五、进程间的通信方式

windows和linux是不一样的。

图片

问题六、进程任务调度算法的特点以及使用场景

(1)时间片轮转调度算法(RR):给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。适用于分时系统。

(2)先来先服务调度算法(FCFS):根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短作业。

(3)优先级调度算法(HPF):在进程等待队列中选择优先级最高的来执行。

(4)多级反馈队列调度算法:将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。

(5)高响应比优先调度算法:根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。

问题七、死锁的原因、必要条件、死锁处理、手写死锁代码、java是如何解决死锁的

1、死锁的原因

在两个以上的并发进程中,如果每个进程都持有某种资源而又等待其他进程释放他们持有的资源,在未改变这种状态前,谁都无法推进,则发生了死锁。就好比是对方相互拿着自己需要的资源,都不释放自己的。

2、产生死锁的四个必要条件

(1)互斥。一个资源一次只能被一个进程占有

(2)请求与保持。一个进程因为请求资源而阻塞时,不释放自己持有的资源

(3)非剥夺。无法在进程结束前剥夺它对资源的所有权

(4)循环等待。若干进程收尾相接形成环形等待关系

3、死锁处理

(1)预防死锁。破坏后三个条件中的一个即可(互斥是非共享设备的特性,无法更改):

(2)死锁避免。避免死锁并不是事先采取某种限制措施破坏死锁的必要条件,而是再资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁,比如银行家算法、系统安全状态、安全性算法。

(3)死锁的检测与解除:资源分配图死锁定理死锁解除。

4、死锁代码

(1)使用信号量实现生产者-消费者

为了同步生产者和消费者的行为,需要记录缓冲区中物品的数量。数量可以使用信号量来进行统计,这里需要使用两个信号量:empty 记录空缓冲区的数量,full 记录满缓冲区的数量。其中,empty 信号量是在生产者进程中使用,当 empty 不为 0 时,生产者才可以放入物品;full 信号量是在消费者进程中使用,当 full 信号量不为 0 时,消费者才可以取走物品。

#define N 100
typedef int semaphore;
semaphore mutex = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值