进程之基础知识(一)
关注嵌入式安卓物联网行业及人才培养,每日更新,欢迎订阅及留言讨论~~~
作者:倪键树,嵌入式安卓物联网讲师。
进程之基础知识
1、进程会创建新的地址空间:
子进程是父进程的复制品,在fork之后子进程获得父进程的数据空间、堆和栈的复制品,这就是子进程所拥有的拷贝。(线程使用当前的地址空间)
2、进程结束的五种原因:
正常终止:
1>从主函数main返回
2>调用exit
3>调用_exit
异常终止:
1>调用abort
2>由一个信号终止
不管进程如何终止,最后都会执行内核中的同一段代码。这段代码为相应的进程关闭所有打开描述符,释放它所使用的存储器等等。
3、exit和_exit函数
_exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I/O流等),然后进入内核。
4、由fork创建的新进程被称为子进程,被调用该函数一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值是新子进程的进程ID。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一个,所以没有一个函数使一个进程可以获得其所有子进程的进程ID。fork使子进程得到的返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获得其父进程的进程ID(进程ID0总是由交换进程使用,所以一个子进程的进程ID不可能为0)。
5、fork之后是父进程先执行还是子进程先执行是不确定的,这取决于内核所使用的调度算法,如果要求父、子进程之间相互同步,则要求某种形式的进程间通信。
6、fork的两种用法:
1)一个父进程希望复制自己,使父、子进程同时执行不同的代码段。例如:父进程等待服务请求,当请求到达时,父进程调用fork,使子进程处理此请求。父进程则继续等待下一个服务请求。
2)一个进程要执行一个不同的程序。子进程在从fork返回后立即调用exec。
7、在说明fork函数时,一定是一个父进程生成一个子进程。子进程将其终止的状态返回给父进程。但是如果父进程在子进程之前终止,则将如何呢?
8、对于其父进程已经终止的所有进程,它们的父进程都改变为init进程。我们称这些进程由init进程领养。保证每一个进程都有一个父进程。
13、一个已经终止、但是其父进程尚未对其进行善后处理(获取终止进程的有关信息、释放它仍占用的资源)的进程被称为将死进程。被init领养的进程不会变成僵死进程,init会自动调用。
9、exec函数族:exec函数族可以根据指定的文件名或目录找到可执行文件,启动另一个执行程序,并用它来取代原调用进程的数据段、代码段和堆栈段。在执行完之后,原调用进程的内容除了进程号外,其他全部都被替换了。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。
10、exec函数族使用的场合:
1)当进程认为自己不能再为系统和用户做出任何贡献时就可以调用exec函数时,执行新的程序
2)如果某个进程想同时执行另一个程序,可以调用fork函数创建子进程,然后在子进程中调用任何一个exec函数。
转载于:https://blog.51cto.com/wodesteve/1297788
进程之基础知识(一)相关推荐
- 进程(Process)基础知识(孤儿,僵尸进程)
目录 冯诺依曼体系: 操作系统: 进程概念: 进程状态 进程创建 僵尸进程 孤儿进程 环境变量(path) 程序地址空间 页面置换算法 缺页中断 冯诺依曼体系: 计算机硬件体系结构-五大硬件单元 输入 ...
- Linux系统编程——进程基础知识
Linux系统编程--进程基础知识 1.程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁-) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程 ...
- linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp
linux基础知识_压缩-进程管理-网络管理-ftp-nfs-ssh-scp 1.压缩包管理 gzip .gz格式的压缩包,不打包,分别压缩,原文件消失 bzip2 .bz2格式的压缩包,原文件不会消 ...
- 进程和线程基础知识(已经是最详细的啦)
进程和线程基础知识 文章目录 进程和线程基础知识 一.前言 二.进程 1.引入 2.并发和并行有什么区别? 3.进程与程序的关系的类比 4.进程的状态 5.进程的控制结构 6.进程的控制 7.进程的上 ...
- 鸿蒙轻内核虚拟内存基础知识:虚拟内存进程空间编号
摘要:本文介绍了OpenHarmony鸿蒙轻内核LiteOS-A的虚拟地址空间编号知识,详细分析进程空间编号的申请与释放操作. 本文分享自华为云社区<鸿蒙轻内核A核源码分析系列四 (1) 虚拟内 ...
- Linux进程管理:进程和线程基础知识
<Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...
- 快速get进程、线程基础知识
前言 为了方便大家理解进线程的工作流程及运行状态,先来看一篇小故事: 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了. 但是城里有城里的规矩 ...
- linux 进程及调度基础知识
引用 Linux进程管理专题 Linux进程管理与调度-之-目录导航 Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五) 蜗窝科技-进程管 ...
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...
- PHP内核介绍及扩展开发指南—基础知识
一. 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码. 1.1 PHP变量的存储 1.1.1 zval结构 Zen ...
最新文章
- 阿里云IoT百万资源,寻找极客合作伙伴
- 消息队列的使用场景_消息队列MQ的特点、选型及应用场景
- leetcode 564,546
- c++频繁读取数据会丢失_透析中会丢失什么营养?透析日的饮食需要注意什么?...
- 2016年1月中国域名商解析量14强:排名变动大
- 15-3 并发调度器
- arcgis api for js之echarts开源js库实现地图统计图分析
- Starling常见问题解决办法
- 云计算与大数据” 研讨会:迎来新的科学价值
- 虚拟机VMware下载与安装教程(详细)
- GridView指定列求和
- 驱动开发专家解读 寒江独钓 Windows内核安全编程
- Java常见面试题_理论+实践
- 河北科技大学电子商务马志伟
- requests 用法
- 从零开始掌握Python机器学习:七步教程 基础篇
- 【时空序列预测实战】风险时空预测?keras之ConvLSTM实战来搞定
- 基于Docker容器的DevOps应用方案
- pc电源改可调_如何为您的PC升级和安装新电源
- 中国省级GDP增长目标(2000-2018年)