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

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的所有数据将被删除。

Process学习的更多相关文章

  1. salesforce 零基础学习(三十五) 通过Process Builder和Approval Processes锁定记录(Lock Record)

    有的时候我们可能有这样的需求,当某个字段为特定的值情况下,便锁定此条记录,仅允许Profile为System Admin的用户修改或者解锁,其他的用户只能查看此条记录,不能修改此条记录,这种情况下我们 ...

  2. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  3. JAVA 学习随笔 : JDK Enhancement Process JEP process

    是时候寻找一个学习JAVA的路径了 ---- JDK Enhancement Process Oracle发布了JDK增强提案与路线图进程,目的在于鼓励OpenJDK提交者贡献点子和扩展以改进Open ...

  4. Dynamic CRM 2013学习笔记(三十九)流程2 - 业务流程(Business Process Flows)用法详解

    业务流程(Business Process Flows)是CRM 2013 里一个新的流程,它提供了可视化的流程表现.业务人员创建有效.流线型的业务流程让最终用户知道当前在哪.下一步要做什么,用户可以 ...

  5. contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>

    说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ---------------------------------------------- ...

  6. node学习 process笔记

    如果你是node大神好了可以关闭此页面了因为接下来游览会白白浪费你许多时间,最近一直学习node.js今晚看到 alsotang 在 github上的node教程 https://github.com ...

  7. Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)

    前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量 ...

  8. Flink学习笔记:Operators之Process Function

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  9. 学习动态性能表(7)--v$process

    学习动态性能表 第七篇--V$PROCESS  2007.5.30 本视图包含当前系统oracle运行的所有进程信息.常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联 ...

随机推荐

  1. android 电容屏(三):驱动调试之驱动程序分析篇

    平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...

  2. uyouo[]常棒的一篇关于innnodb next-key lock的文章

    何登成的 MySQL 加锁处理分析 Innodb锁机制:Next-Key Lock 浅谈

  3. 三维软件转Unity的系统单位设置研究

    Unity的系统单位为米,其他3D软件的模型导入,而保持和Unity的比例一致是非常重要的,下面对各软件进行测试: ㈠. 3dsmax 转 Unity的比例为100:1:也就是说Unity单位是3ds ...

  4. bzoj1789 AHOI 维护数列(线段树)

    首先想到线段树,然后刚开始写忽然想到树状数组求和岂不是更快,而且编程复杂度又小,于是把之前写的删掉,写树状数组,写完模版之后忽然发现这题竟然是区间修改! 于是又删掉重写,忽然发现不会处理又加又乘的,果 ...

  5. JQuery安全分析

    JQuery安全分析: JQuery的风险均来源于对输入的数据没有进行有效性检验.客户端的Javascript需要检验:来源于服务器的数据.来源于当前页面的用户输入,服务器端需要检验来源于用户端的数据 ...

  6. (十)学习CSS之padding属性

    浏览器支持 所有浏览器都支持 padding 属性. 注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit". 定义和用法 pa ...

  7. Memcache缓存与Mongodb数据库的优势和应用

    先说说自己对 Memcache和Mongodb的一些看法,主要是抛砖引玉了,希望看到大家的意见和补充. Memcache Memcache的优势我觉得总结下来主要体现在: 1) 分布式.可以由10台拥 ...

  8. Algorithm for Maximum Subsequence Sum z

    MSS(Array[],N)//Where N is the number of elements in array { sum=; //current sum max-sum=;//Maximum ...

  9. 【Tcpcopy】离线回放功能

    最近因调试问题,需要一直进行tcpcopy,拿有问题的包进行测试.决定使用tcpcopy对录制脚本进行回放,以下为我操作的具体步骤.主要是三块 1 下载安装具有离线回放功能的tcpcopy 2 使用t ...

  10. jetty属性

    jetty 版本信息      Jetty7 - 此插件更名为jetty-maven-plugin,以便更符合maven2的协定.为了在Web应用做快速应用开发做准备,详见多Web应用源目录.   为 ...