关于进程

关于进程

进程是个什么东西?简单的来说就是执行程序的动态过程,就是运动中的程序。同时也是系统分配资源的基本单位。而每个进程的“标识符”就是其PID了。其有多种状态

运行状态,可中断等待状态,不可中断等待状态,僵尸状态,和停止状态。


对于进程的控制也有多个函数,讲讲fork吧。

fork函数其作用就是在本进程下创建一个子进程。并且同时对父进程的数据进行写实拷贝(当只是对其读时,所用的是与父进程相同的一段数据,当对数据进行修改时,对其修改的数据进程拷贝),因此能够实现两个进程其互不影响。

但在执行的情况下其又会互相占用cpu,因为cpu在一个时间片只能够执行一个进程。这时候我们也许会有疑问,如果cpu在一个时间里只能执行一个进程的话,那我们平常为什么能够同时运行多个进程呢,例如我们在上网看视频的时候能够上QQ,玩游戏,听音乐呢。这些不都是在同一时间下实现的吗?答案当然并非如此,我们在实现上述情况的时候其实他们并不是同时运行的。他们其实是一个时间片一个时间片分别单独运行。


正如上图,其通过内核的调度算法,然后对一个个进程通过不同的优先级识别,分别单独进行。而在同一个时间段内同时执行的进程我们称之为并行。

当然上面所述的全部都是在单核处理器下运行的结果。而我们现在所用到的都不只只有单核了,大部分的电脑都是多核的cpu处理器,这就能够大大的提升机器的效率。如果事在单核的情况之下,我们开启多个程序,多个进程,cpu就算处理速度快但是也有个优先级之分,让很多进程处于等待状态。这在我们用户眼里就是一个字“卡”。多核的话就能够支持多个进程在同一时刻分别运行,互不干扰。这就是所谓的并行了。

这时候我就会有一个疑问:为什么fork函数所创建进程和父进程要有个先后执行之分。既然我们都能够同时运行,效率不是更高吗。当我们fork出一个子进程。父子同时在cpu多核的情况下跑的话。如果父进程先与子进程结束,其会被init进程收养,但其不会变成僵尸,因为只要init的子进程终止,init就会调用一个wait函数取得其终止状态。这样也就防止了在程序中有很多僵死进程。也许是因为当时的硬件环境下只有单核处理器,所以不得不有个先后顺序,当然 这也只是我的猜测而已。

分类: 读书笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值