进程是操作系统中最重要的概念之一。

一.进程的概念

在UNIX/Linux中, 进程是正在执行的程序, 它相当于Windows环境内的任务。每个进程包括程序代码和数据。其中数据包含程序变量数据、外部数据和程序堆栈等。

进程是操作系统分配给cpu的最小单位。

二.进程和程序的区别

因为一个进程对应于一个程序的执行,所以绝对不要把进程与程序这两个概念相混淆。

1. 进程是动态的概念,而程序是静态的概念。实际上,多个进程可以并发执行同一个程序,例如,几个用户可以同时运行一个编辑程序,每个用户将此程序的执行均作为一个单独的进程。

在UNIX中, 一个进程又可以启动另一个进程, 这就给UNIX的进程环境提供了像文件系统目录树那样的层次结构。进程树的顶端是一个控制进程, 它是一个名为init的进程,该进程是所有用户进程的祖先,其进程id(pid)为1。

三.进程和线程的区别:

1. 最重要区别:进程是操作系统分配给cpu的最小单位,而线程是处理器任务调度和执行的基本单位。另外区别还有资源开销、包含关系、内存分配、影响关系、执行过程等。

2. 从资源分配上来说:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

3. 从包含关系上来说:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。

4.从内存分配上来说:进程之间的地址空间和资源是相互独立的;而同一进程的线程共享本进程的地址空间和资源。

5.从影响关系上来说:一个进程崩溃后,在保护模式下不会对其他进程产生影响;但是一个线程崩溃可能导致整个进程都死掉。所以多进程要比多线程健壮。

6.从执行过程上来说:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行。

四. 进程控制:

Linux同样向程序员提供一些进程控制方面的系统调用, 其中最重要的有以下几个:

1) fork()它通过复制调用进程来建立新的进程,是最基本的进程建立操作。

2) exec它包括一系列的系统调用,其中每个系统调用都完成相同的功能,即通过一个新的程序覆盖原内存空间, 来实现进程的转变。各种exec系统调用之间的区别是,它们的参数构造不同。

3) wait()它提供了初级的进程同步措施,能使一个进程等待,直到另一个进程结束为止。

4) exit() 这个系统调用常用来终止一个进程的运行。

五. 进程还有各种状态以及它们之间的转换: 最常见的是,运行态,等待态,就绪态

六. 进程间通信:各个进程可以进程通信。Linux系统提供了一些通信方式,例如,共享内存,管道,信号,socket,消息队列等

七.实战:列出系统中的进程:

1.window任务管理器中查看进程:

2.Android手机中的进程:

init进程,是linux系统第一个用户进程,其进程id为1,root(内核)进程是它的父进程。

zygote,是Android系统的核心进程 ,所有的App的父进程都是它。

system_server是android Framework所在的进程,也称为Android系统进程,其父进程是zygote.

整个操作系统的运行,其实就是这些进程的运行和交互。

potplayer 多个进程_Linux系统编程1.2:进程概念简介相关推荐

  1. 【Linux系统编程】特殊进程之守护进程

    00. 目录 文章目录 00. 目录 01. 守护进程概述 02. 守护进程查看方法 03. 编写守护进程的步骤 04. 守护进程代码 05. 附录 01. 守护进程概述 守护进程(Daemon Pr ...

  2. 【Linux系统编程】特殊进程之孤儿进程

    00. 目录 文章目录 00. 目录 01. 孤儿进程概述 02. 孤儿进程代码 03. 附录 01. 孤儿进程概述 父进程运行结束,但子进程还在运行的子进程就称为孤儿进程(Orphan Proces ...

  3. 【Linux系统编程】特殊进程之僵尸进程

    00. 目录 文章目录 00. 目录 01. 僵尸进程概述 02. 僵尸进程案例 03. 避免僵尸进程 04. 附录 01. 僵尸进程概述 进程已运行结束,但进程的占用的资源未被回收,这样的进程称为僵 ...

  4. Linux系统编程 74 孤儿进程和僵尸进程

    Linux系统编程  74 孤儿进程和僵尸进程 学习笔记 孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为 init进程,称为init进程领养了孤儿进程. init进程会去接替 ...

  5. execve系统调用_Linux系统编程——进程替换:exec 函数族

    在 Windows 平台下,我们可以通过双击运行可执行程序,让这个可执行程序成为一个进程:而在 Linux 平台,我们可以通过 ./ 运行,让一个可执行程序成为一个进程. 但是,如果我们本来就运行着一 ...

  6. execlp使用例子_linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用...

    本节目标: exec替换进程映像 exec关联函数组(execl.execlp.execle.execv.execvp) 一,exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程 ...

  7. linux系统编程_Linux系统编程:进程间通信

    进程的重要性对于编程人员来说,至关重要,那么,进程间是如何通信的呢?在一个大的项目中,进程间的通信有哪些方式,这对于我们程序员来说也是很重要的一个点?那么本节我们就来聊聊进程间通信的方式,以及各自的优 ...

  8. 【Linux系统编程】Linux进程管理

    00. 目录 文章目录 00. 目录 01. 概述 02. 进程相关概念 03. 进程的状态 04. 进程调度 05. 程序调度函数 06. 附录 01. 概述 在Linux的内核的五大组成模块中,进 ...

  9. c++ mmap写入速度_Linux系统编程_用mmap+数组的方式修改数据文件

    正文开始前,先聊点非技术的东西,推荐2本生动有趣的书: <经济学原理 宏观经济学>,曼昆,豆瓣评分9.3,4945人评价 <经济学原理 微观经济学>,曼昆,豆瓣评分9.6,18 ...

最新文章

  1. 五种JSP页面跳转方法详解
  2. 讨厌别人不写注释,但自己也不爱写?那么试试这个IDEA的注释插件吧!
  3. Wireshark 跟踪TCP流
  4. Quartz 框架快速入门(三)
  5. [python学习] 简单爬取维基百科程序语言消息盒
  6. iOS 13 真机调试包
  7. 为@Cacheable设置TTL – Spring
  8. python xml字符串_python -解析字符串,并返回xml格式字符串 急该如何解决
  9. 维珍媒体确定收购Arqiva WiFi 将进一步扩大公共WiFi覆盖面积
  10. linux驱动与windows驱动精灵,细说驱动精灵和驱动人生哪个好
  11. Table View Programming Guide for iOS 官方文档翻译
  12. 一文2000字搞懂高并发性能指标:QPS、TPS、RT、并发数、吞吐量
  13. 【AI数学原理】函数求导(精髓篇)
  14. 网络编程学习_TCP协议
  15. Android Studio真机测试
  16. 掌门优课用户量增多,用户看上了它什么?
  17. 51单片机多路独立按键开关程序
  18. tornado完成一个简单的登录界面/图片的上传
  19. 【华为OD机试真题 Python】统计射击比赛成绩
  20. Nat.Mach.Intell.|如何改进错义突变致病性预测?使用图注意神经网络试试

热门文章

  1. 英语不好能学会python吗_英语不好可以学习python编程吗?老男孩python入门
  2. 《一个出身寒门的高考状元之死》
  3. android 权威编程指南 笔记 2018-09-01
  4. 香港十大外汇交易商排名名单2020最新版
  5. [概念]PMP,项目管理
  6. puzzle(0122)网格一笔画
  7. 三种数字调制的形式:ASK PSK FSK
  8. Easy3DCGAL 点云下采样(体素)
  9. (二十八:2021.01.10)MICCAI 2019 追踪之论文纲要(中)
  10. Paul Zindel【保罗·金代尔】