关注嵌入式安卓物联网行业及人才培养,每日更新,欢迎订阅及留言讨论~~~

作者:倪键树,嵌入式安卓物联网讲师。


进程之基础知识

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

进程之基础知识(一)相关推荐

  1. 进程(Process)基础知识(孤儿,僵尸进程)

    目录 冯诺依曼体系: 操作系统: 进程概念: 进程状态 进程创建 僵尸进程 孤儿进程 环境变量(path) 程序地址空间 页面置换算法 缺页中断 冯诺依曼体系: 计算机硬件体系结构-五大硬件单元 输入 ...

  2. Linux系统编程——进程基础知识

    Linux系统编程--进程基础知识 1.程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁-) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程 ...

  3. linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp

    linux基础知识_压缩-进程管理-网络管理-ftp-nfs-ssh-scp 1.压缩包管理 gzip .gz格式的压缩包,不打包,分别压缩,原文件消失 bzip2 .bz2格式的压缩包,原文件不会消 ...

  4. 进程和线程基础知识(已经是最详细的啦)

    进程和线程基础知识 文章目录 进程和线程基础知识 一.前言 二.进程 1.引入 2.并发和并行有什么区别? 3.进程与程序的关系的类比 4.进程的状态 5.进程的控制结构 6.进程的控制 7.进程的上 ...

  5. 鸿蒙轻内核虚拟内存基础知识:虚拟内存进程空间编号

    摘要:本文介绍了OpenHarmony鸿蒙轻内核LiteOS-A的虚拟地址空间编号知识,详细分析进程空间编号的申请与释放操作. 本文分享自华为云社区<鸿蒙轻内核A核源码分析系列四 (1) 虚拟内 ...

  6. Linux进程管理:进程和线程基础知识

    <Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...

  7. 快速get进程、线程基础知识

    前言 为了方便大家理解进线程的工作流程及运行状态,先来看一篇小故事: 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了. 但是城里有城里的规矩 ...

  8. linux 进程及调度基础知识

    引用 Linux进程管理专题 Linux进程管理与调度-之-目录导航 Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五) 蜗窝科技-进程管 ...

  9. 嵌入式Linux的OTA更新,基础知识和实现

    嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...

  10. PHP内核介绍及扩展开发指南—基础知识

    一. 基础知识 本章简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码. 1.1 PHP变量的存储 1.1.1 zval结构 Zen ...

最新文章

  1. 阿里云IoT百万资源,寻找极客合作伙伴
  2. 消息队列的使用场景_消息队列MQ的特点、选型及应用场景
  3. leetcode 564,546
  4. c++频繁读取数据会丢失_透析中会丢失什么营养?透析日的饮食需要注意什么?...
  5. 2016年1月中国域名商解析量14强:排名变动大
  6. 15-3 并发调度器
  7. arcgis api for js之echarts开源js库实现地图统计图分析
  8. Starling常见问题解决办法
  9. 云计算与大数据” 研讨会:迎来新的科学价值
  10. 虚拟机VMware下载与安装教程(详细)
  11. GridView指定列求和
  12. 驱动开发专家解读 寒江独钓 Windows内核安全编程
  13. Java常见面试题_理论+实践
  14. 河北科技大学电子商务马志伟
  15. requests 用法
  16. 从零开始掌握Python机器学习:七步教程 基础篇
  17. 【时空序列预测实战】风险时空预测?keras之ConvLSTM实战来搞定
  18. 基于Docker容器的DevOps应用方案
  19. pc电源改可调_如何为您的PC升级和安装新电源
  20. 中国省级GDP增长目标(2000-2018年)

热门文章

  1. UVA12545_Bits Equalizer
  2. 国内语料库建设一览表
  3. 那些年,备胎一起追的女神
  4. 表格数据快速转换成SQL语句
  5. 深度解析vue.js响应式原理解析与实现
  6. 小程序或者APP 自行使用TOKEN 实现登录会话保持
  7. 如何将一个数据库中的一个表复制到另一个数据库的表中去
  8. TJUSCSST第三次作业
  9. bzoj4332;vijos1955:JSOI2012 分零食
  10. Tomcat 7 Connector 精读(2) 协议处理器 Http11Protocol(待续)