文档章节

Swoole入门(5)☞进程相关知识

ali安东尼
 ali安东尼
发布于 2017/09/13 16:05
字数 700
阅读 14
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

###什么是进程?什么是上下文、上下文切换?

进程包含三个要素:

1.一个可执行的程序。

2.和该进程相关的数据;包括变量、内存空间、缓冲区等。

3.程序的执行上下文。

【总结】:

1.进程就是一个可执行程序的一次执行过程中的一个状态。

2.系统中有个进程表,进程表中的每一项记录了每个进程当前的状态,方便系统的管理。

什么是上下文?

上下文可以理解为当时的环境,环境可以包括当时程序状态以及变量的状态

什么是上下文切换?

上下文切换(Context Switch)是一种将CPU资源从一个进程分配给另一个进程的机制之前,会保存现场环境,大概就是保存当前进程的状态(寄存器值,内存空间指针,相关文件的操作),然后再把资源分配到其他进程,等下次该进程获得了cpu时间的时候再恢复现场,大概就是恢复该进程保存的状态,保证进程的正常运行。

从用户角度看,计算机能够并行运行多个进程,这恰恰是操作系统通过快速上下文切换造成的结果。

###示例代码

    #include <unistd.h>     #include <sys/types.h>          main(){         pid_t pid;         pid = fork();              if(pid < 0){             printf("error fork");         }else if(pid ==0){             printf("I am chlid process, my process id is /d\n", getpid());         }else{             printf("I am parent process, my process id is /d\n", getpid())         }          }

代码输出

    I am chlid process, my process id is 5886     I am parent process, my process id is 5887

代码讲解

当程序执行到pid = fork();时候,操作系统会创建一个子进程,并在进程表中添加相应数据项。

该进程和父进程的可执行程序是同一个程序;上下文数据,代码,变量都是原父进程的拷贝;但他们是相互独立的进程。正如fork的原意:分叉,从此这两个进程就分道扬镳了,分别做不一样的工作,实现不同的业务逻辑,不过两个进程一直同时在运行中。

父进程继续执行,系统执行pid = fork();后返回pid,发现pid大于0,就输出了I am parent process, my process id is 5887

随后子进程再某个时候被执行到,系统执行pid = fork();后返回pid,发现pid等于0,就输出了I am chlid process, my process id is 5886。这里需要注意的是该进程不是父进程了,虽然是同一个程序,但是是同一个程序的另外一次执行,执行者是子进程。

由睿江云人员提供,想了解更多,请登陆www.eflycloud.com

ali安东尼
粉丝 3
博文 192
码字总数 173101
作品 0
广州
私信 提问
加载中
请先登录后再评论。
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
WebUI自动化测试框架--Dagger

Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子...

ChenKan
2013/03/05
2.8W
6
高效 Java Web 开发框架--JessMA

JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截...

伤神小怪兽
2012/11/13
9.1K
3
.NET开源独立博客程序--小泥鳅

小泥鳅创建于2008年夏天,基于.Net平台开发,拥有完整的文章发布,评论,订阅,标签等功能,满足个人/团队信息发布需求,可作为Blog,CMS,甚至建企业站。 小泥鳅采用了 NVelocity,CKEdito...

小伟伟
2012/11/26
4.1K
0
uWSGI轻量级项目--Wheatserver

Wheatserver来自于构造一个开源的uWSGI轻量级的项目,但随着项目发展,可插拔式的工程构建使得发展为通用应用服务器,分离的模块使得极易构造出适合的应用环境。通过Wheatserver,我们构建出...

yuyuyu101
2013/04/14
610
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在TextView中将文本水平和垂直居中? - How do I center text horizontally and vertically in a TextView?

问题: 如何在TextView水平和垂直居中放置文本,以使其准确显示在Android TextView的中间? 解决方案: 参考一: https://stackoom.com/question/1oOL/如何在TextView中将文本水平和垂直居中...

javail
今天
19
0
在新标签页(而不是新窗口)中打开URL - Open a URL in a new tab (and not a new window)

问题: I'm trying to open a URL in a new tab, as opposed to a popup window. 我正在尝试在新选项卡(而不是弹出窗口)中打开URL 。 I've seen related questions where the responses wo......

富含淀粉
今天
17
0
HTML中id属性的有效值是什么? - What are valid values for the id attribute in HTML?

问题: 为HTML元素创建id属性时,该值有哪些规则? 解决方案: 参考一: https://stackoom.com/question/IMN/HTML中id属性的有效值是什么 参考二: https://oldbug.net/q/IMN/What-are-vali...

法国红酒甜
今天
25
0
mysql innodb 可重复 幻读问题

1 mvcc 解决快照读幻读 2 GAP 锁解决 当前读幻读 (insert时 插入意向锁会等待GAP锁)

yzzzzzzzz
今天
25
0
画风清奇,用开源机器人项目实现“云毕业典礼”

本文作者:o****0 前几天,南京邮电大学的一场毕业典礼引起了吃瓜群众的热议,先来看看这个画风: 由于疫情原因,很多高校的学生只能在家里通过线上视频的方式完成毕业论文答辩。答辩通过后,...

百度开发者中心
07/31
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部