进程表与查看进程以及系统进程(11.2.1~11.2.4)

进程表###

Linux进程表就像一个数据结构,它把当前加载在内存中的所有进程的有关信息保存在一个表中。
其中包括:进程PID,进程的状态、命令字符和其他一些ps命令输出的各类信息。
操作系统通过继承的PID对它们进行管理,这些PID是进程表的索引。
早期的进程表的长度是有限制的,所以支持同时运行的-进程也是有限的。早期的UNIX系统只能够同时运行256个进程。最新的实现版本已大幅度放宽这一限制,可以同时运行的进程数可能只与用于建立进程表项的内存容量有关,而没有具体的数字限制了。

查看进程###

ps 命令显示我们正在运行的进程,其他用用户正在运行的进程或者目前在系统上运行的所有进程。样本:


显示正在运行的进程样本

TTY 一列显示进程是从哪一个终端启动的(这里是mac,??应该是图形界面启动),TIME一列是进程目前为止所占用cpu时间,CMD一列显示启动进程所使用的命令。

默认情况下,
ps程序只显示与终端、主控制台、串行口和伪终端保持连接的进程的信息。
其他的进程在运行时不需要通过终端与用户进行通讯,它们通常都是一些系统进程,Linux用他们管理共享的资源。可以使用ps -a 查看所有进程,用-f显示进程的完整信息。

11.2.3 系统进程


查看进程的状态

STAT一列表明进程的当前状态。
STAT中常见的代码:


STAT代码
一个非常重要的命令

其他的系统里面可能显示为:1 ? Ss 0.03 init [5]
一个进程一般是由父进程来进行启动的,被父进程启动的进程是子进程。linux启动的时候会运行一个init程序,它的进程号为1。【可以将init进程看作为进程的管理器,它是其他所有进程的祖先进程】所以,其他进程要么是被init进程启动,要么是被init进程启动的其他进程启动的。
eg: 用户登录的处理过程。
init进程为每个用户用来登录的串行终端或拨号调制解调启动一次getty程序。对应的ps命令输出如下:
9619 tty2 Ss+ 0:00 /sbin/mengetty tty2
getty 进程等待来自终端的操作,向用户显示熟悉的登录提示符,然后把控制移交给登录程序,登录程序设置用户环境,最后启动一个shell。用户退出系统时,init进程将再次启动另外一个getty进程?。
启动新进程等待它们结束的能力是整个系统的基础。

11.2.4 进程调度


经常会看到有这样的一条

这表明进程2195处于运行状态(R),正在运行的命令是ps ax。(也就是这个进程出现在自己的输出结果中)[这个状态指示符只表示已准备好运行,并不意味它正在运行](在一台但处理器的计算机上,同一时间只能有一个进程可以运行,其他进程处于等待状态,每个进程轮到的运行时间(时间片)是相当短暂的),这就给我们一种多个程序在同时运行的假象。状态R+只是表示这个程序是前台任务,它不是在等待其他进程结束或等待输入输出完成。这就是为什么我们可能在ps命令的输出结果中可以看到两个这样的进程的愿意(另一个常见的标记为正在运行的继承是X显示服务器)【一个x 服务,一个是当前自己的进程】???
????但是这里还是有点不是很懂!!!

Linux内核决定了下一个时间片段该分配给哪一个进程,它的判断依据是进程的优先级(第4章讲到)【优先级高的进程运行的更加频繁,低级的就没有这么频繁】
linux中的进程的运行时间不可能超过分配给他们的时间片段,Linux上是使用抢先式多任务处理,所以,任务的挂起和继续运行是不需要彼此之间的协作。

(nice值的意思)
linux是一个多任务系统,所以进程之间可能存在竞争统一资源的问题。这种情况下,执行短期的突发性工作并暂停运行来等待输入的程序,要比持续占用处理器进行计算或不断轮询系统来查看是否有新的输入到达的程序更好。(√)表现良好的程序为nice程序,而且在某种意义上,这个nice是被计算出来的。
操作系统根据这个进程的nice值来决定它的优先级,一个进程的nice值默认是0并将根据这个程序的表现而不断变化。(长期不间断的运行的程序优先级一般比较低,eg:暂停来等待输入的程序会得到奖励), 这样就可以帮助与用户进行交互的程序保持及时的响应性。在程序等待用户输入程序的时候,系统会增加它的优先级,这样子,当他准备运行的时候,它就会有较高的优先级而能够优先执行。
[nice命令设置nice的值,是用renice命令调整他的值]若是,nice命令将进程的nice值增加10 ,就会降低该进程的优先级。ps -l 或者-f查看nice值。


NI这一列就是nice值

若是使用下面命令启动:
nice oclock &
它将会被分配到+10的nice值。


下面运行命令的结果

上图可以查看到对应的nice的值都会增加10,这个是时钟程序就不会运行得那么频繁了。状态栏(S列)含有N表示这个进程的nice值已经被修改了(不是默认值了)
PPID 为父进程的ID,它是启动这个进程的PID,如果原来的进程已经不存在了,该栏就显示为init进程的进程ID(PID=1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,593评论 9 467
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,173评论 0 23
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 心灵把手:自媒体人了了原创情感分享类公众号,让你成为更对更好的那个人。 最近,因为工作繁重,导致之前的腰疾发作,和...
    心灵把手阅读 301评论 0 0