Linux 进程:理解进程和pcb

一、进程的概念

什么是进程?

 进程就是进行中的程序,即运行中的应用程序。比如:电脑上打开的LOL、QQ…… 这些都是一个个的进程。

什么是应用程序?

 应用程序就是程序员写的代码,在应用程序还没有运行的时候,这些代码就是一堆存储在硬盘里的机器指令

应用程序是怎么运行的?

 操作系统将程序的代码(也就是机器指令)从硬盘加载到内存中,然后CPU从代码的指定位置开始进行处理,这样一个程序就开始运行了,进程也就产生了。

二、CPU分时机制

要了解程序的并发与并行,首先要了解CPU的分时机制。

什么是CPU的分时机制?

  单核CPU只有一个核心,一个核心意味着在一段时间内只有一个程序可以运行,也就是说,QQ和LOL不能同时运行。那如果我们想一边玩LOL,一边聊QQ,岂不是实现不了?但我们现在并没有遇到这样的情况,我们可以一边打游戏,一边聊QQ,同时还可以听歌。这是因为CPU的分时机制,正因为有了分时机制,我们才可以实现多个程序一起运行。

CPU的分时机制:

  每个程序运行一小段时间(即一个时间片),然后换下一个程序运行,以此类推。但是,CPU的运行速度很快,所以我们在使用的时候感觉不到程序是在切换运行,而是感觉多个程序同时在运行。这是因为有分时机制,才让我们可以一起运行多个程序。

三、并发与并行

并发与并行都是用来形容多个程序一起运行的,但是它们的差别很大。

1.并发

并发:多个程序在同一个时间段一起运行。

  一个核心在同一时间点只能处理一个程序,但是我们又不可能等程序A全部执行完才能执行程序B。如果我们现在使用电脑时,运行完QQ后,才可以运行LOL,想必大家会很难受的。因此程序是轮流运行的,在同一个时间段,可以让QQ和LOL轮流运行,一个程序运行一小会,这就是分时机制。因为CPU的处理速度非常快,所以我们其实感觉不到程序在轮流运行,给我们的感觉就像是同时运行。

  如图,一个箭头代表只有一个核心,在A时间到B时间这个时间段,由于CPU的分时机制,三道程序轮流运行,这就是并发。

并发

2.并行

并行:多个程序在同一个时间点一起处理。

  一个核心在一个时间点只能处理一个程序,如果有多个核心,那么就可以每个核心都运行一个程序,这样就实现了多个程序在同一时间点一起处理。

  如图,有三个核心,在A时间点,三个核心同时运行三道程序,这就是并行。
并行

四、pcb的概念

pcb的产生其实就是因为CPU的分时机制,接下来先看看关于CPU分时机制的一点疑惑。

(1)对CPU分时机制的疑问:

  如果此时有两个进程在运行(LOL和QQ),LOL运行完一个时间片后,接下来该QQ来运行下一个时间片,QQ运行完后又轮到LOL。问题来了,当QQ第二次运行的时候,怎么知道它上次运行到了哪里?怎么知道接下来从哪里开始运行?这就是对于CPU分时机制的疑问。

(2)对CPU分时机制疑问的解决:

  为了解决上述问题,操作系统就要对运行中的程序(即进程)进行一些描述:描述LOL在上个时间片用完的时候运行到了哪里?上个时间片用完的时候LOL的运算数据保存在哪里?下一个时间片应该从哪里开始运行?LOL程序存在于内存中的哪个位置?等等诸多信息。因为如果不知道这些数据,那么等到下一次再运行LOL的时候,怎么知道该从哪里继续运行呢。

(3)什么是pcb?

  pcb(进程控制块)的作用就是保存程序运行时的信息(也就是进程信息),在Linux中pcb就是task_struct结构体,结构体里面就记录了这个进程的各个信息,里面记录的描述信息有:内存指针,上下文数据,程序计数器,进程状态,IO信息,记账信息等。通过这些信息使得下一次轮到这个进程运行的时候,程序可以正常进行。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值