什么是进程?

我尽量用通俗的语言解释什么是进程。

先来个定义:

我们把一个运行中的程序就叫做进程。

这句话很短很抽象。往往对这种比较抽象的东西,不如来描述一下,他是用来干啥的,有啥特性大家就意会了。

如此一来,我们便经常听到这样的描述

“进程是操作系统中资源分配的基本单位”。

我们来分析一下这句话。

  1. 进程是谁进行资源分配的基本单位?—— 操作系统

操作系统进行资源分配只认进程,进程会不会将自己的资源细分,操作系统不管。比如我要发女朋友,只需要你告诉我需要几个就行,至于你右手几个左手几个是你的事情。

  1. 为啥要进行资源分配?

一方面是因为进程需要所以要“配”,另一方面是大家都需要所以要“分”。就好比我们每人都需要吃饭,我们就得“配”,但“分”在于每人分一份饭,不能吃别人碗里的饭(似乎也可以吃,这个例子应该换成女朋友…)。

  1. 到底分配了些啥?

首先,分了每个进程一个固定大小的虚拟内存,但是这个虚拟内存又分为,用户空间和内核空间。用户空间是每个进程独有的,但如果进程需要系统调用就要转到内核空间让内核去调,例如我们想输入输出就得让内核去做,内核空间是共享的。

就相当于,我给你们分了你需要的女朋友,但其实我没真给你,可能给了你她的联系方式,你可以和他说说话聊聊天,这个别人也不知道,这是你用户空间可以干的事情。但是一旦你想做一些厉害的操作做时(例如:输入输出)就得告诉我我帮你做 :)这就属于内核态的任务了。

通过对这句话的分析,我们知道了从操作系统层面它的作用,也就是对外的一部分。那对内呢,对内他要使程序运行起来。要有要运行的代码、需要的数据以及一些寄存器。例如,保证程序一条一条执行的程序计数器(PC)、堆栈的指针等,这部分我们通常称之为进程的上下文。不同进程内部会根据所执行的任务不同,有千奇百怪的设计,例如JVM就是一个进程,改天可以仔细聊聊它的内部结构。

我们现在依然站在一个宏观的角度看进程,进程是从哪来的?我们想一下我们不论是在桌面点程序还是在命令行运行,实际上都是操作系统来去完成了进程的创建。刚才我们虽然说了,给他分配了资源。 但如何运行起来,利用起这些资源,完成程序的任务呢?当然得靠cpu!就好像我把女朋友分你了,你也不会撩妹,就有那么一个久经情场老手一句一句的教你,他能让你们聊起来。但他是我的人,谁能被指导得我决定,所以就又涉及到了进程的调度。我们先忽略一些细节,想一个问:操作系统是如何辨别每个进程来实现对他的种种操作呢?—— 进程控制块(PCB)。

进程控制块长啥样?

操作系统如何调度?

调度时手头的活没干完咋办?

如何切换用户态和内核态?

进程和进程之间如何通信?
……

今天是一篇短文,挖了许多坑,分了许多女朋友,以后慢慢填,慢慢谈。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从前慢慢慢死了

打钱!一分也行啊!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值