Linux系统知识点

1.process:一个独立运行单位

           系统资源:cpu时间,存储空间

2.OS: VM

       CPU:

              时间:切片

              缓存:缓存当前进程数据

               进程切换:保存现场、恢复现场

         内存:线性地址<-- 物理地址

                 空间:映射

           I/O:内核--》进程

3. 进程描述符:创建一个进程首先要添加一个进程的描述符,并添加到双向链表

              进程描述符文件保存在内核中,当线程切换时,就会把stack pointer, other registers,EIP register ect保存到进程描述符文件中。

            进程元数据

             双向链表

linux上进程有5种状态:      

  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行)

  3.1. 进程切换是由内核控制的,会有进程的上下文切换,所以会有内核占用时间,用户进程占用时间,内核空间到用户空间到内核空间到用户空间切换。

        所以进程切换太快,会有很多时间是消耗在内核上,切换太慢,就意味程序响应太慢

   3.2. linux支持进程抢占,但是在一定的时间里才能抢占,系统内部有个时钟控制 tick

   3.3. Linux进程类别

        交互式进程(I/O):IO密集型 时间片短,优先高

  批处理进程:CPU密集型的,时间片长,优先级低

        实时进程:优先级非常高的 ,优先级高

   3.4. Linux优先级

         实时优先级(1-99 数字越小,优先级越低)

          静态优先级(100-139 数字越小,优先级越高)

          实时优先级比静态优先级高 内核进程都为实时 的

     

查看优先级:

CLS:调度类别

-e:显示所有线程

-o:自定义显示字段

class:调度类别

rtprio:实时优先级

pri:优先级

nice:调整静态优先级 从-20 到19 (与静态优先级一一对应) 分别对应100 到139

cmd:加了中括号的表示内核进程

4.linux的调度类别

  实时进程 :

              SCHED_Other:用来调度用户空间进程   TS

              SCHED_FIFO (first in first out)   FF

               SCHED_RR (Round Robin)  

动态优先级:

          内核监控会监视长时间没有运行的进程,进行临时调高优先级。主要针对 SCHED_Other

4.1.如何手动调整优先级

      100-139:nice

             nice N COMMAND

             renice -n # PID

       1-99: 调整实时优先级

               chrt -f -p [prio] PID

               chrt -r -p [prio] PID

               启动一个进程时调整优先级:chrt -f -p [prio] COMMAND

5. 创建进程

     每一个进程都是由父进程通过fork()生成,第一个进程 :init

 

     

         

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值