程序与进程

一、程序是怎么被执行的

1.在程序中,由引导代码去调用程序中得main函数,而这个过程由链接器完成,链接器将引导代码链接到我们的应用程序构成可执行文件。

2.程序运行需要通过操作系统的加载器来实现,加载器是操作系统中的程序,当执行程序时,加载器负责将此应用程序加载内存中去执行。

3.如何向main函数传参? 

  argc 和 argv 传参是如何实现的呢?譬如./app arg1 arg2,这两个参数 arg1 和 arg2 是如何传递给应用程序的 main 函数的呢?

  当在终端执行程序时,命令行参数(command-line argument)由 shell 进程逐一进行解析shell 进程会将这些参数传递给加载器,加载器加载应用程序时会将其传递给应用程序引导代码,当引导程序调用 main()函数时,再由它最终传递给 main()函数,如此一来,在我们的应用程序当中便可以获取到命令行参数了。

二、程序是如何结束的

程序结束其实就是进程终止,程序结束可以分为正常和异常两种,且方式多样。例如

(1)通过程序结尾return语句返回来终止

(2)调用exit()或其他终止函数

  (3)  异常终止有调用abort()函数和通过信号杀死进程

三、进程的基本概念

1.进程:进程就是一个可执行程序的实例可执行程序就是一个可执行文件,所以可执行程序的实例就是可执行文件被运行。

  进程是一个动态过程,而非静态文件,它是程序的一次运行过程,当应用程序被加载到内存中运行之后它就称为了一个进程,当程序运行结束后也就意味着进程终止,这就是进程的一个生命周期。

2.进程号:Linux 系统下的每一个进程都有一个进程号(processID,简称 PID),进程号是一个正数,用于唯一标识系统中的某一个进程。

  查看进程号:ps -aux

3.进程的环境变量

  • 每一个进程都有一组与其相关的环境变量,这些环境变量以字符串形式存储在一个字符串数组列表中,把这个数组称为环境列表。譬如在 shell 终端下可以使用 env 命令查看到 shell 进程的所有环境变量。
  • 应用程序中也可以获取当前进程的环境变量。事实上,进程的环境变量是从其父进程中继承过来的,譬如在 shell 终端下执行一个应用程序,那么该进程的环境变量就是从其父进程(shell 进程)中继承过来的。新的进程在创建之前,会继承其父进程的环境变量副本。

4.进程的内存布局

  

                在 Linux/x86-32 体系中进程内存布局

5.进程的虚拟地址空间

   Linux 系统下,应用程序运行在一个虚拟地址空间中,所以程序中读写的内存地址对应也是虚拟地址,

并不是真正的物理地址。

为什么需要引入虚拟地址呢?

  如果使用实际物理地址会出现诸多问题:

  1.内存使用效率低

  2.进程地址空间不隔离

  3.无法确定程序的链接地址

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA maven上传速度很慢、解决办法

maven上传的速度很慢,排除网络原因,需要检查配置 一、项目配置 以下针对于maven仓库不在C盘的情况: File | Settings | Build, Execution, Deployment | Build Tools | Maven 以IDEA为例,打开 File(文件)…

iOS - 资源按需加载 - ODR

一、瘦身技术大图 二、On-Demand Resources 简介 将其保存管理在苹果的服务器,按需使用资源、优化包体积,实现更小的应用程序。ODR 的好处: 应用体积更小,下载更快,提升初次启动速度资源会在后台下载操作系统将会在磁…

酒店的业务高度,关键还得看这个技术!

在酒店业务中,资产管理系统的重要性不容忽视。在这个竞争激烈且日益复杂的行业中,酒店经营者需要精确而高效地管理各种资源,包括客房、设备、财务以及人力。 资产管理系统为管理者提供了一个集中管理、优化和监控资产的强大工具。这不仅有助于…

【AI模型】LibTorch深度学习框架配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍LibTorch深度学习框架配置与使用。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…

机器学习:异常检测实战

文章目录 Anomaly Detection目录任务介绍数据集方法评估Baseline报告报告评价标准 Anomaly Detection 目录 任务介绍 无监督的异常检测 数据集 方法 autoencode 是否能够还原出原始类型图片,基于重构loss来判断是否正常 重构误差当作异常分数 评估 采用ROC和AUC…

0202hdfs的shell操作-hadoop-大数据学习

