进程linux查看进程

linux查看进程  时间:2021-02-26  阅读:()

∏仁贤】陈巍〗车恫录拇估恢文档下载免费文档下载http://doc.
100lw.
com/本文档下载自文档下载网,内容可能不完整,您可以点击以下网址继续阅读或下载:http://doc.
100lw.
com/doc/20102205cd960bafbfb38643《嵌入式系统》课程论文——Linux进程调度策略及内存管理机制《嵌入式系统》课程论文——Linux进程调度策略及内存管理机制Linux进程调度策略及内存管理摘要:内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分.
对于Linux的初学者来说,熟悉Linux的内存管理非常重要.
进程是运行于虚拟地址空间的一个程序.
可以说,任何在Linux系统下运行的程序都是进程.
Linux系统中包括交互进程和批处理进程.
交互进程是由Shell控制和运行的,既可以在前台运行,也可以在后台运行.
批处理进程不属于某个终端,被提交到一个队列中以便顺序执行.
大多数的进程都需要虚拟内存.
进程中最知名的属性就是它的进程号(ProcessIdentityNumber,PID)以其父进程号(ParentProcessID,PPID).
PID、PPID都是非零正整数.
一个PID唯一地标识一个进程.
一个进程创建新进程称为创建了子进程(ChildProcess),创建子进程的进程称为父进程.
所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫做init进程,是内核自举后第一个启动的进程.
Init进程的作用是扮演终结父进程的角色.
因为init进程永远不会被终止,所以系统总是确信它的存在,并在必要时以它为参照.
如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况.
此时那些失去了父进程的子进程就都会以init作为其父进程.
通过执行ps-af命令,可以列出许多父进程ID为1的进程.
Linux提供了一条pstree命令,允许用户查看系统内正在运行的各个进程之间的继承关系.
直接在命令行输入pstree,程序会以树状结构方式列出系统中正在运行的各进程之间的继承关系.
关键词:;进程调度;调度策略;内存管理kernelprocessschedulingandmemorymanagemhttp://doc.
100lw.
com/doc/20102205cd960bafbfb38643ent:kernelmemoryismanagedbyoneofthemostimportantresources,memorysystemisthemostimportantpartoftheoperatingsystem.
ForLinuxtobefamiliarwithLinux'smemorymanagementisveryimportant.
kernelmemoryismanagedbyoneofthemostimportantresources,memorysystemisthemostimportantpartoftheoperatingsystem.
ForLinuxtobefamiliarwithLinuxismemorymanagementisveryimportant.
Processisonavirtualaddressspaceofaprogram.
CanbesaidthatanyprogramrunningLinuxsystemistheprocess.
Linuxsystem,includingtheinteractiveprocessandbatchprocess.
InteractiveprocessiscontrolledandrunbytheShell,bothrunninginforeground,youcanalsoruninthebackground.
Batchprocessdoesnotbelongtoa,tobesubmittedhttp://doc.
100lw.
com/doc/20102205cd960bafbfb38643toaqueuefororderexecution.
Mostoftheprocessrequiresmemorybstract.
isbest-knownpropertiesoftheprocessisitsprocessID(ProcessIdentity,PID)totheparentprocessID(ParentProcessID,PPID).
PID,PPIDisnon-zerointeger.
APIDuniquelyidentifiesaprocess.
Createanewprocess,aprocessascreatingachildprocess(ChildProcess),theprocessofcreatingthechildiscalledparent.
Allprocesseswilleventuallyfallbacktotheirancestralprocesstheprocessnumber1,thebody,thisprocessiscalledinitprocessisthekernelprocessstartedafterthefirst.
Initprocessisplayingtheroleoftheendoftheoftheparentprocess.
Becausetheinitprocessisneverterminated,sothesystemisconvincedthatitexists,and,wherenecessarytoitasareference.
Ifaprocessihttp://doc.
100lw.
com/doc/20102205cd960bafbfb38643nallderivedfromthechildprocessisterminatedbeforetheend,therewillhavetoforthereferencesituation.
Atthispointthosewhohavelostaparentonthechildtoinitastheparentprocesswillbe.
Throughtheimplementationoftheps-af,youcanlistanumberofparentprocessIDasaprocess.
Linuxprovidesacommand,allowinguserstoviewsystemandeachprocessisrunningbetweeninheritance.
Directlyonthecommandlineinputpstree,procedureswillbelistedinsystemtreestructuremeanstheprocessofrunningtheinheritancerelationship.
words:;Processscheduling;Schedulingstrategy;Memorymanagement内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分.
对于Linux的初学者来说,熟悉Linux的内存管理非常重要.
进程是运行于虚拟地址空间的一个程序.
可以说,任何在Linux系统下运行的程序都是进程.
Linux系统中包括交互进程和批处理进程.
交互进程是由Shell控制和运行的,http://doc.
100lw.
com/doc/20102205cd960bafbfb38643既可以在前台运行,也可以在后台运行.
批处理进程不属于某个终端,被提交到一个队列中以便顺序执行.
大多数的进程都需要虚拟内存.
进程中最知名的属性就是它的进程号(ProcessIdentityNumber,PID)以其父进程号(ParentProcessID,PPID).
PID、PPID都是非零正整数.
一个PID唯一地标识一个进程.
一个进程创建新进程称为创建了子进程(ChildProcess),创建子进程的进程称为父进程.
所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫做init进程,是内核自举后第一个启动的进程.
Init进程的作用是扮演终结父进程的角色.
因为init进程永远不会被终止,所以系统总是确信它的存在,并在必要时以它为参照.
如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况.
此时那些失去了父进程的子进程就都会以init作为其父进程.
通过执行ps-af命令,可以列出许多父进程ID为1的进程.
Linux提供了一条pstree命令,允许用户查看系统内正在运行的各个进程之间的继承关系.
直接在命令行输入pstree,程序会以树状结构方式列出系统中正在运行的各进程之间的继承关系.
一:调度时机:[此处图片未下载成功]核中:进程自己通过系统调用schedule()或者_timeout()自愿放弃CPU,让CPU调度其他的进程.
(schedule_timeout()可以指定放弃CPU的时间)用户空间:进程通过系统调用pause()或者nanosleep()而自愿放弃CPU(.
nanosleep()也可以指定放弃CPU的时间,此外,Sleep()、Sleep_on()是库函数,不是系统调用,://doc.
100lw.
com/doc/20102205cd960bafbfb38643par最终也是通过系统调用实现放弃CPU):自愿调度:主要发生在系统从内核态返回到用户态时(即从系统空间返回到用户空间),主要发生以下几种情况:用户进程进行系统调用返回时(系统调用在系统空间中完成);中处理完成时(中断处理也是在系统空间);异常处理完成时(异常处理也在系统空间).
每次从系统空间返回到用户空间时,都会进行一次进程调度.
此外,每次时钟中断产生时,发现当前运行进程的时间片超时,也会进行一次进程调度(这也是LINUX系统中各个进程都能够得到执行的原因,否则,如果某个进程不进行系统调用,自身运行有没有异常,又不自愿放弃CPU,系统中又没有中断,则该进程会一直等到时间片用完为止).
也就是说,强制进程调度只发生在用户空间,绝对不会发生在系统空间中.
二:调度方式:"有条件可剥夺"方式.
通过以上调度时机的分析,可见,LINUX内核使用的是"有条件可剥夺"方式的进程调度,当系统运行在系统空间时,是不可已被剥夺的,但是,一旦系统从系统空间返回返回到用户空间时,当前进程就有可能被剥夺CPU的占用权.
三:调度策略:"以进程各自的优先级和调度策略"为基础的调度策略.
:总的调度策略:系统会根据每个进程的优先级和它所采用的调度策略,通过某种算法计算出各个进程的一个运行"权值",系统每次调度时,就根据这个权值进行调度,权值最高的,最先被调度.
但是,这个权值并不是一成不变的,而是随着被执行进程执行的时间而递减,这样,原来权值较低的进程也可以有机会得到执行(保证进程调度的"公正"性).
当所有进程的权值都减小到0时(注意:如果有线程采用下面将要提到的SCHED_FIFO或者,_RR调度策略,则不可能所有进程的权值都变成0,至少采用这两种调度策略的进程的权值最少会保持1000),系统就会重新计算一次所有进程的权值,再次重复上述调度过程.
://doc.
100lw.
com/doc/20102205cd960bafbfb38643par:进程自己的调度策略:为适应不同的需要,LINUX内核设计了三种不同的进程调度政策:_FIFO--------适用于对时间性要求比较强,而且每次运行时所用的时间比较短,实时应用程序适合这种策略.
_RR-RR"是RoundRobin(轮流)的意思,适合程序比较大,每次运行都需要花费很长时间的进程.
_OTHER------传统的调度策略,适用于交互式得分时应用此外,各个进程可以通过系统调用sched_setscheduler()设置自己的调度策略.
四:通过以上对LINUX进程调度策略的分析,可以得出这种调度策略不能保证实时性要求,所以需要打个所谓的实时补丁包.
但是,在目前不能改变调度策略的情况下,要想提高实时性,可以采取以下措施::将CPU时间片划分的小一些.
这样做的弊端是进程调度会很频繁,增加因为进程调度而花费的开销.
:实时进程采用高的优先级(1—99).
:实时进程采用SCHED_FIFO的调度策略,但其中要又sleep()等类似的操作.
内存管理进程是运行于虚拟地址空间的一个程序.
可以说,任何在Linux系统下运行的程序都是进程.
Linux系统中包括交互进程和批处理进程.
交互进程是由Shell控制和运行的,既可以在前台运行,也可以在后台运行.
批处理进程不属于某个终端,被提交到一个队列中以便顺序执行.
大多数的进程都需要虚拟内存.
存储管理子系统是操作系统中最重要的组成部分之一.
在早期计算时代,由于人们所需要的内存数目远远大于物理内存,因此设计出了各种各样的策略来解决此问题,其中最成功的就是虚拟内存技术,它使得系统中有限的物理内存竞争进程所需内存空间得到满足.
虚拟内存通过在各个进程之间共享内存,而使系统看起来有多于实际内存的内存容量.
Linux支持虚拟内存,就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大.
http://doc.
100lw.
com/doc/20102205cd960bafbfb38643核心把当前不用的内存块存到硬盘,腾出内存给其它目的.
当原来的内容又要使用时,再读回内存.

