zoukankan      html  css  js  c++  java
  • liunx进程管理之进程介绍

    关于进程 process

    ====================================================================================
    What is a process? 什么是进程
    Process life cycle 进程的生命周期
    Process states 进程状态

    什么是进程?
    进程是已启动的可执行程序的运行实例,进程有以下组成部分:
    • 已分配内存的地址空间;
    • 安全属性,包括所有权凭据和特权;
    • 程序代码的一个或多个执行线程;
    • 进程状态。
    程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix
    进程: 是程序运行的过程, 动态,有生命周期及运行状态。

    程序和进程的区别


    • 程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程
    • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
    • 进程还具有并发性和交往性,而程序却是封闭的

    进程和线程的区别


    • 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
    • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行

    进程的生命周期

    父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
    Centos5/6: init
    Centos7: systemd

    父子进程的关系
    子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程
    在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
    父进程终止子进程自然终止。


    子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

    前台进程和后台进程
    前台进程:在 shell 提示处理打入命令后,创建一个子进程,运行命令, Shell 等待命令退出,然后返回到对用户给出提示符。这条命令与 Shell 异步运行,即在前台运行,用户在它完成之前不能执行别一个命令 。
    后台进程:在 Shell 提示处打入命令,若后随一个 &, Shell 创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。“后台进程必须是非交互式的” 。




    进程状态
    在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求
    会不断变化,从而为进程分配一个状态,它随着环境要求而改变。

  • 相关阅读:
    php 匿名函数和闭包
    项目在线压缩js
    USACOTrainning.The Clocks
    USACOTrainning.Mother's Milk
    c# TXT文件读写
    Access以及少量Regex
    USACOTraining.Packing Rectangles
    First
    CUGBLinker and EXE
    异常处理总结
  • 原文地址:https://www.cnblogs.com/anttech/p/10597606.html
Copyright © 2011-2022 走看看