文章目录 1 进程启停管理2 文件系统操作命令2.1 HDFS文件系统基本信息2.2 介绍2.3 创建文件夹2.4 查看指定文件夹下的内容2.5 上传文件到HDFS2.6 查看HDFS文件内容2.7 下载HDFS文件2.8 HDFS数据删除操作 3 HDFS客户端-jetbrians产品插件3.1 Big Data Tools 安装3.2 配置windows…

MySQL数据库 索引、事务、储存引擎

索引 索引的概念 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。 使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找…

[C++]vector使用和模拟实现

🥁作者: 华丞臧 📕​​​​专栏:【C】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉LeetCode 文章目录 一、vec…

无涯教程-Flutter - 简介

Flutter是一个由谷歌开发的开源移动应用软件开发工具包,用于为Android、iOS、 Windows、Mac、Linux、Google Fuchsia开发应用。 通常,创建移动应用程序是一个非常复杂和具有挑战性的任务。有许多框架可用,它提供了开发移动应用程序的出色函数…

Scala入门,idea关联Scala

Scala 介绍 Scala是一种多规范的编程语言,它结合了面向对象编程(OOP)和函数式编程(FP)的特征,Scala的名字源于”Scalable language“,意为”可伸缩语言“。2003年开发的,并在JVM&a…

ABB USC329AE01控制器模块

多通道控制: USC329AE01 控制器模块通常具有多个控制通道,可用于监测和控制不同的过程变量。 通讯接口: 这种模块通常支持各种通讯接口,如以太网、串口(RS-232、RS-485)、Profibus、Modbus 等,…

镜头翻转大师:视频剪辑高手的魔法技巧

在数字媒体时代,视频制作已成为各种规模的组织和个人的必备技能。无论是小型家庭活动还是大型企业项目,都需要通过视频来展示成果、传播信息,或是仅仅为了分享生活的美好瞬间。然而,视频制作并非易事,其中最困难的步骤…

博士后申请有哪些技巧?

在博士后申请过程中,有一些关键的技巧可以帮助申请者提高成功的机会。以下是知识人网小编的一些建议: 1.精选合适的导师和研究课题:选择与自己研究方向相关且感兴趣的导师和课题非常重要。导师的声誉、研究成果和合作风格都会影响你的博士后经…

GNU make系列之介绍Makefile(0)

一.欢迎来到我的酒馆 在本章节介绍Makefile。 目录 一.欢迎来到我的酒馆二.GNU make 预览三.一个简单的Makefile四.make程序如何处理Makefile文件五.在Makefile中使用变量 二.GNU make 预览 2.1 GNU make工具会自动决定哪些程序需要被重新编译,并且执行相应的命令来…

W5100S-EVB-PICO通过SNTP获取网络时间(十一)

前言 上一章我们用开发板进行ping测试,本章我们用它通过SNTP获取网络时间并在串口显示。 什么是SNTP? 能用来做什么? SNTP(Simple Network Time Protocal简单网络时间协议),用于跨广域网或局域网同步时间的协议,具有较高的精确度&#xff…

Python爬虫:一个爬取豆瓣电影人像的小案例

从谷歌浏览器的开发工具进入 选择图片右键点击检查 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b38c2a942c441fb8cb545a28bb35015.png 翻页之后发现网址变化的只有start数值,每次变化值为30 Python代码 import requests from bs4 import BeautifulSou…

C++11

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C11 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;C标准10年磨一剑,成就了一次非常成功的更新C11&#xff0c;增加了非常有…

DolphinDB 携手白鲸开源 WhaleStudio 打造高效敏捷的 DataOps 解决方案

浙江智臾科技有限公司&#xff08;简称&#xff1a;DolphinDB&#xff09;和北京白鲸开源科技有限公司&#xff08;简称&#xff1a;白鲸开源&#xff09;是在大数据技术领域活跃的两支专业团队。 DolphinDB 专注于为用户提供集高性能存储、复杂分析能力和流处理于一体的实时计…

三、原型模式

一、什么是原型模式 原型&#xff08;Prototype&#xff09;模式的定义如下&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里&#xff0c;原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&a…

2023固态U盘、移动硬盘对比

最近测试了几款固态U盘/移动硬盘&#xff0c;希望能大家的选购有点帮助。 1、移速逸动-2T&#xff08;500MB/s&#xff09;&#xff1a;799元某音 2、爱国者u397-1T&#xff08;1000MB/s&#xff09;&#xff1a;578元京东 3、梵想FF520-512G&#xff08;500MB/s&#xff09…