设计类网站排名,延吉网站网站建设,怎样做好营销宣传,分销商城模式系统开发基本概念
cpu资源分配的先后顺序#xff0c;就是指进程的优先权#xff08;priority#xff09;。 优先权⾼的进程有优先执⾏权利。配置进程优先权对多任务环境的linux很有⽤#xff0c;可以改善系统性能#xff1b;还可以把进程运⾏到指定的CPU上#xff0c;这样⼀来就是指进程的优先权priority。 优先权⾼的进程有优先执⾏权利。配置进程优先权对多任务环境的linux很有⽤可以改善系统性能还可以把进程运⾏到指定的CPU上这样⼀来把不重要的进程安排到某个CPU可以⼤大改善系统整体性能。
优先级是先后问题权限是是否能得到的问题。
进程的优先级是task_struct内的属性是一个整型变量值越低表明优先级越高反之则越低。
我们在这为下一篇进程的切换和调度铺垫一下我们当代Linux或者大部分我们所用的操作系统这些操作系统都叫做基于时间片的分时操作系统。我们先抛出来时间片的概念在我们当代计算机里面我们的每一个进程都分有时间片 定义时间片是操作系统分配给每个进程的一段CPU使用时间。当一个进程的CPU时间用完时它会被挂起操作系统会将CPU分配给另一个进程。 目的确保所有进程都能公平地获得CPU时间避免某个进程长时间占用CPU导致其他进程无法执行。
考虑公平性优先级未来可能变换但是变化幅度太大。
在基于时间片的分时操作系统中优先级的变化是动态的但变化幅度需要谨慎控制以确保系统的稳定性和公平性。如果优先级变化过大可能会导致优先级低的进程长时间得不到CPU资源的分配进而导致进程饥饿。因此系统设计时需要平衡优先级的变化幅度以避免对系统性能产生负面影响。动态优先级调度算法通过动态调整进程的优先级能够更灵活地满足不同进程的需求提高系统整体性能和任务处理效率。同时调度器的决策过程往往基于当前所有进程的优先级来进行选择优先级最高的进程分配CPU时间。当多个进程优先级相同时则可以采用其他调度策略如时间片轮转或随机选择。动态优先权调度算法的效率在很大程度上取决于其数学模型模型需要平衡系统资源的利用和进程的响应时间。
查看系统进程
在linux或者unix系统中⽤
ps -al | head -1 ps -al | grep mycmd | grep -v grep
//-a:显示全部
//-l:查看优先级
该命令则会类似输出以下⼏个内容 我们很容易注意到其中的⼏个重要信息有下 UIDUser ID 定义代表执行进程的用户身份。 作用用于区分不同用户启动的进程是进程安全和权限控制的基础。 示例在Linux里面识别用户不是通过用户名而是通过UID如果UID为1000通常表示该进程是由用户ID为1000的用户启动的。
可以使用
ls -ln
显示用户ID 比如说我们的文件在创建的时候就写入了文件创建者的IDUID然后我们进程在进行启动的时候进程自己也会将自己的UID保存起来表明这个进程是谁启动的。
所以系统怎么知道我访问文件的时候是拥有者所属组还是other
对于权限在我们访问文件的时候我们有时候是拥有者有时候是所属组有时候是other我们是可以直接 ll 看见的但是系统是只认数字的而且当我们要touchcatvim等访问某些文件的时候本质就是进程在访问文件我们说使用的指令访问就是进程在访问文件那我们的文件又是怎么知道访问他的进程是拥有者/所属组/other呢因为这个进程在启动时会把自己的UID谁启动的他假设是我这个文件如果是之前我创建的这个文件会记录下来是我创建的他那么我们一个进程将来的时候拿着他的UID和文件所对应的UID作对比相等的话是拥有者不相等查下一个相等的话就是所属组再不行等的话就是other。
也就是说Linux系统中访问任何资源都是进程访问进程就代表用户 PRIPriority 定义代表进程可被执行的优先级。默认是80 作用决定进程被CPU调度执行的顺序PRI值越小优先级越高越先被执行。 示例PRI为10的进程比PRI为20的进程有更高的优先级。
NINice 定义代表进程的nice值是进程优先级的修正数值。 作用通过调整nice值可以影响进程的PRI值从而影响进程的执行优先级。nice值越低越负优先级越高。 示例如果一个进程的nice值为-5那么它的PRI值会相应降低从而提高其优先级。
我们为什么还要有一个NI来进行对优先级的间接调整这是我们进程的调度算法才会说到我们先直接输出结论
进程的真实优先级PRI80默认PRINI一定要注意第一次NI先改为10PRI为90我们第二次将NI改为-10结果并不是80是70以80为改变点这里是一个坑
因为我们如果每一次都基于上次的优先级进行调整那么我们就还需要改之前查一下当前的PRI是多少是比较麻烦的。
我们并不是很喜欢一直手动变化进程优先级他是动态变化的改得太多可能会影响进程间的调度平衡。
我们可以手动改变进程优先级
⽤top命令更改已存在进程的nice
top 进⼊top后按“r”‒输⼊进程PID‒输⼊nice值
注意
其他调整优先级的命令nicerenice 系统函数
优先级极值问题
在 Linux 系统中进程的优先级Priority默认值为 80而 nice 值的范围是 [-20, 19]。因此通过调整 nice 值进程的优先级范围可以计算如下 最小优先级当 nice 值为 -20 时优先级为 80 (-20) 60。 最大优先级当 nice 值为 19 时优先级为 80 19 99。
因此Linux 系统中进程优先级的极值范围是 [60, 99]。
优先级极值的调度影响 优先级过低接近99优先级过低的进程可能会长时间得不到 CPU 资源的分配导致进程饥饿。为了避免这种情况操作系统通常会采用老化Aging机制即随着时间的推移逐渐提高进程的优先级。 优先级过高接近60优先级过高的进程可能会过度占用 CPU 资源影响系统的公平性和其他进程的响应时间。
优先级调整的限制
为了避免优先级变化过大导致系统调度的不公平性或饥饿问题操作系统通常会限制优先级的调整幅度。例如 nice 值的范围nice 值的范围被严格限制在 [-20, 19]以确保优先级的变化不会过于剧烈。 动态调整机制操作系统会根据进程的行为如 CPU 使用时间、等待时间等动态调整优先级但调整幅度会受到限制。
在基于时间片的分时操作系统中优先级极值的合理设置和调整对于系统的公平性和性能至关重要。通过限制 nice 值的范围和引入动态调整机制操作系统可以有效避免优先级过高或过低带来的问题同时确保所有进程都能获得合理的 CPU 时间。
补充概念竞争、独立、并行、并发
竞争性Concurrency 定义在多任务操作系统中多个进程可能需要访问同一资源如CPU、内存、文件等。由于资源有限进程之间会相互竞争这些资源。 目的通过优先级机制可以更合理地分配资源确保重要任务优先执行从而提高系统的整体效率和响应速度。 例子在只有一个打印机的办公室中多个用户需要打印文件打印机资源就是竞争对象。
独立性Independence 定义每个进程都是一个独立的执行单元它们在运行时互不干扰每个进程有自己的地址空间和资源。 目的独立性确保了进程的安全性和稳定性即使一个进程出现问题也不会影响到其他进程的运行。 例子多个用户在电脑上运行不同的应用程序每个应用程序都是一个独立的进程它们之间互不干扰。
并行Parallelism 定义多个进程在同一时间内在不同的CPU上同时执行。 目的通过并行处理可以显著提高计算效率和处理速度特别是在多核CPU的系统中。 例子在多核处理器的电脑上多个计算密集型任务如视频编码、科学计算等可以同时在不同的CPU核心上运行从而加快处理速度。
并发Concurrency 定义多个进程在同一时间内在同一个CPU上通过时间片轮转的方式交替执行。 目的通过并发执行可以在单个CPU上实现多个任务的推进提高CPU的利用率和系统的响应速度。 例子在单核处理器的电脑上操作系统通过时间片轮转的方式让多个应用程序交替执行从而给用户一种多任务同时运行的感觉。
并行Parallel与并发Concurrency的区别
并行Parallel 定义并行是指多个进程在多个处理器或核心上同时执行。每个进程都有自己独立的执行路径它们之间没有直接的交互但可以同时进行。 特点 需要多个处理器或核心。 进程之间没有直接的交互。 可以显著提高处理速度和效率。 例子假设有两个厨师进程和两个烤箱CPU核心。两个厨师可以同时在两个烤箱中烤面包这就是并行处理。
并发Concurrency 定义并发是指多个进程在单个处理器上通过时间片轮转的方式交替执行使得多个进程看起来像是同时进行的。 特点 只需要一个处理器或核心。 进程之间可能需要共享资源因此需要同步机制。 可以提高单个处理器的利用率但处理速度受限于单个处理器的能力。 例子假设只有一个厨师进程和一个烤箱CPU核心。厨师需要烤两种面包他可以先烤第一种面包5分钟然后取出再烤第二种面包5分钟如此交替进行。虽然每次只有一个面包在烤但通过交替执行两种面包都可以烤好这就是并发执行。
图示说明
为了更直观地理解并行和并发的区别可以参考以下图示
并行Parallel
进程1 进程2| || || || || || |--------------时间
在并行处理中进程1和进程2同时在不同的CPU上运行它们在同一时间间隔内并行执行。
并发Concurrency
进程1 进程2| || | || | |------时间
在并发执行中进程1和进程2在同一个CPU上通过时间片轮转的方式交替执行虽然它们看起来像是同时运行但实际上是在不同时间片上交替执行的。
咖啡店比喻
为了更形象地解释并行和并发我们可以用咖啡店的比喻 并行Parallel想象有两个咖啡师和两台咖啡机。两个顾客进程可以同时点咖啡两个咖啡师分别在两台咖啡机上同时制作咖啡。这就是并行每个顾客的咖啡可以同时开始制作。 并发Concurrency现在只有一个咖啡师和一台咖啡机。两个顾客进程点咖啡咖啡师需要先为一个顾客制作咖啡完成后再为另一个顾客制作。虽然每次只有一个顾客的咖啡在制作但通过交替为两个顾客服务两个顾客的咖啡都可以完成。这就是并发。