网易首页 > 网易号 > 正文 申请入驻

LINUX应用编程的核心-进程与线程

0
分享至

  

  Linux涉及的内容很多,从Bootload硬件初始化、内核编程与驱动到最后的应用编程有大量的知识点。然而前两项如果不是做芯片的,真正去涉及的会很少。因为产家几乎把这些全打包了,几乎不用自己动手,需要改动的代码少之又少。呃,好吧,没有什么太大的挑战性。今天就聊一下应用编程的进程与线程这个初学者经常混淆而带疑问的话题。

  首先要知道的是操作系统是通过“多任务”来完成工作的。这个设计思想的目的,是在一块CPU上尽最大的可能高利用CPU的时间资源,因为一个任务多数情况下是不可能一直占用CPU的处理时间,绝大多数情况下,一个任务在CPU一个时间片内是处于休眠或者就是挂起状态,多任务机制就是让一个任务没活干的时候,能让CPU去处理另一个任务,从操作者来看,就像是很多个软件或者程序在“同时”运行。其实这只是一个时间段的概念,而不是一个时间点的概念。因为人的反应时间在100ms左右,100ms内发生的所有事情,对人类来说就像是“同时”在发生了。而CPU对一条指令处理的速度,就拿单片机来说也是ns级,因此为完成一个目的的程序段,很快就执行完了。这就意味着,在它等待下次执行时,CPU还可以让完成另一个目的程序来干活。

  并发,就是在一个人类感觉在一个“时间点”上的“时间段-100ms”内连续启动多个任务。同样并行就是在一个时间段内连续运行多个任务。(但在多内核CPU上,这个倒是可以是多时间点的,不过下面都是谈单核,单核搞定还不理解多核?)

  从工控产品级嵌入式操作系统入手来谈,在这个应用里,最多的是运行在一块MCU上的实时嵌入式操作系统。前面的实时两个字决定了这种操作系统的轮询、抢占和切换速度要快,因为机器的响应时间就不是100ms了,对它来说,可能1ms就像人过1s一样,如果让一个任务在规定时间上延迟了10ms,那对机器来说,这个实时性也就完了。也因为这个原因,一个任务(TASK)的信息体量就不能太大,让操作系统能快速获得这个任务的状态从而完成状态的切换,同时一个任务占用的资源也不能太多,赶紧干完赶紧休息,让出CPU来让别的任务开始工作。

  Ubuntu和Windows这种体量的操作系统,由跑它们的芯片提供执行速度保障,而且上面要干的活那是五花八门,软件本身的数量和体量大到吓人。这种级别,就要求一个任务要有足够的信息量、有一套链表结构来支撑,从而可以可靠地完成它们的状态切换。所幸的是,它们是面对人类的,有那点些延时也是可以接受的,而且,实际使用的时候,经常出现程序卡死延时的情况,不过咱等得起而已。这就是进程了。进程用一个软件来解释,就好理解了,每打开一个软件,就相当于开了一个进程。它需要独立的地址空间、独立的栈、堆、数据等等资源。一个进程对另一个进程而言,完全是一个独立的存在。

  它嵌入式Linux是这两者体量居中的一个操作系统,主要在ARM芯片上跑,而ARM也可以认为是居于Intel CPU和MCU中间的一类芯片,但嵌入式Linux的内核与Ubuntu内核是一回事,只是说其上的文件系统体量小而已,那么每运行一个应用程序,也就相当于开了一个进程,同样它也是独立的,在父进程上打开一个子进程,这个子进程也和父进程是独立的,就算在同一个C文件定义了一个全局量,这个子进程也是完全复制到了一个新的地址空间,和它的父进程也不共享。就算把它老爸干掉,它就过继给了init进程,照样活的好好的。明白了这个,我们就可以用一个“MCU”的理念来代替它了,这就类似于在芯片上开一个进程,就像新加了一块“MCU”,每个“MCU”之间没有全局变量的概念,只有共享资源的概念,相互之间可以通过”共享文件或数据空间”来交换数据,或者通过IPC系统(internal process communication)来互通。但这个“MCU”需要注意的是,它是一段运行中的程序,因此因为这一块物理芯片的原因,是不能同时让这些“MCU”在一个时间点上工作,只能一个个来,在一个时间段内交替共作,从而达到几个MCU”同时“的效果。

  现在问题又来了,随着物理芯片处理速度进一步提高,突然发现,“MCU”工作的时候,也不是单一的任务,可能也有由几个目的小任务组成,例如读一串数据,保存然后处理,接着再读,再保存,再处理。那是不是可以拆成三部份,在保存的时候又可以去读下一段,处理的时候又可以去保存下一段等等,通过消息机制或周期来控制,这样保存完了,在等待上一段数据处理完成的时候,先去读下段数据。这样CPU不就又可以被压榨了(就像苦逼的嵌入式工程师)。于是,线程的概念就出来了,这就相当于上面提到的MCU的任务,我们知道嵌入式操作系统的任务是同时占有MCU所有资源的,有着全局变量、内部消息机制、硬件接口等等,那么线程的数据也就可以是全局的,消息机制也是内部的,占用同样的其它资源,因为它们同属于一个进程,有着同样的地址空间、栈、堆、数据空间和进程申请到的其它资源。

  现在就清楚进程和线程的概念了吧,首先在一块物理芯片上申请多个独立资源的进程,让它们在一个时间段内,一个休息另一个就干活,交替完成不同的目的。再在进程里进一步细分出线程,在一个时间段内,一个休息另一个就干活,交替工作实现进程的同一个目的。进程就是生产不同产品的多个车间,线程就是同一个车间里的不同工人,和现实的区别在于,CPU的时间片让这些工人到车间看起来是在同一个时间工作而已。把CPU时间片利用到极致,就是操作系统核心目的所在,通过这次的理解,LINUX应用编程的架构知道怎么设计了么

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐

