zoukankan      html  css  js  c++  java
  • Linux操作系统原理笔记

    在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的为实时进程。

  • 相关阅读:
    使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)
    便携版WinSCP在命令行下同步文件夹
    ffmpeg (ffprobe)分析文件关键帧时间点
    sqlite删除数据或者表后,回收数据库文件大小
    ubuntu 20.04下 freeswitch 配合 fail2ban 防恶意访问
    ffmpeg使用nvenc编码的结论记录
    PC版跑跑卡丁车 故事模式 亚瑟传说章节 卡美洛庆典 2阶段 心灵之眼 攻略
    There was an error loading or playing the video
    Nvidia RTX Voice 启动报错修复方法
    火狐浏览器 关闭跨域限制
  • 原文地址:https://www.cnblogs.com/dongxu2019/p/11520469.html
Copyright © 2011-2022 走看看