打怪升级之进程与fork()函数

什么是进程?

从CPU的执行原理出发,CPU执行一项任务的流程为:取指(fetch)、译码(decode)、执行(excute)、更新。一般来说CPU还会有读取内存、写回内存、调用缓存、监控系统流水和中断系统流水等操作,但这些对理解原理没有那么重要。

最核心的CPU或者未来的某个什么东西,执行一段存储在某存储器中,由ISA指令集所描述的程序的时候,都是这个流程:取指、译码、执行、更新。

因此,进程的意思就很明显了,由于CPU是按指令顺序依序执行(流水线、并行计算暂时不讨论),进程的定义为:一个具有独立功能的程序关于某个数据集合的一次运行活动。

进程:CPU按程序计数器的顺序,读取程序内容与寄存内容按次序执行的过程。

在这里插入图片描述(图片来源为:https://gitee.com/xiaowuzxc/SparrowRV小麻雀处理器,这是一个CPU的鲜活案例)

fork()函数

fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的pc(程序计数器),相同的CPU寄存器,在父进程中使用的相同打开文件。
它不需要参数并返回一个整数值。下面是fork()返回的不同值。
负值:创建子进程失败。
零:返回到新创建的子进程。
正值:返回父进程或调用者。该值包含新创建的子进程的进程ID。

上述描述摘自:https://baike.baidu.com/item/fork/7143171?fr=aladdin

windows下的子进程实现

然而,很可惜的是,由于操作系统的历史原因,windows下没有能实现fork功能的函数(UNIX是多用户系统,WINDOWS是DOS系统)。

替代的方式可能有:CreateProcess()和CreateThread()这两种函数。

使用子进程的好处

甚至可以说是有些情况不使用子进程不行了。使用子进程的主要作用就是并行执行。同样的一串代码,可能要打开多个,相互之间的共同作用关系才能体现出来。子进程可以说是新开一个进程,任务可以转移到新的进程中去。比如网络的父进程用来接收消息,而子进程就复制在接收到消息之后展开消息,这样才不会只有一个线,一个进程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

考琪

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值