副市长6年嫖娼200次,嫖资60万,只找学生和模特…

平顶山微友圈
2020-12-05 13:52:13

燕郊首尔甜城涉嫌虚假宣传,北漂花百万买层高1.4米“缩水公寓”

时代周报
2020-12-04 10:45:27

方清平酒店被抓,罪名是妄议,本人强势回击,网友:好样的

走川西游天下
2020-12-05 13:59:53

魔都版“回家的诱惑”?女子与丈夫好友谈婚论嫁,好友:难怪眼熟,原来是嫂子…

新闻坊
2020-12-05 14:24:42

飞机坠毁,中国痛失科研巨星!他的离去让人痛心

华人星光
2020-12-05 09:51:58

NASA局长:中国嫦娥就是笑话,技术不如我50年前,中国:你认真看

奇趣怪事哉
2020-12-05 15:33:25

迪拜王妃花4千万出轨鲜肉保镖两年,70岁酋长亲自飞英国捉奸

世界你好
2020-12-05 08:36:24

盘点中国8位好色女贪官!主动献身、日后提拔、获得晋升…

平顶山微友圈
2020-12-05 00:03:02

“乡村女神”上位记

书房记
2020-12-02 03:34:36

感动!无锡84岁老奶奶跳入冰河中……

江南晚报
2020-12-05 00:34:26

拜登:我愿意和克林顿、小布什、奥巴马一样公开接种疫苗

观察者网
2020-12-05 09:43:23

禽兽不如!女子新婚夜遭婆家人强制验身,过程被拍下发到网上

韧小白
2020-12-05 11:29:09

走进快递站9秒后,她被诋毁成“荡妇”:谣言的悲剧,始于放纵

五彩斑斓的世界
2020-12-05 02:32:17

陈婷:连生3个孩子才拿下张艺谋,一路走来有泪水

名人家事情事
2020-12-04 19:05:41

北漂女艺人:为了挤进娱乐圈拍戏,我要爬上10张床…

南叔说事
2020-12-04 18:00:55

安徽望江17岁女生跳河自尽 知情者:跳河前一天,她在附近徘徊了一个小时

红星新闻
2020-12-05 01:12:29

HK空姐下海照流出,明码标价,支付宝收钱!

斗城表里如一
2020-12-05 10:00:32

锋菲陷七年之痒?谢霆锋被曝已和公司坦白,拒绝给王菲挽回余地

初尧录
2020-12-05 07:15:02

中科院研究员澄清5nm光刻机技术为误读,国产水平在180nm

AI财经社
2020-12-04 18:23:59

中国四代航发连续炸机,副总工:七成管理体制落后,三成技术落后

候知健
2020-12-05 13:40:19
2020-12-05 17:00:59
孙聪谈娱乐
孙聪谈娱乐
娱乐资讯
2426文章数 1309粉丝数
往期回顾 全部

科技要闻

NASA月球探测器拍摄到嫦娥五号 照片可见轮廓

头条要闻

四川女子菲律宾失联或遇害 家人称其账户内钱被转空

头条要闻

四川女子菲律宾失联或遇害 家人称其账户内钱被转空

体育要闻

恒大官方:郑智出任俱乐部总经理 高寒不再任总经理

娱乐要闻

紫霞仙子变女王 朱茵风情万种韵味足

财经要闻

汽车要闻

小鹏第二代飞行汽车曝光:将明年Q4开放试飞

态度原创

健康
亲子
艺术
时尚
家居

打玻尿酸变“僵尸脸”咋回事?

亲子要闻

6岁孩子近视600度!你还让电子产品当保姆吗?

艺术要闻

10座逃离城市的“解忧”美术馆

王耀庆恶搞GQ封面 演技感人

家居要闻

72岁清洁工月入8500块住蜗居 厕所厨房挤在一起