zoukankan      html  css  js  c++  java
  • 进程的创建和结束

    进程的创建和结束

    一、进程的创建

    但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要有创建进程的方式,一些操作系统只为一个应用程序设计,比如微波炉中的控制器,一旦启动微波炉,所有的进程都已经存在。

    而对于通用系统(跑很多应用程序),需要有系统运行过程中创建或撤销进程的能力,主要分为4中形式创建新的进程:

    1. 系统初始化(查看进程linux中用ps命令,windows中用任务管理器,前台进程负责与用户交互,后台运行的进程与用户无关,运行在后台并且只在需要时才唤醒的进程,称为守护进程,如电子邮件、web页面、新闻、打印)
    2. 一个进程在运行过程中开启了子进程(如nginx开启多进程,os.fork,subprocess.Popen等)
    3. 用户的交互式请求,而创建一个新进程(如用户双击暴风影音)
    4. 一个批处理作业的初始化(只在大型机的批处理系统中应用)

    无论哪一种,新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的。

    1.1 UNIX和Windows创建进程

    关于创建子进程,UNIX和Windows:

    1. 相同的是:进程创建后,父进程和子进程有各自不同的地址空间(多道技术要求物理层面实现进程之间内存的隔离),任何一个进程的在其地址空间中的修改都不会影响到另外一个进程。
    2. 不同的是:在UNIX中,子进程的初始地址空间是父进程的一个副本,提示:子进程和父进程是可以有只读的共享内存区的。但是对于Windows系统来说,从一开始父进程与子进程的地址空间就是不同的。

    二、进程的结束

    1. 正常退出(自愿,如用户点击交互式页面的叉号,或程序执行完毕调用发起系统调用正常退出,在linux中用exit,在windows中用ExitProcess)
    2. 出错退出(自愿,python a.py中a.py不存在)
    3. 严重错误(非自愿,执行非法指令,如引用不存在的内存,1/0等,可以捕捉异常,try...except...)
    4. 被其他进程杀死(非自愿,如kill -9)
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    Java中BigDecimal的8种舍入模式
    Spring 4.3.2下实现http多次断点下载
    java文件同步性能测试
    JavaMail发送邮件时判断发送结果1.5.x
    关于mysql备份说明
    jxl 2.6.12 与 jxl 2.3.0 稳定版性能比较
    select选择框内容左右移动添加删除栏(升级)
    JS 清除字符串数组中,重复元素
    Js 数据容量单位转换(kb,mb,gb,tb)
    fine-uploader 5.11.8 (最新版) 使用感受
  • 原文地址:https://www.cnblogs.com/randysun/p/11517362.html
Copyright © 2011-2022 走看看