你要选择哪条路?

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南 本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。 阅读详情

在我们这个世界中, 操作系统老大绝对是最神秘的,我们这些进程想和他通信,只能通过那所谓的系统调用,例如open,close, socket,connect 等等。

我对自己的一亩三分地非常熟悉,这是一个地址空间,虽说是虚拟的,但是我却并不在意。

这个地址空间被划分成若干区域:

640?wx_fmt=png

我的工作就是配合CPU阿甘去执行代码区的那些代码,代码有时候非常简单,就是把一些数字加加减减; 有时候则是复杂的函数调用,这时候“栈”就得出马,把各种调用参数入栈,出栈; 有时候会动态分配一点内存,此时我的“堆”就要大显身手了。

让我感到奇怪的是,这些代码运行起来似乎无穷无尽,很久之后我才悟出来,其实我一直在一个循环中打转,人类故意让我走不出来。

这一次我遇到了一段代码:

pid_t pid;
int count = 10;
pid = fork();
if( pid >0 ){
  count++;
  printf("Parent process\n");  
  ...其他处理...
} else if (pid==0){
   count--;
   printf("Child process\n");
   ...其他处理...
} else{
    err_exit("error occured ");
}

当我准备按照之前的方式执行的时候,我遇到了系统调用Fork先生。

这位Fork先生根本就没有理我, 在那里不停地吟唱一首诗:

一片树林里分出两条路,

而我选择了人迹更少的一条,

从此决定了我一生的道路。

我不知道他为什么如此钟情于这首诗,只得提醒道:“嗨,哥们儿,要系统调用了啊。”

他瞥了我一眼:“你要选哪条路?”

哪条路?

我看了看自己的代码,确实有三个分支, 但是走哪个分支依赖于Fork先生返回给我的结果pid啊,我没得选择。

我把自己的想法告诉他。

Fork先生开始和操作系统老大通话,过了一会儿, 告诉我:“走第一个分支。”

然后他又开始吟唱那首诗了: 一片树林里分出两条路......

过了一会儿,我又要执行这段代码了,Fork先生还是问道:“你要选哪条路?”

我估计这厮太无聊,故意没事找事,就没搭理他。

他照例和操作系统老大通话后,告诉我:“走第一个分支。”

第3次,第4次,第5次...... 每次我执行这段代码,爱吟唱的Fork先生总是说:“走第一个分支。”

每次都是走第一个分支!

这不由得引起了我的怀疑: Fork先生是不是搞错了? 我怎么永远都走不到第二个分支去呢?  那第二个分支的代码有什么用处? 人类不会这么愚蠢地写无用的代码吧?

我偷偷问CPU阿甘:“兄弟, 我的第二个分支你执行过吗?”

CPU阿甘飞快地说:“当执行过!执行过好几次呢!”

这就见鬼了,Fork先生从来没让我走过第二个分支啊。

阿甘解释说:“不是在你这里执行的,是通过你fork出来的进程执行的。”

“我fork出的进程?”

“对啊, 那个Fork先生的工作不就是创建新进程的吗?”  阿甘反问。

“创建的新进程和我有什么关系?”

“当然属于你的子进程啊, 这个子进程也有自己的一亩三分地, 但是复制了你的栈,堆和数据区,不过他和你共享了代码段。”

640?wx_fmt=png

“共享了老子的代码段? 我怎么不知道?”

“你当然不知道了喽,不过这对你也没有影响啊,那个fork调用如果创建子进程成功,给你返回的就是子进程的进程号了,给子进程返回的值就是0。”

“你就胡扯吧, 一个fork调用能返回两次? ” 我绝不相信, 这完全颠覆了我的世界观。

“信不信由你, 反正子进程创建以后,由于和你是共享了代码段,也会从pid=fork()这一行代码处开始执行,只不过子进程得到的pid是0,所以就走了第二个分支!”

640?wx_fmt=png

我现在有点理解爱吟唱的诗人Fork先生了,他的的确确是返回了两次,每个进程一次。

