当前位置: 首页 > news >正文

龙岗网站建设代理商阿里巴巴申请网站怎么做

龙岗网站建设代理商,阿里巴巴申请网站怎么做,宝安区属于什么档次,广州建设工程造价管理网站【Linux】进程调度与切换 1. 基本概念2. 进程切换3. 进程调度3.1运行队列实现优先级设计3.2 处理效率问题3.3 活动队列与过期队列3.4 如何解决饥饿问题3.5 active指针和expired指针 1. 基本概念 竞争性: 系统进程数目众多#xff0c;而CPU资源只有少量#xff0c;甚至1个而CPU资源只有少量甚至1个所以进程之间是具有竞争属性的。为了高效完成任务更合理竞争相关资源便具有了优先级 从上一张进程优先级我们可以知道进程之间是存在竞争关系的并且我们要明白一点就是进程在运行的时候放在CPU中不是说必须要把代码跑完后才会从CPU下来。在现代的操作系统都是基于时间片进行轮转的。 独立性: 多进程运行需要独享各种资源多进程运行期间互不干扰 我们电脑上可以打开微信也可以打开qq也可以打开CSDN这一个个都都是进程但是我们在使用一个进程的时候都是不会影响到其他的进程。 并行: 多个进程在多个CPU下分别同时进行运行这称之为并行 一般情况下我们的电脑都是只有一个CPU的一个CPU维护一个运行队列如果有多个CPU的话就会有多个运行队列所以如有多个CPU那么同一时间段就可以实现每个CPU都运行一个进程。 并发: 多个进程在一个CPU下采用进程切换的方式在一段时间之内让多个进程都得以推进称之为并发 为什么我们的电脑只有一个CPU但是可以同时运行微信qqCSCN呢那是因为CPU是通过时间片进行轮询运行在运行队列的进程的只要速度够快我们人是反映不过来一个时间段只运行一个进程的。就好比之前的老电影都是一张一张的图片进行快速的播放来达到动态的效果是一样意思。 2. 进程切换 我们在讲解进程状态的时候讲过了进程在运行的时候其实本质是放在了CPU运行队列中基于时间片轮转发方式进行占用CPU的资源从而实现了多个进程同时运行的现象。而基于运行队列进行切换轮询式的享受CPU资源这个轮询的方式就叫做式进程切换的过程。 而CPU中其实是由大量的寄存器的其中我们所了解的一个寄存器eip俗称pc指针是我们之前有接触过的pc指针的作用就是记录当前执行代码的下一个需要执行的代码的位置。所以当一个进程在CPU中运行的时候会产生大量的临时数据而这些临时数据是存放在寄存器当中的。 那我们就会有一个疑问了既然进程是基于运行队列时间片轮询方式进行切换的那么CPU是怎么知道切换后的进程再次来到的时候上一次运行到那里了呢CPU又是怎么接着根据这个进程上一次运行的到的位置接着运行呢所以当一个进程运行的时间片到了的时候CPU因该将改进程运行后的信息进行记录起来等到这个进程下一次再来的时候接着运行而这些信息就是保存在寄存器里面的。但是这些信息最终不是放在寄存器中的而是将信息重新放到进程的PCB中这里我们就简单的理解是放到PCB中的其实是更复杂的等到下次再到CPU中运行的时候重新将数据个CPU这个时候CPU就知道那些运行了那些没有运行而这个信息叫做进程的硬件上下文 上面的保存硬件上下文的操作叫做保护上下文。当一个进程第一次被运行那就正常执行如果不是那么进程放到CPU中运行就得先将曾经保存的硬件上下文数据进行恢复 这里我们要明白的是 CPU内的寄存器只有一套但是寄存器内保存的数据可以有多套。虽然寄存器数据是放在一个共享的CPU设备里面呢但是所有的数据其实都是被进程私有的。 也就是说虽然我们的寄存器只有一套但是只要进程来了那么此时CPU中的寄存器存放的就是该进程的所数据只要它走了另一个进程来了那么保存的就是该进程的数据。这样就体现出来进程的独立性。 3. 进程调度 Linux下实现进程调度的算法是需要考虑优先级饥饿问题以及效率问题的。 之前我们只是简单的画出了进程调度的方式——运行队列。 现在我们来详细的解剖一下这是一张运行队列中的详细成员 上面大部分的属性现阶段都是不要太关系的我们主要关系的是上面话红色框框的属性字段和画蓝色框框的属性字段。 3.1运行队列实现优先级设计 在Linux下是通过queue[140]这个数组来控制优先级的这个数组的下标就对应着优先级。 前面我们学习进程优先级的时候我们说过了进程的优先级范围是[60,99]的一共有40个有限等级。那为什么这里控制优先级的数组是140呢 首先这里的话我们只关系100 ~ 139,这部分叫做是普通优先级100-139刚好对应着我们之前学习的进程的40个优先级。所以100对应着就是我们进程优先级的60139就对应着99剩下的0~99的部分称之为实时优先级 分时操作系统必须以时间片为周期调度不同的进程是为了确保公平避免进程饥饿比如现在的互联网在互联网的视角中所有用户都是公平的不能因为谁的优先级高就仅服务谁所有用户的优先级都差不太多不会出现谁的优先级非常高的情况。还有另外一种为实时操作系统则相反在运行某个进程时必须跑完严格按照队列先后顺序进行如果有更高优先级的进程允许插队即实时操作系统必须对用户有高响应这一特性比如车载系统绝对不能使用基于时间片轮转的分时操作系统而必须采用实时操作系统刹车的指令优先级非常高在用户需要刹车时他不会考虑音乐播放器进程会不会饥饿。所以我们必须保证一些进程实时尽快的被处理所以也就有了实时优先级的概念而0~99这些优先级就是为了这一部分而准备的。 而这个的原型其实是task_struct *queue[140]是一个指针数组里面存放是处于同一优先级的进程的队列。所以就可以根据优先级插入对应的优先级队列中了。 通过上述我们可以得到40个优先级队列那么拿到CPU运行的时候都是按照着40个优先级队列依次的遍历进行调度吗拿到要遍历40次吗因为着40个队列中大部分情况是不会每个都会有的所以这必然会有不必要的操作也会影响一点效率。 3.2 处理效率问题 所以为了防止把把40个队列中都进行遍历一次在运行队列中的属性中有一个属性int bitmap[5]这是一个位图。所以在linux下其实时使用位图的方式来确定那些优先级里面是由进程在排队的。 int bitmap[5]有5个int类型的空间也就是32 * 5 160个bit位也就可以表示160个优先级了。所以bit位的位置就表示哪一个队列哪一个优先级bit位的内容就表示队列的内容。即1就表示有队列0就表示没有队列。 所以我们检测队列中是否有进程就是检测位图中的bit位是否位1。 而具体检测的过程就是先对int bitmap[5]中这5个元素通过int整形的方式来进行位位操作一旦与一个整形进行位操作比如用bitmap[0] 0xFFFFFFF 0如果等于0就说明此时第一个整形位中是没有队列的那么就去和第二个整形进行对比一次类推。而这种算法接近O(1)的算法了。 3.3 活动队列与过期队列 像上述的队列中如果优先级更高的的队列中一直有进程进行插入的话那么那些处于优先级比较低的进程就可能长时间的得不到CPU的调度甚至是可能优先级特别低的进程将一直得不到调度那么就会出现我们打开程序会出现一直打不开的情况甚至是打都打不开。 所以Linux的设计者非常的聪明他在原理的基础上对应红色的框框在次创建了一份同样的结构对应着蓝色框框所以说活动队列和过期队列是完全相同的一个结构我们其实可以用一个结构体进行维护。 struct q {int nr_active;bitmap[5];task_struct queue[140]; }然后过期队列和活动队列就是使用一下这种结构来表示 struct q array[2]3.4 如何解决饥饿问题 有了活动队列和过期队列后就有效的解决了上述的问题。 当CPU在执行活动队列中的进程的时候后来的进程无论让的优先级有多高他都不会在添加到后动队列中取了而是添加到过期队列中去并且一旦在活动队列中的进程在本才的时间片结束后也不会再次添加到当前的活动队列中去了而是同样的添加到过期队列中去了。一旦活动队列中的进程都完成了后这个时候我们的过期队列就变成了活动队列活动队列就变成了过期队列。 3.5 active指针和expired指针 active指针永远指向活动队列expired指针永远指向过期队列可是活动队列上的进程会越来越少过期队列上的进程会越来越多因为进程时间片到期时一直都存在的。没关系在合适的时候只要能够交换active指针和expired指针的内容就相当于有具有了一批新的活动进程 一开始struct q* active array[0], struct q* expried array[1]。 一旦检测到活动队列中中没有进程了操作系统就会执行一个操作swap(active, expried)进而完成了活动队列和过期队列的交换。
http://www.w-s-a.com/news/269414/

