进程概念

目录

冯诺依曼体系结构

操作系统OS

系统调用和库函数概念

进程

task_struct内容分类

组织进程

初识fork

进程状态

Z(zombie)-僵尸进程

孤儿进程

进程优先级

环境变量

和环境变量相关的命令

环境变量的组织方式

程序地址空间


冯诺依曼体系结构

 关于冯诺依曼,必须强调几点:

        这里的存储器指的是内存

        不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

        外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

        一句话,所有设备都只能直接和内存打交道。

操作系统OS

OS是一款专门针对软硬件资源进行管理工作的软件。对下,管理好软硬件资源(方式)。对上,给用户提供稳定的,高效安全的运行环境(目的)。

 计算机管理硬件:1、描述,使用struct结构体2、使用数据结构组织起来

系统调用和库函数概念

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分 由操作系统提供的接口,叫做系统调用。

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

进程

什么是进程?进程就是加载到内存中的程序

任何进程在形成的时候,操作系统都要为该进程创建PCB(Process Control Block)进程控制块。在OS上面,PCB就是一个结构体,用于描述进程,也可以理解为进程属性的集合。

Linux中描述进程的PCB是task_struct。

task_struct内容分类

标识符:描述本进程的唯一标识符,用于区别其他进程

状态:任务状态,退出代码,退出信号等

优先级: 相对于其他进程的优先级。

程序计数器: 程序中即将被执行的下一条指令的地址。

内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

上下文数据: 进程执行时处理器的寄存器中的数据。

组织进程

所有运行在系统里的进程都以task_struct链表的形式存在内核里。

初识fork

fork的作用是创建一个子进程。

fork有两个返回值。创建失败就返回一个小于0的数。创建成功就给父进程返回子进程的pid,给子进程返回0

进程状态

Z(zombie)-僵尸进程

僵死状态(Zombies)是一个比较特殊的状态。当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵死(尸)进程

僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。

所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

僵尸进程的危害:

        进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。如果父进程一直不读取,那子进程就一直处于Z状态。

        维护退出状态本身就是要用数据维护,也属于进程基本信息,所以保存在task_struct(PCB)中,换句话 说,Z状态一直不退出,PCB一直都要维护。

        那一个父进程创建了很多子进程,就是不回收,就会造成内存资源的浪费。因为数据结构对象本身就要占用内存。

孤儿进程

父进程先退出,子进程就称之为“孤儿进程”

孤儿进程被1号init进程(OS)领养,当然要由init进程回收。

进程优先级

为什么会有优先级?------->因为资源少,本质是分配资源的一种方式

        cpu资源分配的先后顺序,就是指进程的优先权(priority)。

        优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。

        还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

查看进程的时候,可以观察到PRI、NI这个两个参数,PRI即进程的优先级。NI称为nice值,是PRI的修正值,取值为-20~19,共四十个级别。

ps:Linux中的优先级数据,值越小优先级越高

竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高 效完成任务,更合理竞争相关资源,便具有了优先级

独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰

并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行

并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发

环境变量

常见环境变量

        PATH : 指定命令的搜索路径

        HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

        SHELL : 当前Shell,它的值通常是/bin/bash。

        环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 。

        如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

        环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

命令,程序,工具等等本质都是一个可执行的文件。

但是为什么执行系统命令,直接敲命令就行了。我们自己写的可执行程序前面还要加上./

因为PATH环境变量的设置,输入命令之后,系统按照PATH中的路径逐个去寻找命令所处的路径

 当我们把自己写的程序添加在PATH的环境变量下的时候,我们的可执行程序也能向命令一样,直接输入就能执行。

 我们现在能看见,我们的命令也能像系统命令那样直接执行了。

影响了整个“用户系统”。环境变量具有“全局属性”。本质:环境变量能被子进程继承下去

和环境变量相关的命令

1. echo: 显示某个环境变量值

2. export: 设置一个新的环境变量

3. env: 显示所有环境变量

4. unset: 清除环境变量

5. set: 显示本地定义的shell变量和环境变量

环境变量的组织方式

查看文档。也就是environ是一个二级指针,指向一个指针数组,指针数组指向不同的环境变量。 

 编写以下程序,打印出环境变量

程序地址空间

编写如下程序:

我们开一个子进程,在子进程里边打印并修改全局变量g_val的值。在父进程里边也不断打印全局变量的值和地址。

运行结果如下

 我们观察到,这里子进程修改g_val的值之后,地址并没有发生改变。但是按理说,这里的地址是会发生改变的,因为g_val的值修改了,并且是在子进程里边修改的,会发生写实拷贝(将父进程的数据拷贝一份,进行修改)。

这里没有发生改变是因为这里的地址并不是物理地址,而是虚拟地址

通过观察下图得出虚拟地址和物理地址的关系

 上面的图就足矣说名问题,同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了 不同的物理地址!

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

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

相关文章

制定进度计划是成功项目管理的必由之路

项目经理王斌接到一个新项目,与各项目干系人没有建立有效的联系,他们无法了解项目进展情况。甚至连项目团队的参与人员自身对项目整体情况也没有清楚的认识,而只管自己那一部分,整个开发过程完全是一种黑盒模式,项目组…

windows提权

权限提升概述 1、提权介绍 权限提升:攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限的管理员用户,从而获取对整个系统的控制权 windows:user --> system/administrator linux:user --&g…

5th-Generation Mobile Communication Technology(五)

