理解操作系统的进程的概念就如吃饭一样简单

来源:互联网 发布:侧田 情歌 知乎 编辑:程序博客网 时间:2024/04/25 22:01






进程作为操作系统基础,想要学好操作系统的理论知识,首先要掌握进程的概念。进程的理解可以抽象的思维来理解,也可以直接去挖掘 Linux 的源码来看看林纳斯大神是怎么用数据结构来描述进程的。对于大部分初学者而言,去看操作系统的源码几乎是不可能看懂的,所以也就只能通过抽象理解了。


想当初我学习操作系统时尤其苦逼,看完了一整教材,仍然云里雾里。后来多看了几本书后,才发现我学习操作系统理论知识时过于求成,对于最最最基本的进程的概念没掌握的情况下去学习后续内容所得到的效果甚微。


学习操作系统理论知识,千万不能死记硬背,可以通过类比、抽象等方式来理解。接下来我以“吃饭”这样浅显的道理来形象地解释一下进程的概念。嗯,开始!



==============================================================================================




假设饭桌上有一盘菜和两份碗筷,还有两个人

并且,将这两个人类比为操作系统的两个进程



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



就绪状态:


情景: 两个人在各自的碗中装满了饭,然后拿起了筷子,意为这两个人就做好了吃饭的准备。


以操作系统的角度来看:装饭相当于进程被分配了所需的资源,然后进程进入了就绪状态。




运行状态:


情景: 两个人中某人拿起筷子夹菜往嘴里吃,往肚子里咽,这吃菜的过程就是吃饭的核心。


以操作系统的角度看:吃菜的过程相当于进程的运行状态。




阻塞状态:


情景: 两个人中,如果有一个人吃完了一碗饭,并叫来服务员点多一碗饭,在饭还没到的期间只能等待和眼睁睁看着另一个人吃得欢乐。


以操作系统的角度看:这是进程提出资源请求而处于等待或称之为阻塞状态。




进程的优先级;


情景: 如果一起吃饭的两个人中,一个是老板,一个是员工,两人都做好吃饭的准备后,那自然是老板先吃,这是不同身份之间的吃饭顺序问题。


以操作系统的角度看:如果多个进程处于就绪状态,那么优先级高的进程可以先进入运行状态。




进程与CPU:


情景: 如果把饭桌上的菜看作是CPU,两个人中有且只能有一个人可以夹菜吃,另一个人不能动筷子。


以操作系统的角度看:这是某进程某时刻占有CPU并处于运行状态。




进程的死锁:


情景: 如果把饭桌上的菜看作是某个内存空间,两个人同时夹同一条菜时不放手,导致两人都不能好好吃饭。


以操作系统的角度看:这叫做进程的死锁,互相争夺和等待对方释放资源。




进程间的通信:


情景: 如果两个吃饭在过程中不是各自闷头吃饭,而是边吃边聊天,一个问问题另一个回答。


以操作系统的角度看:聊天就相当于进程间的通信。




父子进程并发:


情景: 如果两个人是父子关系,吃饭的过程中不是儿子必须等父亲吃完再吃,而是两人同时吃。


以操作系统的角度看:这是父进程与子进程并发执行。




进程的独立性:


情景: 如果两个人互不相识,各自吃着不同的菜,当其中某人吃完后不会等待另一个人而直接结账走人。


以操作系统的角度看:进程运行完毕进程结束。另外,进程有结束自然有创建,一般在进程变为就绪状态之前都是创建状态。




处理机调度:


情景: 如果两个人吃饭,总会有一个顺序的规则,比如甲先夹菜吃然后到乙夹菜吃,如果同时夹菜吃容易引发冲突情况。


以操作系统的角度看:多个进程的执行顺序问题是用处理机调度来解决的。




设备间的并行:


情景: 如果甲和乙两个人在吃饭,有第三个人丁是一个歌手,甲乙心血来潮点歌给丁唱,然后甲乙边吃饭边看丁的才艺表演,两者同时进行。


以操作系统的角度看:这是设备的并行执行,典型的例子是cpu跟通道的并行执行。




==============================================================================================





注意,以上浅显的吃饭道理来解释系统的进程概念也是很浅显的。所以仍然需要把计算机操作系统的书籍中关于进程的几十页部分仔仔细细地深入学习。“饭桌上的进程”只能用于辅助理解操作系统的进程的概念。


如果正在学习操作系统理论知识并被各种苦涩的概念和术语困住的童鞋,可以通过这样的方式来理解和学习操作系统,以免学习过程过于无趣和枯燥。由于本文是我凭记忆来写,所以文中某些术语也许有错误,还请读者带着批判性思维来阅读本文。文中有错误之处,请不要放过我,欢迎评论。







0 0