【Linux】创建子进程

进程概念-创建子进程

  • 程序计数器&上下文信息
  • 创建子进程

程序计数器&上下文信息

我们知道,当计算机在运行程序的时候实际上是在执行汇编指令

但是存在一个问题,一台计算机中有许多个进程,而CPU只有几个,那么就意味着,某一个时间段中,对于CPU来说,一定有进程正在占用CPU资源,而有些进程没有占用CPU资源,当某个进程占用CPU运算一段时间后,就会被切出CPU,那么下次这个进程拿到CPU资源的时候,程序如何知道需要运行到哪行汇编指令呢?运算的中间结果又是如何保存下来的呢?

其实在PCB中存在程序计数器和上下文信息:
程序计数器:保存进程下一次运行时的汇编指令
上下文信息:保存进程上一次运算时,寄存器当中的值

这样就很好的解决了上述进行进程切换时遇到无法保存程序运行位置和中间结果的问题。

创建子进程

我们是使用fork()这个函数进行创建的,fork函数可以让当前正在运行的进程,创建出一个子进程。
特殊的是,fork不需要传递参数,而调用一次fork会返回两个返回值(父进程返回一次,子进程返回一次)
当创建成功后,就如上述所说,返回两个返回值

返回值为0的返回给子进程,返回值>0的返回给父进程
当创建失败会返回-1

思考:下面的代码会打印几次呢?
在这里插入图片描述

从结果来看,打印了两次
在这里插入图片描述

其实是因为,fork创建了一个子进程,这个子进程会拷贝一份和父进程相同的PCB,其中代码也是相同的,那么就会从fork代码的下一行执行,子进程打印一次,父进程也会打印一次。

在拷贝父进程的PCB时,会重新给子进程分配PID,并且父子进程的代码是共享的,但是由于各自有各自的进程虚拟地址空间,因此数据是独立的。

子进程是由父进程创建的,那么父进程又是由谁创建的呢?

实际上,在命令行中启动的进程,它的父进程就是bash

我们创建的进程是由bash进程创建的,那么意味着和bash有着相同的代码,按照常理来说我们创建的进程会执行bash的代码,但是为什么没有呢?

由于发生了进程程序替换,这个后面详细描述,并且每一个打开的bash窗口都是一个进程,每个bash进程都是独立的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/7702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目管理方法不是最重要的,成功完成项目真正需要什么?

当今项目管理的两个方向正在发展:瀑布式和敏捷式。这两种方法都有优点和缺点,下面将介绍最流行和适用的方法。 瀑布式 这种方法的主要代表是PRINCE2,该模型基于这样一个事实,即我们从一开始就知道我们想要生产什么,…

MySQL逻辑架构

讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 逻辑架构剖析 1.1 服务器处理客户端请求 首先MySQL是典型的C/S架构,即Client/Server 架构,服务器端程序使用的mysqld…

2023年第十四届蓝桥杯将至,来看看第十二届蓝桥杯javaB组题目如何

ฅ(๑˙o˙๑)ฅ 大家好, 欢迎大家光临我的博客:面向阿尼亚学习 算法学习笔记系列持续更新中~ 文章目录一、前言二、2021年蓝桥杯javaB组省赛真题目录A:ASC[5分]思路⭐代码🌟B 卡片(5分)思路⭐代码🌟C 直线(10分)思路⭐代码🌟D 货…

UNIX环境高级编程——标准I/O库

5.1 引言 本章讲述标准I/O库,这个库由ISO C标准说明。 5.2 流和FILE对象 对于标准I/O库,它们的操作是围绕流(stream)进行的,当用标准I/O库打开或创建一个文件时,就使一个流与一个文件关联;标…

Linux必会100个命令(五十八)dnf命令

DNF不是那个游戏。 dnf是rpm软件包管理器。 它跟yum类似,但是未来可能替代yum。 在CentOS7以后dnf和yum都可以使用。 如果没有安装dnf,可以使用如下命令: yum install epel-release yum install dnf 使用--version查看 dnf版本 使用re…

ToBeWritten之PWN入门介绍/环境搭建

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…

【JavaWeb】5—Servlet

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…

美摄汽车数据匿名化方案:精准、高效、低耗

近年来随着智能网联汽车的升级迭代,车辆采集数据的量级与敏感度也日渐提升。以车载摄像头为例,当前智能汽车车身配备的摄像头数量逐渐增加,采集到的信息也更加复杂多样。根据来源主体不同,车联网敏感数据大致可以划分为以下几类&a…

