Linux 之 进程管理 -- 进程的定义和linux多人多任务环境

~~~~~~猫毛要开启疯狂写文章模式~~~~~~
前段时间简书不能发表文章可是把毛给憋坏了,希望同伴们多多留言点赞,这样猫毛才会更加有动力!!!

1 理解“什么是进程”(process)

当一个程序被加载到内存当中运作,那么在内存内的那个数据就被称为进程(process)。进程是操作系统上面非常重要的概念,所有系统上面跑的数据都会以进程的型态存在。

1.1 理解PID的定义

触发任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据启发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设定。从此以后,这个PID能够在系统上面进行的动作,就与这个PID的权限有关了!


程序被加载成为进程以及相关数据的示意图

如图所示例,程序一般是放置在实体磁盘中(用windows的话来说就是D盘、E盘...),然后透过用户的执行来触发。触发后会加载到内存中成为一个个体,那就是进程。为了操作系统可管理这个进程,因此进程有给予执行者的权限/属性等参数,并包括程序所需要的脚本与数据或文件数据等,最后再给予一个PID。系统就是通过这个PID来判断该process是否具有权限进行工作的。

小总结:进程其实就是在计算机内存中运作的程序。

不过,linux是怎么为每一个bash设置不同权限的?如果人来做岂不是太烧脑了?😂

当我们登入并执行bash时,系统已经给我们一个PID了,这个PID就是依据登陆者的UID/GID(/etc/passward)来的。我们知道/bin/bash是一个程序,当dmtsai登入后,他取得一个PID号码为2234的进程,这个进程的User/Group都是dmtsai,而当这个程序进行其他作业时,例如执行touch命令时,那么由这个进程衍生出来的其他进程在一般状态下,也会沿用这个进程的相关权限的。

程序与进程之间的差

这里将程序与进程做个总结:
程序(program):通常为binary program,放置在储存媒体中(如硬盘,光盘),为实体文件的型态存在
进程(process):程序被触发后,执行者的权限与属性、程序的代码与所需数据等都会被加载内存中,操作系统并给予这个内存内的单元一个标识符(PID),可以说,进程就是一个正在运作中的程序。

1.2 子进程与父进程

当我们登入系统后,会取得一个bash的shell,然后,我们用这个bash提供的接口去执行另一个指令,例如/user/bin/passwd或者是touch等等,那些另外执行的指令也会被触发成为PID。那个后来执行指令才产生的PID就是子进程,而在我们原本的bash环境下,就称为父进程

进程相关系之示意图

因为每个进程都有一个PID,那某个进程的父进程是怎么判断的?实际上,通过Parent PID(PPID)就可以判断。我们在之前环境变量部分提到过环境变量的继承问题,子进程可以取得父进程的环境变量。
例如,在你的命令行中输入 ps -l查询你当前的进程信息,这里用鸟哥的例子
ps -l 输出的进程相关信息

在图中我们可以看到第一个bash的PID与第二个bash的PPID都是13928,因此就可以判断第一个bash是第二个的父程序。

有朋友会常常发现,明明将有问题的进程关闭了,怎么过一阵子又自动产生?而且新产生的那个进程的PID和原先的还不一样。这是怎么回事?不要怀疑,如果不是crontab工作排程的影响,肯定有一支父进程存在,所以你杀掉子进程后,父进程就会主动再生一支,因此要找出父进程,然后将它删除掉。

1.3 fork and exec 进程呼叫的流程

其实,子进程与父进程之间的关系还挺复杂的,最大的复杂点在于进程互相之间的呼叫。在Linux的进程呼叫通常称为 fork-and-exec的流程!
进程都会藉由父进程以复制(fork)的方式产生一个一模一样的子进程,然后被复制出来的子进程再以exec的方式来执行实际要进行的程序,最终就成为一个子进程的存在。


进程使用fork and exec 呼叫的情况示意图

1.4 了解常驻在内存的进程(daemon)

我们之前学的一些指令例如:ls/mv/cp等等都是执行完就结束了,也就是说,该项指令被触发后所产生的PID很快就会终止。那有没有一直在执行的进程呢?
我们知道系统每分钟都会去扫描/etc/crontab以及相关的配置文件,来进行工作排程。而这个工作排程就是crond这个程序所管理的,我们将他启动在背景当中一直持续不断的运作,也就是说“常驻在内存中的进程”。
常驻在内存中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序就会被我们称为服务(daemon)。系统的服务非常多,不过主要大致分成系统本身所需要的服务,例如刚提到的crond及atd,还有rsyslogd等等的。还有一些则是负责网络联机的服务,例如Apache,named,postfix,vsftpd...等等的。这些网络服务比较有趣的地方,在于这些程序被执行后,他会启动一个可以负责网络监听的端口(prot),以提供外部客户端(client)的联机要求。

