OS对软件的管理,进程,PCB、子进程

news2024/11/20 12:36:03

进程

可执行程序加载到内存中,操作系统为内个程序都形成一个PCB对象(结构体对象),PCB里存放着这个程序的所有的属性。进程=可执行程序+PCB
在这里插入图片描述
,CPU执行程序也是先通过该程序的PCB找到相应的程序代码,然后一条一条的执行
在这里插入图片描述
既然操作系统对进程的管理就是对PCB的管理,所以PCB里面的属性是在操作系统内部的,用户不能直接访问需要调用其相应属性的接口;
在这里插入图片描述
linux的进程演示:
在这里插入图片描述
我们以标识符属性为例,写一个代码,在代码里调用相应的系统接口访问这个代码在进入内存后成为进程后,所具有的PCB里面的pid:
需要调用的系统接口:getpid t通过man指令查看他所需要包含的头文件:
在这里插入图片描述
在这里插入图片描述
我们不断的运行和停止程序:
在这里插入图片描述
可以看书内一次进程的pid都会发生变化,因为内次启动程序,都会创建新的进程
而且我们可以看书他的父进程是不变的。
那么父进程是谁呢?

在这里插入图片描述
在linux中普通进程都有父进程。

父子进程

linux中在命令行输入 ll /proc 就可以查看内存里的数据
在这里插入图片描述
比如此时运行一个程序,我们就能在proc中看到相应进程的pid,他是以目录的形式,里面存的就是进程的属性,当查看这个目录的时候,我们看到
在这里插入图片描述
进程创建子进程:调用系统函数fork()
在这里插入图片描述
fork()之后代码共享:
在这里插入图片描述
再通过man指令查看fork函数可以看到,fork()的返回值为,子进程的pid会返回给父进程,0会返回给子进程
在这里插入图片描述
知道了这一点那么我们是否就可以让父子进程分工同时做不同的事情

在这里插入图片描述
在这里插入图片描述
为什么fork()函数会有两个返回值呢?、
在这里插入图片描述

fork()函数的目的就是创建一个子进程,所以在fork()函数内部,当执行到最后返回语句的时候就已经创建了子进程,那么之后的语句就会形成分支,两个进程各自返回各自的值
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙内核源码分析(时钟任务篇)

时钟概念 时间是非常重要的概念,我们整个学生阶段有个东西很重要,就是校园铃声. 它控制着上课,下课,吃饭,睡觉的节奏.没有它学校的管理就乱套了,老师拖课想拖多久就多久,那可不行,下课铃声一响就是在告诉老师时间到了,该停止了让学生HAPPY去了. 操作系统也一样&…

Flutter基础语法

Flutter概要 Flutter目录结构 文件夹 作用 android android 平台相关代码 ios ios平台相关代码 lib flutter相关代码,我们主要编写的代码就在这个文件夹中 test 用于存放测试的代码 pubspec.yaml 配置文件,一般存放一些第三方库的依赖 Flutt…

【研发管理】产品经理知识体系-产品设计与开发工具

导读:产品设计与开发工具的重要性体现在多个方面,它们对于产品的成功开发、质量提升以及市场竞争力都具有至关重要的影响。产品设计工具可以帮助设计师更高效地创建和优化产品原型。开发工具在产品开发过程中发挥着至关重要的作用。产品设计与开发工具还…

细致讲解——不同类型LSA是作用以及相互之间的联系

目录 一.常见的LSA类型 二.OSPF特殊区域 1.区域类型 2.stub区域和totally stub区域 (1)stub区域 (2)totally stub区域 3.nssa区域和totally nssa区域 (1)nssa区域 (2)totall…

tensorflow_decision_forests\tensorflow\ops\inference\inference.so not found

恰好有一个帖子提到了py3.10里面的解决方案 pip install --user tensorflow2.11.0My tensorflow version is 2.11.0 and my tensorflow_decision_forests version is 1.2.0 so those should be compatible. I also am using Python version 3.10.11原文链接: http…

基于SpringBoot+VueHome F家居系统的设计与实现

系统介绍 该Home F家居系统采用B/S架构、前后端分离以及MVC模型进行设计,并采用Java语言以及SpringBoot框架进行开发。本系统主要设计并完成了用户注册、登录,购买家具过程、个人信息修改等,商家添加家具信息、对家具进行发货,管理…