运行于Linux的程序只看到大量的可用内存,而不关心哪部分在磁盘上.
当然,读写硬盘比真的内存慢(大约慢千倍),所以程序运行较慢.
用做虚拟内存的这部分硬盘叫对换空间.
虚拟内存技术不仅仅让我们可以使用更多的内存,它还提供了下面这些功能:.
巨大的寻址空间:操作系统让系统看上去有比实际内存大得多的内存空间.
虚拟内存可以是系统中实际物理空间的许多倍.
每个进程运行在其独立的虚拟地址空间中,这些虚拟空间相互之间都完全隔离开来,所以进程间不会互相影响.
同时,硬件虚拟内存机构可以将内存的某些区域设置成不可写,这样可以保护代码与数据不会受恶意程序的干扰.
.
公平的物理内存分配:内存管理子系统允许系统中每个运行的进程公平地共享系统中的物理内存.
.
共享虚拟内存:尽管虚拟内存允许进程有其独立的虚拟地址空间,但有时也需要在进程之间共享内存.
例如,有可能系统中有几个进程同时运行BASH命令外壳程序.
为了避免在每个进程的虚拟内存空间内都存在BASH程序的拷贝,较好的解决办法是系统物理内存中只存在一份BASH的拷贝,并在多个进程间共享.
动态库则是另外一种进程间共享执行代码的方式.
共享内存可用来作为进程间通信(IPC)的手段,多个进程通过共享内存来交换信息.
Linux支持SYSTEMV的共享内存IPC机制.
.
进程的保护:系统中的每一个进程都有自己的虚拟地址空间.
这些虚拟地址空间是完全分开的,这样一个进程的运行不会影响其它进程,并且硬件上的虚拟内存机制是被保护的,内存不能被写入.
这样可以防止迷失的应用程序覆盖代码的数据.

