操作系统(Operating System)知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HHH_LLL/article/details/90029455

操作系统的5大主要功能:

主要功能
1 处理器管理功能
2 存储管理功能
3 设备管理功能
4 文件管理功能
5 联网与通信管理功能

操作系统的3大主要特性:

特性
并发性

指两个或两个以上的活动或事件在同一时间间隔内发生

(操作系统是一个并发系统,有多道程序同时运行,这些程序称为并发程序,这样的系统就是并发系统)

共享性

指计算机系统中的资源可以被多个并发执行的程序共同使用,而不是被某个程序独占

异步性

在多道程序环境中允许多个程序并发执行,并发活动会导致随机事件的发生,由于资源有限而程序众多,每个程序的执行并非连贯的,而是“走走停停”

多道程序设计:

多道程序设计:是指允许多个作业(程序)同时进入计算机系统的内存并启动交替计算的方法。也就是说,内存中多个相互独立的程序均处于开始和结束之间。从宏观上看是并行的,多道程序都处于运行过程中,但尚未运行结束;从微观上看是串行的,各道程序轮流占用CPU交替地执行。引入多道程序设计技术可以提高CPU的利用率,充分发挥计算机硬部件的并行性


中断(interrupt):

中断的概念:指在程序执行过程中遇到急需处理的事件时,暂时中止现行程序在CPU上的运行,转而执行相应的事件处理程序,待处理完成后再返回断点或调度其他程序执行的过程。
引入中断机制,操作系统在让应用程序放弃控制权或从应用程序获得控制权时将具有更大的灵活性。


进程与线程:

进程:CPU资源分配的基本单位,由一个或多个线程组成。
线程:是进程的执行流,是CPU调度和分派的基本单位。同个进程之中的多个线程之间共享该进程的资源的。

进程的三态模型:

  • 运行态(running):进程占有处理器正在运行的状态
  • 就绪态(ready):进程具备运行条件,等待系统分配处理器以便运行的状态
  • 等待态(wait):又称阻塞态(blocked)或睡眠态(sleep),指进程不具备运行条件,正在等待某个事件完成的状态

三态模型


调度算法:

这里介绍各种调度算法的概念,个别算法会举些例子。

1.先来先服务算法(FCFS): 按照作业进入系统后备作业队列的先后次序来挑选任务,先进入系统的作业将优先被挑选进入内存,创建用户进程,分配所需资源,然后移入就绪队列。FCFS是一种非剥夺式调度算法,易于实现,但效率不高。
2.最短作业优先算法(SJF):按照作业进入系统所需要的CPU运行时间的长短为标准,总是选取预计计算时间最短的作业投入运行。SJF是一种非剥夺式调度算法,能克服FCFS算法偏爱长作业的缺点,易于实现,但执行效率不高,并且可能导致饥饿现象。(如果一直有时间较短的任务请求,那么时间较长的任务永远没有机会运行)
3.最短剩余时间优先算法(SRTF):假设当前某进程/线程正在运行,如果有新进程/线程移入就绪队列,若它所需要的CPU运行时间比当前运行进程/线程所需要的剩余CPU时间还短,剥夺式SRTF强行剥夺当前执行者的控制权,调度新进程/线程执行。
4.最高响应比优先算法(HRRF):介于FCFS与SJF之间的一种折中的非剥夺式算法,既考虑作业等待时间,又考虑作业处理时间,这样既照顾短作业又不会使长作业的等待时间过长,有效地改善调度性能。

响应比 = 作业周转时间 / 作业处理时间
            =(作业等待时间 + 作业处理时间)/ 作业处理时间
            = 1 + 作业等待时间 / 作业处理时间

5.优先级调度算法:根据确定的优先级来选取进程/线程,总是选择就绪队列中优先级最高者投入运行。
6.轮转调度算法(RR):也称时间片调度算法,具体做法是:调度程序每次把CPU分配给就绪队列首进程/线程使用规定的时间间隔,称为时间片,通常为10ms ~ 200ms,就绪队列中的每个进程/线程轮流地运行一个时间片,当时间片耗尽时就强迫当前运行进程/线程让出处理器,转而排列到就绪队列尾部,等候下一轮调度。RR是一种剥夺式调度,系统耗费在进程/线程切换上的开销比较大,这个开销与时间片大小有关。
7.多级反馈队列调度算法(MLFQ):又称反馈循环队列,其主要思想是:由系统建立多个就绪队列,每个队列对应于一个优先级,第一个队列的优先级最高,第二个队列的优先级次之,其后队列的优先级逐个降低。较高优先级队列的进程/线程分配给较短时间片,较低优先级队列的进程/线程分配给较长时间片,最后一个队列进程/线程按FCFS算法进行调度。处理器调度每次先从第一个队列中选取执行者,同一队列中的进程/线程按FCFS原则排队,只有在未选到时才从较低一级的就绪列中选取,仅当前面所有队列为空时才会运行最后一个就绪列中的进程/线程。

死锁与饥饿:

死锁(deadlock):如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面。
饥饿(starvation):一个可运行进程由于其他进程总是优先于它,而被调度程序无限期地拖延而不能被执行。


猜你喜欢

转载自blog.csdn.net/HHH_LLL/article/details/90029455