相关文章:

  • 杭州网站建设咨询蓝韵网络聊城有制作网站的吗
  • 网站开发注意的事项深圳企业网站
  • 哈尔滨网站制作哪里专业网站建设维护有哪些内容
  • 花的网站建设规划书网络营销培训
  • 又拍云wordpress全站cdn无锡做网站品牌公司
  • 计算机网络工程网站建设黄石建设信息网站
  • 旅游网站开发毕业设计开题报告青岛网站建设服务公司
  • 人员调动在网站上怎么做网站开发课程意见和建议
  • 卓训网是个什么网站wordpress命令执行时间
  • 网站建设需要做哪些工作网片焊接
  • 网站优化方案dedecms win8风格网站模板
  • 企业如何制作网站管理系统慈溪住房和城乡建设部网站
  • 青岛网站建设有哪些公司区块链网站开发价格
  • 怎么设置网站的logo微信公众号的h5网站开发6
  • 粉色的网站绍兴市建设局网站
  • 个人网站的基本风格是wordpress 模板选择
  • 南昌专业做网站公司有哪些广州市住房城乡建设部门户网站
  • 福州网站建设团队淘宝联盟网站怎么建设
  • 福州企业网站建站模板国内黑色风格的网站
  • 好看的网站首页设计android移动开发
  • 域名注册完成后如何做网站域名 删除 wordpress
  • wordpress xml导入大小东莞seo优化方案
  • 网站建设效益网站销售怎么做的
  • 利用网站空间做代理设计方案的格式范文
  • 无锡建设工程质量监督网站遵义做手机网站建设
  • 衡阳商城网站制作ps做网站首页规范尺寸
  • 微信网站应用开发营销推广的方案
  • 广州做网站商城的公司制作一个app的完整流程
  • 湖南城乡建设厅网站163注册企业邮箱
  • 做网站怎么调整图片间距织梦做的网站如何去掉index