博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019/02/08 -进程管理01
阅读量:3923 次
发布时间:2019-05-23

本文共 2146 字,大约阅读时间需要 7 分钟。

在这里插入图片描述计划任务就是可以到期自动执行任务

在这里插入图片描述
在这里插入图片描述
操作系统(内核)管理进程是必要的功能
process 进程
program程序
程序和进程有什么区别:
程序一般来讲表现出磁盘上的文件,(程序平时不去运行它,就是个静态文件,不占用内存空间)当你去执行的时候,就会自动的把磁盘上的文件读取到内存里,放到内存里进而执行
在这里插入图片描述
在这里插入图片描述
也就意味着这个ls程序在内存中占用一定的内存空间,整个空间不仅放ls指令,还有一些其他的信息附加,比如分配一个进程pid的编号给ls,系统自动分配的,当进程执行完毕以后,pid也就自动删除了,在内存中国把它移除

有可能两个用户都在执行ls,这样磁盘上的ls会复制两份到内存里,在内存中就会占用2份空间

在这里插入图片描述
进程是一个动态的概念,当用户把程序执行起来的时候,才会有进程的概念,当进程执行完毕以后,就把进程在内存里删除了,周期终止
而程序是一个磁盘上的文件而已
程序和进程,一个是静态,一个是动态
程序表现为一个文件,可以说没有生命期,而进程是在内存中运行的,运行的时候有生命期,结束了,也就消掉了,
系统会分配一个唯一的编号pid给进程,而一个进程对应一个程序,一个程序有可能对应多个进程
在这里插入图片描述
每个进程都有 task struct 任务结构,存放了每个进程的一些必要信息,因为进程除了
pid还有一些额外的属性信息,例如谁运行的这个程序(UID) ,这个运行的用户属于什么组(GID),另外和完全和相关的一些属性信息,这些都需要放到内存空间中,叫任务struct
在这里插入图片描述
在这里插入图片描述
进程与进程构成链表关系
链表,一种数据结构
有一个链表关系,指向下一个进程
在这里插入图片描述
在这里插入图片描述
第一个进程init(但是在centos7上叫systemd),进程和进程直接构成一个进程树,有父进程,子进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在生成进程的时候有多种方法,会调用系统中的一些函数生成 ,fork()clone(),
fork(叉)是生成子进程,
clone(克隆)生成子进程还可以生成兄弟进程
生成子进程的时候,为了优化,和节约空间,一般都采用CoW机制
CoW(copy on write cow)写时复制
cow父进程在内存中正在运行
如果生成的子进程,还没有修改系统的信息,那就只占用同样的内存空间(跟原父进程一样)
共用一个空间,节约空间
只有子进程修改的时候才有占用新的内存空间
在这里插入图片描述
子进程只有数据更改的时候,才会占用新的内存空间,否则是和父进程占用相同的内存空间
在这里插入图片描述
在这里插入图片描述
cp命令也有这种机制,写时复制,
复制一个文件(加上cow选项后),复制f1 为f2两个文件其实占用一样的空间
只有在f2变化的时候,才会在磁盘上生成一块新的空间
如果要读取磁盘数据就要发生io请求进入阻塞状态
在这里插入图片描述
把1Scpu时间分成100个
10ms 去放音乐
下一个10ms 看网页
在这里插入图片描述
电脑执行程序就是用时间片分配,时间太短,人察觉不出来
linux ps aux 有各种状态的显示(n种状态)
在这里插入图片描述
协作式的多任务,(一个程序霸占cpu,什么时候把程序结束了,才释放cpu给其他程序执行)
有个程序死机了,(释放不了cpu)就会死机(dos ,经常死机需要按ctrl +alt+delete)
在这里插入图片描述
现在大部分都是抢占式多任务(时间片一到,必须释放cpu给别的程序使用)当一个程序死机,就不会导致其他程序
不能执行
在这里插入图片描述
在这里插入图片描述
从阻塞到直接运行是不可能的,阻塞要分配cpu,需要到就绪状态,才能继续运行
就绪也不能直接到阻塞,根本没有执行,也不谈不上阻塞
在这里插入图片描述
早起centos4,5版本有0-139个优先级(140个)
centos6版本有0-99个优先级 (100个)
进程的优先级会在系统中考虑分成2种队列,一种叫运行队列和过期队列
(如果按照22排序,就是for循环的递归排序,10000个程序的话处理排序越慢
所以系统按照优先级排140个队列)
在这里插入图片描述
140个队列
在这里插入图片描述
1运行完(时间片),给2,2比4的优先级高,一直到运行3,3 运行完,过期队列会自动转换为运行队列,优先级为0 的1.2.3继续执行
在这里插入图片描述
运行完,如果程序还未结束,上面的就变为过期队列,总之先把优先级高的运行完
在这里插入图片描述
上面时候1,2,3运行好了,才有可能4,5,6运行,
等级1也有过期队列和运行队列,所以总共是
140*2=280个队列
这样的好处是,1000个进程和10000个进程执行效率上是一样的
在这里插入图片描述
时间复杂度
在这里插入图片描述
O(1)做规模大小不同的事情,花的时间一样,是理想的
在这里插入图片描述
logn在这里插入图片描述
下图线性增长
在这里插入图片描述
抛物线比线性增长更多快
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时间复杂度
早期centos的优先级
在这里插入图片描述
总体的优先级是0-139
realtime具体命令里看到的优先级是前面总体优先级的一部分
nice命令配置优先级是-20-19对应前面优先级的100-139
这是早期的版本,centos6以后
在这里插入图片描述
**nice命令设置的优先级也是99到99之间改改,所以效果不明显
改也是99
**
在这里插入图片描述
page frame 页框
内存中大小叫page 4k 页
在磁盘上的大小叫块
在这里插入图片描述
有些程序会把数据放到内存中叫缓存
LRU近期最少使用算法,缓存的工作机制
数据读到缓存,缓存也有大小就把旧的数据淘汰掉
在这里插入图片描述
在这里插入图片描述
末位淘汰,一旦有数据重新访问,就会激活重新到第一位
在这里插入图片描述
后续可能有变动,可以访问一次原数据不放到第一位,访问第二次才放到第二位
多次访问才激活
在这里插入图片描述

转载地址:http://egzgn.baihongyu.com/

你可能感兴趣的文章
微信适配国产操作系统:原生支持 Linux
查看>>
我的2020年终总结:新的角色,新的开始
查看>>
C# 9 新特性 —— 增强的模式匹配
查看>>
ASP.NET Core Controller与IOC的羁绊
查看>>
如何实现 ASP.NET Core WebApi 的版本化
查看>>
探索 .Net Core 的 SourceLink
查看>>
AgileConfig-如何使用AgileConfig.Client读取配置
查看>>
【gRPC】 在.Net core中使用gRPC
查看>>
整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI
查看>>
“既然计划没有变化快,那制订计划还有个卵用啊!”
查看>>
C#实现网页加载后将页面截取成长图片
查看>>
C# 在自定义的控制台输出重定向类中整合调用方信息
查看>>
C# 9 新特性 —— 补充篇
查看>>
Asp.Net Core使用Skywalking实现分布式链路追踪
查看>>
浅谈CLR基础知识
查看>>
Xamarin使XRPC实现接口/委托远程调用
查看>>
如何成功搞垮一个团队?
查看>>
.NET开源5年了,这些宝藏你还没get?
查看>>
【日常排雷】 .Net core 生产环境appsetting读取失败
查看>>
从内存中释放Selenium chromedriver.exe
查看>>