目录 一、5G/NR 1、 快速参考(Quick Reference) 2、5G Success 3、5G Challenges 4、Qualcomm Videos 二、PHY and Protocol 1、Frame Structure 2、Numerology 3、Waveform 4、Frequency Band 5、BWP 6、Synchronization 7、Beam Management 8、CSI Fra…

超细!从零安装压测工具 jmeter(附JDK下载安装教程,20230516的JDK8最新版)

两步走,安装 JDK 和 jmeter,如果安装了JDK的同志可以直接看第二步。 针对的操作系统:Windows。 下载JDK 官网指路(处于稳定性考虑,安装的JDK8): Java Downloads | Oraclehttps://www.oracle.c…

MySQL学习(基础篇1.0)

MySQL概述(基础) SQL 全称Structured Query Language,结构化察浑语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。 SQL通用语法 SQL语言的统统用语法: SQL语句可以单行或多行书写,以分号…

数字化赋能,探索智慧银行建设的最佳实践

导语 | 数字经济时代,数字化已成为银行业转型升级的战略手段。近年来,商业银行纷纷加大对信息科技的投入,数字化在改变银行业务模式的同时,更是构建起了数字金融新生态。今天,我们特邀腾讯云 TVP 行业大使、舜源科技合…

安科瑞电能表对于预付费平台的费控策略应用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:基于智能电能表的预付费系统平台可以实现对预付费客户的适时算费、远程费控和服务。预付费系统的费控策略包括算费子策略、催费预警提醒子策略、欠费停电子策略,介绍3个子策略的制定原则、设计流程&…

电脑怎么截图?常见的4种截图方法分享!

案例:有人知道在电脑上怎么截图? 【有时候,用截图表达事情会更加清楚,但是我只会手机截图,不知道在电脑上怎么截图。有没有小伙伴知道电脑怎么截图?】 在日常使用电脑时,我们经常需要截图来记…

java+springboot高校校友校园信息管理系统

本高校校友信息管理系统使用Web开发,运行在Internet环境之上,系统的后台编程语言使用JAVA,数据库使用MySQL。完成了两个用户角色的功能,管理员管理所有信息,前台学生用户登录后查看公告,在线捐赠申请&#…

java版企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外…

基于K8sSVC springboot 服务间调用

公司项目私有化部署,甲方要求服务间调用使用K8sSVC完成服务间调用。需要把原有基于springbootnacos 服务注册发现改造为k8ssvc完成服务间注册发现。 首先了解一下k8s svc: K8S核心概念之SVC(易混淆难理解知识点总结)_k8s svc_倾…

Push rejected,用Git修改已提交的注释

问题:有时候因注释与git规定的模板不匹配,会导致远程提交被拒绝 Push rejected 解决:修改不符合规范的注释再push即可 1、打开命令窗口 在项目根目录下右键点击出 Git批处理命令窗口。 2、查看已提交的commit 运行命令:git reba…

jpg怎么转换成png格式?四种转换方式试试看

很多时候,我们需要将JPG(Joint Photographic Experts Group)格式转换成PNG(Portable Network Graphics)格式,从而便于图片的使用。那么,将JPG转换成PNG有什么作用呢?首先&#xff0c…

Java集合常见面试题

1、Java集合概述 Java集合,也叫作容器。由两大接口派生而来:Collection接口,用于存放单一元素;Map接口,主要用于存放键值对。对于Collection接口,下面又有三个主要的子接口:List、Set、Queue 2…

CRM系统本地部署和云部署的优缺点

众所周知,CRM系统部署方式有两种,分别是本地部署和云部署。两者各有优缺点,企业可以按照自身的需求来进行选择。下面说说CRM不同部署方式的优缺点。 CRM本地部署 本地部署是指将CRM系统安装在企业自己的服务器上,并由企业自行维…

视频怎么转化为mp3,5种高效方法任选

视频怎么转化为mp3呢?想必这是我们工作过程中经常遇见的问题。众所周知,MP3格式是一种常见的音频格式,支持多种音频播放器和设备。通过将视频转换为MP3格式,用户可以方便地将视频的音频部分提取出来,保存为与视频大小不…

JS逆向 -- 某视频vurl值的加密分析

接上节课内容 JS逆向 -- 某视频vid值的加密分析 JS逆向 -- 某视频val值和pid值的加密分析 一、在上节课中有个vurl的值需要分析,具体内容如下 vurl: https://mp4play-hs-cdn.ysp.cctv.cn/o000017kuww.jbZe10002.mp4? sdtfrom4330701& guidlhsuf6ia_0rieucp…

以云原生推动代际跃升,2023通明湖论坛云原生分论坛召开

5月12日,由神州数码主办,北京经开区国家信创园、中关村云计算产业联盟协办的2023通明湖论坛-云原生分论坛在京召开。本次论坛,以“抓住云原生机遇,推动我国信息基础设施技术代际跃升”为主题,聚焦以云原生为核心引领的…

winform-SunnyUI控件解决大小位置变化

文章目录 前言问题种类使用SunnyUI解决控件DPI问题(分辨率问题)1.添加配置文件app.manifest2.将配置文件中dpiAware打开3.添加uiStyleManager1控件并将控件中DPIScale设置为true4.效果图 使用FlowLayOutPanel解决控件边距问题1.问题样式2.使用FlowLayOut…

推荐系统用户长序列建模

目录 一、背景 二、技术方案 2.1 DIN 简介 论文细节 优缺点 2.2 DINE 简介 论文细节 2.3 MIMN 简介 论文细节 2.4 SIM 简介 论文细节 优缺点 2.5 DSIN 简介 论文细节 一、背景 阿里巴巴的精排模型从传统lr,到深度学习,再到对用户长历…