怪不得他整天吟唱“ 一片树林里分出两条路......” 这可不就是两条路啊,只不过我们没得选择。

我甚至能想象得出他像问我一样故意问子进程要走那条路,子进程每次都得走第二个分支。

我还注意到我的那个局部变量count = 10 ,也被复制到了子进程的栈中,很明显,子进程会把它减去1,变为9。 我这里则会加上1, 变成11, 我们两个互不影响。

我好奇地问阿甘:“我的子进程共享我的代码段,我们都执行一模一样的代码,似乎没什么意义啊!”

阿甘说:“我阅代码无数,能从无数指令中总结出你们进程的目的, 我估计你啊就是一个Web服务器程序,你就是等待客户端的请求,请求来了以后你用fork创建子进程去处理(进入了代码的另外一个分支),然后你继续等待。”

我觉得阿甘说得很有道理,可还是追问道:“要是新fork的进程确实需要执行新的程序呢?”

阿甘说道:“那就是另外一个系统调用exec了, 这位先生可以把装载新的程序,替换掉进程的代码段中的代码,重置栈,堆和数据段,一切从头开始。”

在对操作系统老大增加了几分敬畏之情的同时, 我暗自感慨,没想到创建一个新的进程,背后要发生这么多的事情啊。

(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017文章精华》


码农翻身

用故事讲述技术

640

[QMT量化交易小白入门]-七十九、增加标的后,五年回测收益率达到了2493% 本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。 阅读详情

相关推荐

保姆级教程:用Cesium的Primitive API实现火箭发射全流程动画(含代码避坑)

本文详细介绍了如何使用Cesium的Primitive API实现火箭发射全流程动画,包括模型控制、关节动画和精细时序管理。通过实战代码示例和性能优化技巧,帮助开发者高效构建高复杂度航天仿真系统,显著提升三维可视化效果与运行效率。

weixin_42565652的博客 212

InnoDB的行锁模式及加锁方法

InnoDB实现了以下两种类型的行锁。l  共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。l  排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。另外,为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB还有两种内部使用的意向锁(Intention Locks),这两种意向锁都是表锁。l  意向共享锁(IS):事

宿命 宽恕 轮回 2673

安装VMware,出现没有虚拟网络适配器的问题

安装VMware,出现没有虚拟网络适配器的问题

Young_Harry的博客 1万+

你选择走哪条路

我认为人生有两条路可选择:1 走一条别人都走过的路 即你学习一些现存的知识,现存的技术,然后为一些现存的产品工作。一日复一日,一年复一年的做着重复的工作,拿着或许客观的工资,过着还算说得过去的日子.我们把它扩展开来说就是:现存的知识,现存的技术:如:我准备在IT行业混,就学一些现存的语言,看一些别人设计的数据结构和算法。然后到一个IT公司打工,每天做着几乎相同的工作,除了代

随缘的专栏 1142

Geneformer实战:如何用Hugging Face Transformers快速搭建单细胞转录组分类模型

本文详细介绍了如何使用Geneformer和Hugging Face Transformers快速搭建单细胞转录组分类模型。通过环境准备、数据预处理、模型加载与配置、训练Pipeline构建等步骤,帮助读者掌握基于Transformer架构的单细胞数据分析技术,提升分类准确率和效率。

rl6adventurer的博客 605

RAG系统中Reranker模型选型实战

本文详细介绍了RAG系统中Reranker模型选型实战,希望能对学习RAG的同学们有所帮助。 文章目录 1. 前言 2. 思路解析 3. 测评数据集构建 3.1 步骤一 3.2 步骤二 3.3 数据示例 3.4 总结 4. 实战代码 4.1 本地模型 4.2 使用第三方的Reranker模型API

herosunly的博客 17万+

七月与安生:不管选择哪条路,都会是辛苦的 — —豆瓣老丑

女人走什么路,会不辛苦呢?这是母亲说给七月听的一句话。我想正是这句话,让此片变得深刻而纯熟。 电影看完,其实触动我的无关青春也无关爱情,不是结尾的反转,不是真假故事间的起承,而是两个女孩的人生轨迹,一如我们每个人所经历的人生。 七月活在小城,每天过着安稳如一日的生活,麻木,反复。她的生活,仿佛永远定格在银行柜台前的玻璃窗里。她安稳富足,不愁吃穿。 安生仿佛全世界地流浪,混酒吧,玩音乐,在游艇...

weixin_30781107的博客 266

20、基于图神经网络的脱氢焓预测方法研究

本文研究了基于图神经网络(GNN)的液态有机氢载体(LOHC)材料脱氢焓预测方法。通过分析现有GNN方法的局限性,提出了一种新的聚合自节点表示(AWS)方法,并结合丰富的原子特征和集成学习策略,显著提高了预测性能。实验结果表明,AWS在脱氢焓预测和多个基准化学性质预测任务中均优于现有GNN方法。此外,基于分子结构的集成方法进一步提升了模型的鲁棒性和准确性。研究展示了该方法在筛选LOHC材料中的潜力,并为未来预测更多化学性质奠定了基础。

pp12345的博客 103

人生在世只有一次,不必勉强选择自己不喜欢的路,随性而生或随性而死都没关系,不过无论选择哪条路,都不要忘记自己的初心。

人生在世只有一次,不必勉强选择自己不喜欢的路,随性而生或随性而死都没关系,不过无论选择哪条路,都不要忘记自己的初心。

609

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1729

数据资产可视化分析:PowerBI在大数据管理中的实战

目的:帮你搞懂“为什么数据资产需要可视化?”“PowerBI能帮企业解决什么问题?”,并掌握用PowerBI做大数据可视化的实战技巧。范围:覆盖数据资产定义、可视化分析原理、PowerBI核心功能(数据连接、建模、可视化)、零售企业实战案例,以及未来趋势与挑战。背景:为什么企业的数据像乱堆的玩具?核心概念:数据资产、可视化分析、PowerBI分别是什么?它们怎么配合?实战步骤:用PowerBI帮零售企业整理“销售玩具箱”,做出能指导决策的仪表盘;应用场景:不同部门怎么用这个“整理好的玩具箱”?

2501_92132293的博客 906

java开发工程师和网站优化师?我该选择哪条路呢

都是苦命的活 一样浏览网页 不知不觉 浏览数千遍 调试每个语句 完成用户的体验

--&%-- 387

【DRAM存储器六十七】DDR5介绍--训练相关之write leveling

详述DDR5 write leveling细节

highman110的博客 284

这世上本来没有路,走的人多了,也便成了路

这是鲁迅的故乡里的最后两句原文是这样的:我想,希望是本无所谓有,无所谓无的,这正如地上的路.其实,地上本没有路,走的人多了,也便成了路.        后来自己琢磨着鲁迅大叔其实挺伟大的,多么伟大的一句哲理啊. 在我自己走自己的路的同时,会走很多弯路,但是当我朝着一个目标走的时候走了很长时间都没有到达还觉得目标离我很远,后来琢磨着,哦原来我在走弯路,在我朝着自己的目标前进的时候,周围有很多的

djhding的专栏 3242

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

选择技术还是选择销售?

选择技术还是选择销售?肖舸老师  这是一位同学给我的留言, 咨询方向选择的问题, 最近被同学们问这类问题很多, 感觉有些代表性,因此这里统一作答。一家之言哈,欢迎拍砖。原文在这里========================================肖舸老师你好:看了您对那么多人的评论之后,觉的您的建议很中肯,所以想向您请教。我去年大学毕业(专业是通信工程), 觉得自己虚度

liukehua123的专栏 3542

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

国企/央企/大厂/外包,软考网工就业选择全对比,到底哪条路3年内年薪突破30W?

帮你理清软考网络工程师就业方向,3年冲刺30W年薪!对比国企/央企稳定性、大厂高薪成长性、外包项目实战性,分析各路径晋升节奏与技术栈要求。附真实薪资数据与转型建议,值得收藏。

FuncFun的博客 208

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

祝福大家劳动节节日快乐

2021-05-02 每次走到人生的十字路口,我都知道哪条路是正确的,但我从不走,因为太艰难了。

csdn's blog 1万+

人生道路的选择

当你站在人生的道路上,你将会面对无数的选择,其实走什么路都是一种选择,在选择了A之后,就不可能再让你选择B的,这是人生游戏的规则,你要活在人世间就不可能摆脱这个规则。你选择了什么来代表自己,你的一生也就不会改变.每一种选择都有着闪光点,是好是坏,都得由你自己来决定.生存的意义是什么?就是为了给人民作贡献!  如果你选择了善良,那么,你将会结识许多的知心朋友,爱和你在一起谈心,说出自己心中的烦恼,这

缘木原的专栏 1976

路在何方

都大三了,专业软件工程,还不知道自己将要走哪条路,选择哪个方向,哎,悲催啊

itdapengt的专栏 2051

有点迷茫

迷茫,不知道哪条路是正确的。

windrises的专栏 306

回校 离校

任务完成了,,,还有一分钟下班。回家收拾东西回学校,回校就意味着离校。 不知道有多少同学和我一样嘞? 加油吧! 无论我们选择哪条路都会有崎岖,但是我相信终究会过去! A za A za!...

kaka 159

选择的一段对话

"Would you tell me please, which way I ought to go from here?" asked Alice."That depends a good deal on where you want to get to," said the Cat."I dont much care where," said Alice."Then, it doesnt

知识的天空 948

希望不遥远,层层歌声飞

Alice 羞涩地说:“呲牙猫,请问你能告诉我应该走哪条路吗?”呲牙猫说:“这取决于你想去哪儿。”Alice 说:“我不怎么介意到哪儿去。”呲牙猫回答说:“那你走哪条路都可以”Alice 说:“只要我能到某个地方”呲牙猫说:“只要你走的足够远,你肯定能到某个地方”。        -------Lewis Carroll 的 Alice’s adventures in Wonderland

無 2408

关于失败

“诸位,什么是失败啊,没什么是失败,只是一条路而已。一条路你走得顺了,你就会觉得自己选择不错;走得不顺,就会喃喃自语说走另外一条路会不会好点啊。别蹉跎了自己的时光,不管走什么路都别。”

影子妞要做程序员 490

QA测试开发工程师面试题满分问答14: (智力题)一个真话村一个假话村,分叉路口通行,一个村民一个问题,怎么去真话村?

我们可以通过向任意一个村民询问「另一个村民会告诉我哪条路通往真话村?」来找到通往真话村的路。无论我们向真话村的村民还是假话村的村民提问,他们都会指向通往假话村的路,因此我们可以选择相反的路,即通向真话村的路。三段头部互联网大厂测开经历,辅导过25+同学入职大厂,【简历优化】、【就业指导】、【模拟/辅导面试】一对一指导。我们可以通过向任意一个村民询问「另一个村民会告诉我哪条路通往真话村?注意到问题中提到只有一个村民提问,但并没有说明是来自真话村还是假话村。假设真话村的村民只说真话,假话村的村民只说假话。

qq_31870305的博客 1075

计算机er应该选择保研还是出国?

新年已至,2022年你是否又给自己立了很多flag呢?岛主最近被问到最多的问题便是“马上大三下学期了,我应该选择保研还是出国?” 近年来,由于疫情导致很多出国的同学选择了国内保研,致使保研竞争愈发激烈,而仍有不少同学选择出国,也有了不错的去处。那么对于计算机专业的同学,到底是应该选择保研还是出国呢? 其实,保研和出国都对计算机er来说都是很好的选择,主要还是看个人特点和发展意愿。接下来,就跟岛主来看一下保研和出国两个选择的优势和劣势吧~ 01、保研和出国的竞争都很激烈 首先我们应该明确,对于计算

Baoyan_cs的博客 7459
上一篇: 负载均衡的原理
下一篇: 程序员发展得好不好,就看这三个维度了!
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值