.
Linux虚拟内存实现机制:Linux虚拟内存的实现需要6种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制和内存共享机制.
内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址.
当用户程序运行时,如果发现程序中要用的虚地址没有对应的物理内存,就发出了请求页要求.
如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收)http://doc.
100lw.
com/doc/20102205cd960bafbfb38643,并把正在使用的物理页记录在缓存中(使用了缓存机制).
如果没有足够的内存可供分配,那么就调用交换机制;腾出一部分内存.
另外,在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中,也要修改页表来映射文件地址.
.
虚拟内存容量设定:也许有人说,虚拟内存容量的设定应该分配2倍于物理内存,但这只是个规律.
如果物理内存比较小,可以这样设定.
如果有256MB物理内存或更多的话,就可以缩小虚拟内存.
Linux会把大量的内存用做Cache,但在资源紧张时会收回.
只要看到swap为0,或者该数很小就可以放心了,内存放着不用才是最大的浪费.
内存泄露和回收内存的方法.
内存泄漏的定义:一般常说的内存泄漏是指堆内存的泄漏.
堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存.
应用程序一般使用malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块.
否则,这块内存就不能被再次使用,我们就说这块内存泄漏了.
.
内存泄露的危害:从用户使用程序的角度来看,内存泄漏本身不会产生什么危害.
作为一般的用户,根本感觉不到内存泄漏的存在.
真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存.
从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积.
而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到.
存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降.
对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用.
.
内存泄露的检测和回收:对于内存溢出之类的麻烦,大家可能在编写指针比较多的复杂程序时就会遇到.
在Linux或Unix下,C和C语言是最常使用的工具.
但是C程序缺乏相应的手段来检测内存信息,只能使用top指令观察进程的动态内存总额.
而且程序退出时,我们无法获知任何内存泄漏信息.
使用Linux命令回收内存,可以使用ps、khttp://doc.
100lw.
com/doc/20102205cd960bafbfb38643ill两个命令检测内存使用情况和进行回收.
在使用超级用户权限时使用命令"ps",它会列出所有正在运行的程序名称和对应的进程号(PID).
kill命令的工作原理是向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID).
结语:Linux进程中最知名的属性就是它的进程号(ProcessIdentityNumber,PID)以其父进程号(ParentProcessID,PPID).
PID、PPID都是非零正整数.
一个PID唯一地标识一个进程.
一个进程创建新进程称为创建了子进程(ChildProcess),创建子进程的进程称为父进程.
所有进程追溯其祖先最终都会落到进程号为1的进程身上,这个进程叫做init进程,是内核自举后第一个启动的进程.
Init进程的作用是扮演终结父进程的角色.
因为init进程永远不会被终止,所以系统总是确信它的存在,并在必要时以它为参照.
如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况.
此时那些失去了父进程的子进程就都会以init作为其父进程.
通过执行ps-af命令,可以列出许多父进程ID为1的进程.
Linux提供了一条pstree命令,允许用户查看系统内正在运行的各个进程之间的继承关系.
直接在命令行输入pstree,程序会以树状结构方式列出系统中正在运行的各进程之间的继承关系.

