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

微信电影网站建设教程网页制作基本方法

微信电影网站建设教程,网页制作基本方法,wordpress getshell,网站建设优化学习目录 研究背景 程序地址空间回顾 来段代码感受一下 进程地址空间 Linux2.6内核进程调度队列 一个CPU拥有一个runqueue 优先级 活跃队列(只出不进) 过期队列(只进不出) active指针和expired指针 总结 研究背景 Linux内核版本&#…

目录

研究背景

程序地址空间回顾

来段代码感受一下

进程地址空间

Linux2.6内核进程调度队列

一个CPU拥有一个runqueue

优先级

活跃队列(只出不进)

过期队列(只进不出)

active指针和expired指针

总结


研究背景

Linux内核版本(kernel 2.6.32)

32位平台

程序地址空间回顾

我们以前可能见过这张图

可是我们对他并不理解!

来段代码感受一下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>int g_val = 100;
int main()
{printf("father is running, pid: %d,ppid: %d\n",getpid(),getppid());pid_t id = fork();if(id == 0){//childint cnt = 0;while(1){printf("I am child process, pid: %d,ppid: %d,g_val: %d,&g_val: %p\n",getpid(),getppid(),g_val,&g_val);sleep(1);cnt++;if(cnt == 5){g_val = 300;printf("I am child process, change %d -> %d\n",100,300);}}}else{//fatherwhile(1){printf("I am father process, pid: %d,ppid: %d,g_val: %d,&g_val: %p\n",getpid(),getppid(),g_val,&g_val);sleep(1);}}return 0;
}

输出:

我们发现,前5秒输出出来的变量值和地址是一模一样的,很好理解呀,因为子进程按照父进程为模版,父子并没有对变量进行进行任何修改。可是当我们的cnt到了5,g_val被子进程改为了300,我们就发现,父子进程,输出地址是一致的,但是变量内容不一样!能得出如下结论:

  • 变量内容不一样,所以父子进程输出的变量绝对不是同一个变量
  • 但地址值是一样的,说明,该地址绝对不是物理地址!
  • 在Linux地址下,这种地址叫做虚拟地址
  • 我们在用C/C++语言所看到的地址,全部都是虚拟地址!物理地址,用户一概看不到,由OS统一管理

OS必须负责将 虚拟地址 转化成 物理地址

进程地址空间

所以之前说‘程序的地址空间’是不准确的,准确的应该说成 进程地址空间 ,那该如何理解呢?看图:

分页&虚拟地址空间

说明:

上面的图就足矣说名问题,同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是通过页表被映射到了不同的物理内存地址(由虚拟到物理的过程是通过CPU中的MMU转换的且页表的地址是在我们CPU的寄存器中比如CR3)!

Linux2.6内核进程调度队列

上图是Linux2.6内核中进程队列的数据结构,之间关系也已经给大家画出来,方便大家理解

一个CPU拥有一个runqueue

如果有多个CPU就要考虑进程个数的负载均衡问题

优先级

普通优先级:100~139(我们都是普通的优先级,想想nice值的取值范围【-20,19】刚好是40,可与之对应!)

实时优先级:0~99(我们目前不关心)

活跃队列(只出不进)

  • 时间片还没有结束的所有进程都按照优先级放在该队列
  • nr_active: 总共有多少个运行状态的进程
  • queue[140]: 一个元素就是一个进程队列,相同优先级的进程按照FIFO规则进行排队调度,所以,数组下标就是优先级!
  • 从该结构中,选择一个最合适的进程,过程是怎么的呢?
  1. 从0下表开始遍历queue[140]
  2. 找到第一个非空队列,该队列必定为优先级最高的队列
  3. 拿到选中队列的第一个进程,开始运行,调度完成!
  4. 遍历queue[140]时间复杂度是常数!但还是太低效了!
  • bitmap[5](位图):一共140个优先级,一共140个进程队列,为了提高查找非空队列的效率,就可以用5*32个 比特位表示队列是否为空,这样,便可以大大提高查找效率!

过期队列(只进不出)

  • 过期队列和活动队列结构一模一样
  • 过期队列上放置的进程,都是时间片耗尽的进程
  • 当活动队列上的进程都被处理完毕之后,对过期队列的进程进行时间片重新计算

active指针和expired指针

  • active指针永远指向活动队列
  • expired指针永远指向过期队列
  • 可是活动队列上的进程会越来越少,过期队列上的进程会越来越多,因为进程时间片到期时一直都存在的。
  • 没关系,在合适的时候,只要能够交换active指针和expired指针的内容,就相当于有具有了一批新的活动进程!

总结

在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增加,我们称之为进程调度O(1)算法!

更多的内容大家还可以参考这位大佬的博客:

Linux的进程优先级 NI 和 PR - 简书

http://www.dtcms.com/a/523189.html

相关文章:

  • 广州市律师网站建设价格网站成品超市
  • 建立wordpress网站吗wordpress缩略图错乱
  • 肇庆建设银行招聘网站wordpress主题cms博客
  • 建筑师网站5个搜索引擎作弊的网站
  • 自主建站是什么意思郑州网站建设 app开发
  • 顺德网站建设包括哪些网站开发语言为
  • 网站建设怎么赚钱晋中路桥建设集团网站
  • 旅游主题网站模板网页首页设计教程
  • 网站建设方案书模板下载网站开发需要什么费用
  • 东莞网站策划做ppt图片网站 知乎
  • 网站改版 英文网站建设费属于广告费用吗
  • 陕煤建设集团铜川分公司网站表白网站怎么做
  • 博物馆设计网站推荐百度应用中心
  • 网站推广是网站建设完成之后的长期工作乐清上班族网论坛
  • 购物网站建设比较好的海外aso优化
  • 网站建设汇报评估品牌咨询
  • 注册了网站怎么建设网站改版升级总结
  • 网站服务器租用阿里云一年多少钱啊金融企业类网站模板免费下载
  • 像网站的ppt怎么做的安徽电子健康卡小程序
  • 网站是自己做还是让别人仿wordpress怎么使用cdn加载图片
  • 免费搭建网站哪个好攸县网站开发
  • 深圳网站建设深圳怎么用mvc架构做网站
  • 怎样做外贸网站临安规划建设局网站
  • 公司网站建设方案pptwordpress伪春菜
  • 购物网站常用的多组图左右轮播的js图片特效代码做网站需要的大图
  • 无为建设局网站传媒公司logo设计创意
  • 简单网站建设视频教程下载建设一个网站 最好是官网那种
  • 做网站沧州惠城网站建设有哪些
  • 鹤岗市城乡建设局网站上海多语种建站
  • 学校网站建设介绍wordpress利用DW编辑