在Linux操作系统内核内部,进程是通过一个链表,而且是一个双向链表来管理的。

进程描述符:每一个进程都有其描述符,每一个描述符彼此之间都有关联性的。

 

双向链表:

 

一个进程内部可能包含多个线程。

上下文切换(Context swtch)

假如说进程A从当前CPU上被拿走,切换成进程B,进程A有自己的描述符(task_struct),且被挂起。被Suspend(栈指针),CPU内部,包括指令计数器等保存下来。

保存在进程描述符文件当中。而进程描述符是由内核维持。所以这些信息都保存在内核中。

当A进程被切换出去,就意味着B进程被调度上来。这一过程被叫做恢复线程(Resume)

总的过程就叫做上下文切换。

 

进程A------CPU------进程B

 

上下文切换由谁完成?----由内核。

这意味着:

      每一次进程切换都要先从用户空间转到内核模式,然后再到用户模式。

注意:不可能由一个进程到另一个进程,必须由内核来指挥完成。

 

所以CPU的整体时间就分为两部分:

一部分是用户空间所有进程加起来的计的时间

另一部分是内核空间所占用的时间

 

不管是那个进程,CPU总是分配到用户空间一部分,又分配到内核空间一部分。

 

Linux支持进程抢占。

 优先级高的可以抢占优先级低的。

 但不是随时都可以抢占,-------系统时钟。

系统时钟:

   有内部的时间频率。

   Tick:滴答----时间解析度

   操作系统是怎么记录时间的?

   每一次滴答(tick),都会产生可抢的时钟中断。

滴答来了,就可以抢了。

 

Linux的进程类别:

1、 交互式进程(IO密集型):等待IO,对CPU要求量特别小。

2、 批处理进程(CPU密集型):也可以理解成守护进程。

3、 实时进程(Real-time):随时运行,优先级非常高的进程

 

对于PC(桌面):交互式进程优先级应该是高优先级的,IO,,,,,

对于服务器来说:一般以批处理为主(CPU)

 

现在很多调度器可以这样来实现:

     让批处理进程多一些时间片。----时间片比较大,但优先级低。

     而交互式进程时间片少,但优先级高。

   调度就是按照优先级来完成的。

 

Top命令是用来显示系统运行的进程信息。

 

Linux优先级:

1、 实时进程优先级:1-99   数字越小,优先级越低。通常与内核相关。

2、 静态优先级:通常用来描述用户进程优先级。

100-139 数字越小,优先级越高。

所以优先级范围是1-139

实时优先级比静态优先级高。

 

很显然,内核进程通常都是实时优先级。

TOP

显示RT的为实时进程。

Linux操作系统原理笔记的更多相关文章

  1. 深挖计算机基础:趣谈Linux操作系统学习笔记

    参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...

  2. Linux操作系统原理

    Linux操作系统原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机经历的四个时代 1.第一代: 真空管计算机,输入和输出:穿孔卡片,对计算机操作起来非常不便,做一件事 ...

  3. Linux操作系统学习笔记

    关于Linux详细介绍可以参见:http://blog.csdn.net/hguisu/article/details/6122513 关于Linux的常用命令可以参见:http://blog.csd ...

  4. 趣谈Linux操作系统学习笔记:第二十讲

    一.引子 1.计算两方面的原因 2.内存管理机制 二.独享内存空间的原理 1.会议室和物理内存的关系 和会议室一样,内存都被分成一块块儿的,都编号了号,例如3F-10就是三楼十号会议室.内存页有这样一 ...

  5. 趣谈Linux操作系统学习笔记:第二十五讲

    一.mmap原理 在虚拟内存空间那一节,我们知道,每一个进程都有一个列表vm_area_struct,指向虚拟地址空间的不同内存块,这个变量名字叫mmap struct mm_struct { str ...

  6. 趣谈Linux操作系统学习笔记:第二十六讲

    一.内核页表 和用户态页表不同,在系统初始化的时候,我们就要创建内核页表了 我们从内核页表的根swapper_pg_dir开始找线索,在linux-5.1.3/arch/x86/include/asm ...

  7. 趣谈Linux操作系统学习笔记:第二十七讲

    一.文件系统的功能规划 1.引子 咱们花了这么长的时间,规划了会议室管理系统,这样多个项目执行的时候,隔离性可以得到保证. 但是,会议室里面被回收,会议室里面的资料就丢失了.有一些资料我们希望项目结束 ...

  8. 白话linux操作系统原理

    虽然计算机相关专业,操作系统和计算机组成原理是必修课.但是大学时和真正从事相关专业工作之后,对于知识的认知自然会发生变化.还很有可能,一辈子呆在学校的老师们只是照本宣科,自己的理解也不深.所以今天我站 ...

  9. 趣谈Linux操作系统学习笔记:第二十一讲

    一.分段机制 1.分段机制的原理图 2.段选择子 3.段偏移量 例如,我们将上面的虚拟空间分成以下 4 个段,用 0-3 来编号.每个段在段表中有一个项,在物理空间中,段的排列如下图的右边所示. 4. ...

随机推荐

  1. 题解 [CF525D] Arthur and Walls

    题面 解析 首先考虑将一个\('*'\)变成\('.'\)后会形成什么, 显然至少是一个\(2\times 2\)的矩形. 因为\(1\times 1\)和\(1\times 2\)的改了没用啊, 而 ...

  2. learning memchr func

    extern void *memchr(const void *buf, int ch, size_t count);   用法:#include <string.h> 功能:从buf所指 ...

  3. CPU内部结构图

      原文地址:http://blog.csdn.net/jiuyueguang/article/details/9350793

  4. Cocos Creator中按钮组件数组的使用

    Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...

  5. Teamviewer14重置试用期版

    网上的破解版基本上全部被封禁了,只能通过修改ID来无限试用这个方法了 有些个人使用频繁的用户,经常提示商业环境 此teamviewer14重置试用期,可以一直使用 有条件的还是建议购买付费版. 到期点 ...

  6. MIME协议(三) -- MIME邮件的组织结构

    一封MIME邮件可以由多个不同类型的MIME消息组合而成,一个MIME消息表示邮件中的一个基本MIME资源或若干基本MIME消息的组合体.每个MIME消息的数据格式与RFC822数据格式相似,也包括头 ...

  7. 总结调试webview的方式(安卓)

    参考文章: 移动端真机调试指南 Mac 平台 Android 使用 Charles 抓包方法 Charles使用Map Local和Rewrite提高开发效率 通过chrome直接进行调试 chrom ...

  8. JAVA之工作线程数究竟要设置多少

    一.需求缘起 Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设 ...

  9. flask 第九篇 蓝图 Blueprint

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  10. leetcode-hard-array-149. Max Points on a Line -NO

    mycode  不会.... 参考 因为每次遍历一个点,也就是i的时候,都是新建的一个lines,所以也就是考虑了k相同b不同的情况 最后gcd函数就求最大公约数,来解决斜率精度的问题 class S ...