以crontab来说,他的主要执行程序名称应该是cron或at才对,为什么要在最后加d?是因为Linux希望我们可以简单的判断该程序是否为daemon,所以,一般daemon类型的程序都会加上d在文件名后头,包括服务器篇我们会看到的httpd,vsftpd等等都是。

2. Linux 的多人多任务环境

通过前面的学习,我们现在知道了,其实在Linux系统底下执行一个指令时,系统会将相关的权限、属性、程序代码与数据等均加载内存,并给予这个单元一个进程标识符(PID),最终该指令可以进行的任务则与这个PID的权限有关。这也就是为什么Linux这么多用户,但是却每个人都可以拥有自己的环境。

  • 多人环境:除了root之外,其他人都必须要受一些限制,而每个人进入Linux的环境设定都可以随着每个人的喜好设定(~/.bashrc)
  • 多任务行为:
    目前的CPU速度可高达几个GHz,这代表CPU每秒钟可以运作10的9次方这么多次指令。我们的Linux可以让CPU在各个工作间进行切换,其实每个工作都仅占去CPU的几个指令次数,所以CPU每秒就能够在各个进程之间进行切换啦。

CPU切换进程的工作,与这些工作进入到CPU运作的排程(CPU排程,非rontab排程)会影响到系统的整体效能!目前Linux使用的多任务切换行为是一个非常棒的机制,几乎可以将PC的性能整个压榨出来。由于效能非常好,因此当多人同时登入系统时,其实会感受到整部主机好像就是为了你存在一般。这就是多人多任务的环境。

2.1 多重登入环境的七个基本终端窗口

在Linux当中,默认提供了六个文字界面登入窗口以及一个图形界面,你可以使用[Alt]+[F1].....[F7]来切换不同的终端机界面,而且每个终端机界面的登陆者还可以不同人。其实,这也是多任务环境下所产生的一个情况,我们的Linux默认会启动六个终端机登入环境的程序,所以我们就会有六个终端机接口。

举例:六个终端机接口的好处
进行特殊的进程管理
Linux几乎可以说绝对不会当机的。因为他可以在任何时候,将某个被困住的进程杀掉,然后再重新执行进程而不用重新启动。如果我在Linux以下文字界面登入,在屏幕当中显示错误讯息后就挂了:动都不能动,如何是好?这个时候默认的七个窗口就榜上忙了,可以随意切换到其他的终端机界面,然后以ps-aux找出刚刚的错误进程,然后给他kill一下,回到刚刚的终端机界面,又恢复正常了。

2.2 单一bash接口下进行多个工作 &

其实,我们登入bash之后,就是取得一个名为bash的PID了,而在这个环境底下所执行的其他命令,就几乎都是所谓的子进程了。那么,在这个单一的bash接口下,我可不可以进行多个工作?当然可以,(使用&)
eg: cp file1 file2 &在这串指令中,重点放在&的功能,他表示将file1这个文件复制为file2,且放置于背景中执行,也就是说执行这个命令之后,在这个终端接口仍然可以做其他工作。而当cp file1 file2指令执行完毕之后,系统会在你的终端接口显示完成的消息。

多人多任务的系统资源分配问题考虑
多人多任务确实又很多的好处,但其实也有管理上的困扰,因为使用者越来越多,将导致管理的困扰。另外,由于使用者日盛,CPU的运算与RAM的大小可能就会不敷使用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 文/tangsl(简书作者) 原文链接:http://www.jianshu.com/p/2b993a4b913e...
    西葫芦炒胖子阅读 3,731评论 0 5
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,077评论 0 23
  • 技术交流QQ群:1027579432,欢迎你的加入! 一、概念的理解 首先程序与进程是什么?程序与进程又有什么区别...
    CurryCoder阅读 2,015评论 0 5
  • 这本书主要写的是自律和爱。 一自律:不自律的表现 1:拖延时间,希望问题自动消失。 2:对问题视而不见,假装 ...
    杜书晓阅读 151评论 0 0
  • 语言很暴力 语言很无力 语言很难懂 语言很平淡 语言太麻烦 不如画画 不如唱歌 不如写诗
    天野丢阅读 140评论 0 0