假定输入字符串只包含字母和*号。编写函数fun:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 假定…

第10章:知识整合提示

这种技术使用模型的预先存在的知识,来整合新、旧信息,助力我们全面认知特定的主题。 与ChatGPT配合时,只需提供新信息与任务目标,加上清晰的提示词,它就能为你生成满意文本。 例 1:知识整合 任务:将新信息…

YOLOv9最新改进系列:完美融合即插即用的涨点模块之注意力机制(SEAttention)。

YOLOv9最新改进系列:完美融合即插即用的涨点模块之注意力机制(SEAttention)。 YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里! 详细的改进教程以及源码,戳这!戳这…

QingHub Studio快速部署

简要介绍 QingHub Studio部署套件,主要针对需要本地化离线部署的用户提供一键部署的能力。目前本地化部署只支持单机版。需高可用部署的可以自行研究或寻求轻云研发团队技术支持。本地部署只作为用户开发的前后端应用的运行环境,不包括应用设计及监控运…

(22408)武汉大学计算机专硕初试备考经验贴

首先谈一下,写这篇文章的初衷。 我相信考武大计算机的同学都是优秀的,应该有自己的备考方法,所以这里并不介绍具体怎么备考某一科目。 计算机考研热度较高,备考不易,这里将自己备考过程中遇到的问题,分享…

(六)小案例银行家应用程序-删除账号-findindex方法

findindex方法和find方法非常类似,只不过findindex顾名思义,他返回的是index; ● 下面我们使用删除账号的功能来学习一下findindex的 ● 当用户登录成功之后,可以在下方输入自己的用户名和密码,然后提交&#xff0c…

【C++】类和对象完结篇——日期类实现

再谈构造函数 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 class Date { public:Date(int year, int month, int day){_year year;//只能是说是赋初始值,不能说初始化_month month;_day …

【Flutter】GetX

前言 状态管理 / 路由管理 / 依赖管理 这三部分之间存在联系 参考文章 建议看官网文章,很详细 ,pub.dev搜索get pub.dev的文档 状态管理文章相关链接 状态管理 案例 实现一个计算器,运用GetX去管理它 构建界面 构建一个计算器界面 …

Vue入门到关门之Vue介绍与使用

一、vue框架介绍 1、什么是Vue? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与…

软件测试(Web自动化测试)(二)

一.Selenium WebDriver的基本应用 (一)安装浏览器驱动 1.关闭浏览器的自动更新功能 以Windows7(64位)操作系统为例,讲解如何关闭Chrome浏览器的自动更新。首先按下快捷键“WinR”,打开运行对话框&#x…

FPGA 以太网通信UDP通信环回

1 实验任务 上位机通过网口调试助手发送数据给 FPGA , FPGA 通过 PL 端以太网接口接收数据并将接收到的数据发送给上位机,完成以太网 UDP 数据的环回。 2 系统设计 系统时钟经过PLL时钟模块后,生成了两种不同频率和相位的时钟信号&#…

Java高阶私房菜-JVM垃圾回收机制及算法原理探究

目录 垃圾回收机制 什么是垃圾回收机制 JVM的自动垃圾回收机制 垃圾回收机制的关键知识点 初步了解判断方法-引用计数法 GCRoot和可达性分析算法 什么是可达性分析算法 什么是GC Root 对象回收的关键知识点 标记对象可回收就一定会被回收吗? 可达性分析算…

线程池处理任务的流程、步骤

线程池处理任务的流程 如果当前运行的线程数小于核心线程数,那么就会新建一个线程来执行任务。如果当前运行的线程数等于或大于核心线程数,但是小于最大线程数,那么就把该任务放入到任务队列里等待执行。如果向任务队列投放任务失败&#xf…

web-traffic-generator:一款功能强大的HTTP和HTTPs流量混淆工具

关于web-traffic-generator web-traffic-generator是一款功能强大的HTTP和HTTPs流量混淆工具,该工具基于纯Python开发,可以帮助广大研究人员在HTTP或HTTPs网络流量中提添加噪声,以此来实现流量混淆的目的。 本质上来说,web-traff…