目录
进程优先级
1️⃣ 进程优先级
1.什么是进程优先级?
2.进程优先级的类型
3.进程优先级的作用
4.进程优先级的实现
5.进程优先级的重要性
6.查看系统进程
7.修改进程优先级
top命令进行修改
renice命令
8.优先级调度原理编辑
进程切换
进程优先级
1️⃣ 进程优先级
1.什么是进程优先级?
在操作系统中,进程优先级(Process Priority)是指操作系统对进程进行调度时所赋予的优先级值,用于决定进程何时获得处理器时间。进程优先级是一种实现多任务操作系统中任务调度的重要机制,它允许操作系统根据进程的重要性和紧迫性来分配处理器资源。
2.进程优先级的类型
进程优先级可以是静态的,也可以是动态的。静态优先级通常在进程创建时由用户或操作系统管理员设定,并且不会改变。动态优先级则可以根据进程的行为或系统状态自动调整。
◉ 静态优先级:在进程创建时由用户或操作系统管理员设置,通常使用整数值表示,数值越低表示优先级越高。
◉ 动态优先级:根据进程的运行情况自动调整,例如,一个进程如果长时间等待I/O操作,它的优先级可能会降低
3.进程优先级的作用
◉ 优先级调度:操作系统使用进程优先级来决定哪个进程应该首先获得处理器时间。
◉ 响应性和效率:通过调整优先级,操作系统可以确保关键任务(如图形用户界面响应、实时系统任务等)能够得到足够的处理器时间。
◉ 资源分配:优先级可以帮助操作系统决定如何分配系统资源,如内存、CPU时间等。
4.进程优先级的实现
进程优先级通常通过操作系统的调度器来实现,调度器会根据进程的优先级和其他因素(如进程状态、时间片等)来决定进程的执行顺序。
5.进程优先级的重要性
进程优先级是操作系统多任务管理的关键部分,它允许系统根据不同任务的需求和紧迫性来优化资源分配,从而提高系统的整体性能和响应性。通过合理设置和调整进程优先级,操作系统可以确保系统中的关键任务得到优先处理,同时保持系统的稳定性和效率。
6.查看系统进程
在Linux或Unix系统中,可以使用ps -l
命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。PRI代表进程的优先级,NI代表进程的nice值。PRI值越小,进程的优先级越高。
7.修改进程优先级
修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,数值越小,优先级越高。可以使用nice
和renice
命令或通过top
命令进行修改。
top命令进行修改
renice命令
renice命令使用格式为:renice [nice值] -p [进程pid]
8.优先级调度原理
双140轮转队列
进程切换
进程切换(Process Switching),也称为上下文切换(Context Switching),是操作系统中的一个基本机制,它允许在单个处理器上快速高效地运行多个进程。进程切换是指操作系统保存当前运行进程的状态(上下文),并恢复另一个进程的状态以使其能够继续执行的过程。
进程切换的过程
◉ 保存当前进程的上下文:这包括将当前进程的寄存器值(如程序计数器、栈指针、通用寄存器等)保存到它的进程控制块(PCB)中。
◉ 选择另一个进程:操作系统调度器根据某种策略(如轮转调度、优先级调度等)选择下一个要执行的进程。
◉ 恢复新进程的上下文:将所选进程的寄存器值从其PCB中恢复到处理器中,以便该进程可以从中断点继续执行。
进程切换的原因
◉ 时间片到期:在分时系统中,每个进程被分配一个固定的时间片来执行。当时间片用尽时,操作系统会进行进程切换。
◉ 高优先级进程的到来:当一个更高优先级的进程变为就绪状态时,当前运行的进程可能会被切换出去,以便让更高优先级的进程运行。
◉ I/O请求:当前进程发起一个I/O请求并进入阻塞状态时,操作系统会切换到另一个就绪进程。
◉ 同步和通信:进程可能因为等待某些同步事件(如信号量、互斥锁)或进程间通信(如消息传递)而被迫进行切换。
进程切换的代价
◉ 处理器时间:保存和恢复上下文需要处理器时间。
◉ 内存访问:访问进程控制块和执行上下文切换需要内存操作。
◉ 性能影响:频繁的进程切换可能导致系统性能下降,尤其是在进程数量众多的情况下。
优化进程切换
◉ 快速上下文切换:通过硬件支持来加速上下文切换的过程。
◉ 减少切换次数:通过改进调度算法,减少不必要的进程切换。
◉ 优先级继承:在某些情况下,为了避免频繁的上下文切换,可以采用优先级继承机制。
进程的切换,最重要的一件事情是:上下文数据的保护和恢复。
竞争与独立:
◉ 竞争性:由于系统资源(如CPU时间、内存、I/O设备)是有限的,多个进程之间会竞争这些资源。
◉ 独立性:每个进程都有自己的进程控制块(PCB),它包含了进程的状态信息,如程序计数器、寄存器值、打开的文件描述符等。这使得进程之间在执行时是独立的,一个进程的崩溃不会影响其他进程。
并行与并发:
◉ 并行:当系统有多个CPU时,可以同时运行多个进程,每个CPU执行一个进程。这种情况下,进程之间确实是同时运行的。
◉ 并发:在单CPU系统中,通过进程切换,多个进程可以在一段时间内轮流运行,给用户一种多个进程同时运行的错觉。并发是并行的一种实现方式,但并行并不一定并发。
进程抢占:
◉ 抢占式内核是一种操作系统调度策略,它允许操作系统强制将处理器从一个进程切换到另一个进程。当一个低优先级进程正在运行时,如果有一个高优先级进程准备好运行,操作系统会抢占低优先级进程的CPU时间,切换到高优先级进程。
★ps: 关于进程的切换问题
计算机中的CPU内有大量的寄存器,它保存着正在执行的进程的临时数据。如果进程A正在被执行,CPU内的寄存器里面一定保存的是进程A的临时数据。寄存器中的临时数据,就叫做A的上下文
上下文数据可以丢弃吗?绝对不可以!由于计算机CPU数量小于进程数量,则当进程A暂时被切换下来的时候,进程A需要顺便带走自己的上下文数据。带走暂时保存的目的就是为了下次回来的时候,能恢复上去,就能继续按照之前的逻辑继续向后运行,就如同没有中断过一样。但如果没有保存上下文数据,进程A回来再执行时,就无法判断进程A原先执行到哪里了
注意:CPU内的寄存器只有一份,但是上下文可以有多份,分别对应不同的进程!!