文章目录
- 进程优先级
-
- 什么是进程优先级
- 进程优先级的类型
- 进程优先级的作用
- 进程优先级的实现
- 进程优先级的重要性
- 查看系统进程
- 修改进程优先级
-
- top命令
- renice命令
- 优先级调度原理
- 进程切换
进程优先级
什么是进程优先级
在操作系统中,进程优先级(Process Priority)是指操作系统对进程进行调度时所赋予的优先级值,用于决定进程何时获得处理器时间。进程优先级是一种实现多任务操作系统中任务调度的重要机制,它允许操作系统根据进程的重要性和紧迫性来分配处理器资源。
进程优先级的类型
进程优先级可以是静态的,也可以是动态的。静态优先级通常在进程创建时由用户或操作系统管理员设定,并且不会改变。动态优先级则可以根据进程的行为或系统状态自动调整。
◉ 静态优先级:在进程创建时由用户或操作系统管理员设置,通常使用整数值表示,数值越低表示优先级越高。
◉ 动态优先级:根据进程的运行情况自动调整,例如,一个进程如果长时间等待I/O操作,它的优先级可能会降低
进程优先级的作用
◉ 优先级调度:操作系统使用进程优先级来决定哪个进程应该首先获得处理器时间。
◉ 响应性和效率:通过调整优先级,操作系统可以确保关键任务(如图形用户界面响应、实时系统任务等)能够得到足够的处理器时间。
◉ 资源分配:优先级可以帮助操作系统决定如何分配系统资源,如内存、CPU时间等。
进程优先级的实现
进程优先级通常通过操作系统的调度器来实现,调度器会根据进程的优先级和其他因素(如进程状态、时间片等)来决定进程的执行顺序。
进程优先级的重要性
进程优先级是操作系统多任务管理的关键部分,它允许系统根据不同任务的需求和紧迫性来优化资源分配,从而提高系统的整体性能和响应性。通过合理设置和调整进程优先级,操作系统可以确保系统中的关键任务得到优先处理,同时保持系统的稳定性和效率。
查看系统进程
使用ps -l命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。PRI代表进程的优先级,NI代表进程的nice值。PRI值越小,进程的优先级越高。
UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值
修改进程优先级
修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,数值越小,优先级越高。可以使用nice和renice命令或通过top命令进行修改。
top命令
1.top
2.进入top后按"r"-->输入进程PID-->输入nice值
输入nide值10后看到变化:
renice命令
renice命令使用格式为:renice [nice值] -p [进程pid]
优先级调度原理
进程切换
进程切换(Process Switching),也称为上下文切换(Context
Switching),是操作系统中的一个基本机制,它允许在单个处理器上快速高效地运行多个进程。进程切换是指操作系统保存当前运行进程的状态(上下文),并恢复另一个进程的状态以使其能够继续执行的过程。
进程切换的过程
◉ 保存当前进程的上下文:这包括将当前进程的寄存器值(如程序计数器、栈指针、通用寄存器等)保存到它的进程控制块(PCB)中。
◉ 选择另一个进程:操作系统调度器根据某种策略(如轮转调度、优先级调度等)选择下一个要执行的进程。
◉ 恢复新进程的上下文:将所选进程的寄存器值从其PCB中恢复到处理器中,以便该进程可以从中断点继续执行。
进程切换的原因
◉ 时间片到期:在分时系统中,每个进程被分配一个固定的时间片来执行。当时间片用尽时,操作系统会进行进程切换。
◉ 高优先级进程的到来:当一个更高优先级的进程变为就绪状态时,当前运行的进程可能会被切换出去,以便让更高优先级的进程运行。
◉ I/O请求:当前进程发起一个I/O请求并进入阻塞状态时,操作系统会切换到另一个就绪进程。
◉ 同步和通信:进程可能因为等待某些同步事件(如信号量、互斥锁)或进程间通信(如消息传递)而被迫进行切换。
优化进程切换
◉ 快速上下文切换:通过硬件支持来加速上下文切换的过程。
◉ 减少切换次数:通过改进调度算法,减少不必要的进程切换。
◉ 优先级继承:在某些情况下,为了避免频繁的上下文切换,可以采用优先级继承机制。
进程的切换,最重要的一件事情是:上下文数据的保护和恢复。
竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高
效完成任务,更合理竞争相关资源,便具有了优先级
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行
并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为
并发.