zoukankan      html  css  js  c++  java
  • Process学习

      主要系统总结下我对进程的认识,以前理解得不够全面不够深入。本文肯定还不够好,当有新的认识新的理解后还会随时来更新。读完本文,下面几个问题便可理解清楚。

    1.进程是什么?

    2.为什么要有进程这个概念?

    3.进程需要哪些成分?

    4.进程怎么管理?

    5.进程状态?

    进程的定义

    进程就是计算机程序被执行的实例。linux系统可以top命令查看进程,大部分人还是用windows,你应该有过电脑很卡的时候吧?这个时候怎么办?Ctrl+Alt+Del打开任务管理器,查看是哪个或哪几个进程占用了大部分的cpu,关掉后,你的电脑又开始流畅起来了。

    为什么要有进程

      操作系统就是由很多程序代码组成的,只是非常复杂。一个程序的执行是这样的,首先,程序代码在辅助存储器(一般是硬盘)里,加载到主存(memory),cpu分配资源和处理器时间给机器码(代码最终都必须编译成机器码)。一个cpu只能执行一个程序,如果不采取诸如多线程之类的技术,计算机中那么多程序要使用cpu呢?虽然现在已经有多核cpu了,但是和程序的数量比,还是不够。那么多程序要争夺cpu使用权,是不是需要好好管理下,进程就是为了这个使命而诞生的,有了进程,管理和调度进入主存的程序就会比较方便。

    进程的组成

    进程由5部分组成:

    (1)和程序相关的可执行的机器码的一个镜像;(代码的最终形态,就是一些指令的集合,只不过现在是0101)

    (2)主存;(要存放code,data等)

    (3)操作系统资源描述符;(文件描述符,数据来源等)

    (4)安全属性;(英文叫security attributes,进程拥有者或进程权限)

    (5)进程context;(寄存器的内容,物理内存地址等)

    进程的管理

    管理进程所需要的信息在process control blocks里面。这个数据结构在操作系统内核里。管理一个进程所需要的信息就存储在这个数据结构里面了。里面有哪些信息呢?

      (1)进程识别数据;

      (2)处理器状态数据;

      (3)进程控制数据。

      os就是通过进程识别数据(进程id)来识别不同进程,根据处理器状态数据和进程控制数据来管理进程。

    进程的状态

    Wating,Running,Blocked状态下的进程在主存里。

      当一个进程"Created"的时候,process就从辅助存储器加载到主存,process scheduler给process一个状态"Waitting"。之所以有个Waitting是因为要进入Running状态需要些准备工作,这个著名的准备工作叫context switch(就是上下文环境切换,一个进程的某个时刻的信息的记录),当scheduler完成context switch后,process就进入处理器,状态更新为"running",处理器执行指令。

      当一个进程需要等待资源(等待用户输入或打开文件)时,process就变为“blocked”状态,当等待的资源来到时,process就进入“watting”状态。

      当一个process完成任务或被用户强行中断,process就进入“Terminated”状态。主存里关于这个process的所有数据将被删除。

  • 相关阅读:
    一个主机下创建两个MySQL
    Chrome: Failed to read the 'localStorage' property from 'Window' 的解决办法
    Effective C++
    归并排序
    Daily Note
    关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
    测试公式
    VLAN原理解释
    子网划分
    windows下制作debian U盘启动
  • 原文地址:https://www.cnblogs.com/HpuAcmer/p/4456031.html
Copyright © 2011-2022 走看看