参考文献:[1]徐英慧,马忠梅,王磊,王琳.
ARM9嵌入式系统设计[M].
北京:北京航天航空大学出版社,2007.
[2]熊茂华,杨振伦.
ARM9嵌入式系统设计与开发应用[M].
北京:清华大学出版社,2008.
[3]耿德根,宋建国,马潮,等.
AVR高速嵌入式单片机原理与应用[M].
北京:北京航天航空大学出版社,2001.
[4]张琴琴,兰金虎,孙勇.
基于I2C总线的ZLG7290与AVR单片机接口技术及应用[J].
仪表技术与传感器.
2005,9(41).
[5]敖锋.
ZLG7290在人机接口中的应用[J].
甘肃科技纵横.
2007,36(3).
文档下载网是专业的免费文档搜索与下载网站,提供行业资料,考试资料,教学课件,学术论文,技术资料,研究报告,工作范文,资格考试,word文档,专业文献,应用文书,行业论文等文档搜索与文档下载,是您文档写作和查找参考资料的必备网站.

2021HawkHost老鹰主机黑色星期五虚拟主机低至3.5折 永久4.5折

老鹰主机HawkHost是个人比较喜欢的海外主机商,如果没有记错的话,大约2012年左右的时候算是比较早提供支付宝付款的主机商。当然这个主机商成立时间更早一些的,由于早期提供支付宝付款后,所以受众用户比较青睐,要知道我们早期购买海外主机是比较麻烦的,信用卡和PAYPAL还没有普及,大家可能只有银联和支付宝,很多人选择海外主机还需要代购。虽然如今很多人建站少了,而且大部分人都用云服务器。但是老鹰主机...

RackNerd美国大硬盘服务器促销:120G SSD+192TB HDD,1Gbps大带宽,月付$599,促销美国月付$服务器促销带宽

racknerd怎么样?racknerd最近发布了一些便宜美国服务器促销,包括大硬盘服务器,提供120G SSD+192TB HDD,有AMD和Intel两个选择,默认32G内存,1Gbps带宽,每个月100TB流量,5个IP地址,月付$599。价格非常便宜,需要存储服务器的朋友可以关注一下。RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新泽西机房基于KVM虚拟化的VPS、...

pacificrack7月美国便宜支持win VPS,$19.99/年,2G内存/1核/50gSSD/1T流量

pacificrack发布了7月最新vps优惠,新款促销便宜vps采用的是魔方管理,也就是PR-M系列。提一下有意思的是这次支持Windows server 2003、2008R2、2012R2、2016、2019、Windows 7、Windows 10,当然啦,常规Linux系统是必不可少的!1Gbps带宽、KVM虚拟、纯SSD raid10、自家QN机房洛杉矶数据中心...支持PayPal、...

linux查看进程为你推荐
迅雷不能登录为什么迅雷5不能登录了?主页改不了怎么改不了主页云播怎么看片云播看不了视频qq怎么发邮件如何通过QQ发送邮件qq怎么发邮件怎么发送QQ邮件开机滚动条电脑开机有滚动条的画面创维云电视功能创维新出的4K超高清健康云电视有谁用过,功能效果怎么样?lockdowndios8.1怎么激活内置卡贴ios系统ios系统有哪些版本?云挂机云软件挂机赚钱是骗子
广州服务器租用 mediafire cdn服务器 iisphpmysql 外国空间 天猫双十一秒杀 淘宝双十一2018 xfce tk域名 debian源 php空间申请 hostker 免费个人空间 免费吧 服务器干什么用的 免费智能解析 linux使用教程 新世界服务器 下载速度测试 永久免费空间 更多