一、进程的基础:

  1、程序:程序是一些保存在磁盘上的指令的有序集合;

  2、进程:进程是程序的一次执行过程;

  3、进程与程序的关系:①、程序是静态的,进程是动态的;

              ②、一个程序可以对应多个进程;

              ③、程序只有数据段和代码段,进程除了有数据段和代码段之外,还有堆和栈;

            

      关于进程:

        堆栈区:存放的是函数的返回地址,函数的参数以及程序中的局部变量;

        代码段:存放程序代码;

        bss段:存放未初始化的全部变量和静态变量;

        数据段:存放初始化全局和静态变量;

  4、进程的特征:

      ①、动态的:程序的一次执行过程,在虚拟内存中运行,每时每刻都在变化;

      ②、并发的:“同时”运行;

      ③、独立的:每一个运行的进程都有独立的4GB大小的虚拟内存空间,每个进程都独占系统资源;

            进程是系统资源分配的最小单位;

            线程是CPU调度的最小单位;

      ④、异步的:多个线程运行时他们是相关无关的;

          

  5、进程的生命周期(状态)

  6、进程的分类

      ①、交互进程

      ②、批处理进程

      ③、守护进程

  7、进程的系统调用(API)

      ①、创建进程:

        #include <unistd.h>

        pid_t fork(void);          

        功能:创建进程;

        特点:调用一次,返回两次;

        返回值:调用失败:返回-1给调用的进程;调用成功:给父进程返回子进程的ID,给子进程返回:0;

      当调用fork后:

        1)系统会映射虚拟内存空间给子进程;

        2)拷贝父进程的堆、栈,数据段给子进程;

       3)给父进程返回子进程ID,给子进程返回0;

       4)子进程共享父进程的代码段;

       5)fork返回后,父、子进程从fork函数调用的下一条语句同时往下执行;  

    ②、 exec函数族

     ③、结束进程:exit和_exit

     ④、使当前进程阻塞,给子进程收尸:wait、waitpid。   

linux下的进程的更多相关文章

  1. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  2. linux下对进程按照内存使用情况进行排序

    linux下对进程按照内存使用情况进行排序的命令为:ps aux --sort -rss 详细解说参见 http://alvinalexander.com/linux/unix-linux-proce ...

  3. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  4. linux 下的进程管理工具 supervisor

    在linux下监控进程: 1)yum install python-setuptools   linux下的python安装工具 2)easy_install supervisor     安装sup ...

  5. linux下监控进程需掌握的四个命令

    linux下监控进程需掌握的四个命令   在LInux系统下,最困难的工作之一就是跟踪正在系统中运行的程序,尤其是现在,图形桌面使用很多的程序,只是为了生成一个桌面环境,系统中运行了太多的进程,幸运的 ...

  6. Linux下的进程与线程(二)—— 信号

    Linux进程之间的通信: 本文主要讨论信号问题. 在Linux下的进程与线程(一)中提到,调度器可以用中断的方式调度进程. 然而,进程是怎么知道自己需要被调度了呢?是内核通过向进程发送信号,进程才得 ...

  7. Linux下的进程与线程(一)—— 进程概览

    进程是操作系统分配资源的基本单位.线程是操作系统进行运行和调度的基本单位. 进程之间可以切换,以便轮流占用CPU,实现并发.一般进程运行在用户模式下,只能执行指令集中的部分指令. 当进程进行上下文切换 ...

  8. linux下查询进程占用的内存方法总结

    linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...

  9. Django项目部署在Linux下以进程方式启动

    Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...

  10. Linux下php-fpm进程过多导致内存耗尽问题

    这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下   最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...

随机推荐

  1. bzoj1085 [SCOI2005]骑士精神——IDA*

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1085 搜索,IDA*,估价就是最少需要跳的步数: 代码意外地挺好写的,memcmp 用起来好 ...

  2. bzoj2419

    http://www.lydsy.com/JudgeOnline/problem.php?id=2419 ∑Ui−UjRi,j=0∑Ui−UjRi,j=0 ∑U1−UjR1,j=1∑U1−UjR1,j ...

  3. WinRAR 激活码(KEY)

    引自:http://blog.sina.com.cn/s/blog_6fd3b4800100nyk0.html WinRAR 是一个强大的压缩文件管理工具.它能备份你的数据,减少你的 E-mail 附 ...

  4. Eclipse 安装 Maven 插件的几种方法

    转自:https://blog.csdn.net/oqqHun123/article/details/79674994 昨天直接在机器上配置了Maven环境,今天顺便把Eclipse等IDE环境配置好 ...

  5. vs code 快速生成vue 模板

    vs code 快速生成vue 模板 1.使用快捷Ctrl + Shift + P唤出控制台,然后输入snippets并选择.(或 文件>首选项>用户代码片断里面,输入 vue.json ...

  6. VBNET AutoCAD Activex 切换图层为当前图层失效

    最近有朋友询问切换图层的代码 com切换图层 <CommandMethod("mycl")> Public Sub MySubLayerChange() Dim Thi ...

  7. c++ string函数合集

    s.substr(x,len) 在s中取出从x位置开始,长度为len的字符串,并返回string类型的字符串. s.find(a) 在s中查找字符串a,并返回起始下标(从0开始),若不存在,返回184 ...

  8. git 详细部署及其应用

    第1章 版本控制系统 自动生成备份.随时回滚.知道改动的地方. 1.1 svn和git的区别 1.1.1 svn 集中式的版本控制系统,只有一个中央数据仓库,如果中央数据库仓库挂了或者不可访问,所有的 ...

  9. C语言小项目-基于TCP协议和SOCKET编程的网络通信系统

    1.1 功能结构图   网络通信系统一共由4个模块组成,分别是点对点客户端.点对点服务端.服务器中转服务端.服务器中转客户端.这4个模块是成对使用的,点对点客户端和点对点服务端一起使用,服务器中转服务 ...

  10. STL之set和multiset

    set是与集合相关的容器,STL为我们提供了set的实现,在编程题中遇见集合问题直接调用是十分方便 SET set模版类的定义在头文件<set>中. 定义set对象的示例代码如下: set ...