SMT丨工艺特点及详细生产工艺流程

目录SMT丨工艺特点及详细生产工艺流程一、表面组装技术SMT现状二、表面组装技术SMT的工艺与特点1、SMT工艺2、下面就几个对再流焊质量影响较大的因素进行讨论。3、SMT的特点:三、表面组装技术SMT的发展趋势1、窄间距技术(FPT)是SMT发展的必然…

【云原生】k8s Service 实现服务发现和负载均衡

文章目录前言Service 介绍Service 的四种类型及使用方式Service 的定义和使用通过命令创建服务查看创建的服务情况不指定 Selectors 的服务Headless 服务Service 工作原理及原理图Ingress 讲解集群外部如何访问服务总结前言 在容器编排系统中,如 Kubernetes&#x…

NLP / LLMs中的Temperature 是什么?

ChatGPT, GPT-3, GPT-3.5, GPT-4, LLaMA, Bard等大型语言模型的一个重要的超参数 大型语言模型能够根据给定的上下文或提示生成新文本,由于神经网络等深度学习技术的进步,这些模型越来越受欢迎。可用于控制生成语言模型行为的关键参数之一是Temperature …

思维导图软件哪个好?安利八款好用的思维导图软件

当你需要表达和整理复杂的想法、计划和项目时,思维导图软件可以是非常有用的工具。不同的思维导图软件有不同的功能和特点,选择适合自己的软件可以让你更高效地工作和学习。但是你了解思维导图软件哪个好呢?下面就给大家安利八款简单好用的思…

Python 自动化指南(繁琐工作自动化)第二版:十二、网络爬取

原文:https://automatetheboringstuff.com/2e/chapter12/ 在那些没有 Wi-Fi 的罕见、可怕的时刻,我意识到我在电脑上做的事情有多少是我在互联网上做的。出于纯粹的习惯,我会发现自己试图查看电子邮件,阅读朋友的 Twitter 信息&am…

C生万物 | 校招热门考点 —— 结构体内存对齐

文章目录一、前言结构体偏移量计算:offsetof二、规则介绍例题的分解与细说三、习题演练1、练习①2、练习②四、为什么存在内存对齐?1、平台原因(移植原因)2、性能原因五、如何修改默认对齐数六、实战演练✍一道百度笔试题: offsetof 宏的实现&#x1f4…

AIGC技术周报|ChatDoctor:哪里不舒服;HuggingGPT:连接大模型和机器学习社区;ChatGPT真的鲁棒吗?

AIGC通过借鉴现有的、人类创造的内容来快速完成内容创作。ChatGPT、Bard等AI聊天机器人以及DallE 2、Stable Diffusion等文生图模型都属于AIGC的典型案例。「AIGC技术周报」将为你带来最新的paper、博客等前瞻性研究。 1.ChatDoctor:哪里不舒服? 通用领…

双周赛101(模拟、动态规划、中位数贪心+裴蜀定理、BFS)

文章目录6327. 从两个数字数组里生成最小数字模拟6328. 找到最大开销的子字符串同向双指针动态规划(相似)[53. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/)🎃[6329. 使子数组元素和相等](https://leetcode.cn/problems/make-k-subarray-sums-eq…

042:cesium加载Eris地图(多种形式)

第042个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载加载Eris地图。这里显示4种形式的地图,分别为:World_Imagery、World_Street_Map、World_Terrain_Base、World_Physical_Map。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示…

C++之继承

文章目录前言一、继承的概念和定义1.概念2.定义1.格式2.继承关系和访问限定符3.继承方式的变化二、基类和派生类对象的赋值转换三、继承中的作用域四、派生类的默认成员函数1.构造函数2.拷贝构造3.赋值运算符重载4.析构函数五、友元六、静态成员七、菱形继承和菱形虚拟继承1.单…

ctfshow web入门 命令执行web54-58

1.web54 正则加入了.*尽可能多匹配,flag绕过方式就不可以了,但是可以用?代替,nl也被匹配了 比如说cat,.*当出现cat这个整体时才会进行匹配,会尽可能匹配较多字符,ca,c之类的字符不会进行匹配&a…

【LeetCode】剑指 Offer 44. 数字序列中某一位的数字 p225 -- Java Version

题目链接:https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/ 1. 题目介绍(44. 数字序列中某一位的数字) 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位&#xf…
最新文章