2.1 动为进程,静为程序 -进程概论

问1:发明进程的原因?

早在20世纪60年代,进程的思想就已经被IBM的工程师们构想出来,并且一直延续到今天。当时的计算机面临着,一段时间内要轮转并发执行多个任务的要求,这要求各个程序之间占据的内存空间互不干扰,程序通过统一的程序编号进行访问控制。

但是在编写操作系统的时候,我们不可能预料到未来会有什么样程序运行在它之上(什么样都有可能)。所以我们必须给所有运行在操作系统上的程序,再封装一次,让它们拥有一些共性,这样才能借此进行各种后续调度机制的设计。

进程是为了解决程序并发性和资源共享性而发明的。


问2:现在计算机中的进程的定义是什么?

进程Process,就是程序执行的过程。

对于进程的定义的含义,我们可以从多个角度进行理解:

  • 进程可以看作是对处理器上运行程序的活动规律一种抽象
  • 进程可以看作是一种数据结构,他对程序执行过程进行封装。
  • 进程是操作系统设计的最小独立实体,拥有自己内存空间和分配的计算力。
  • 进程就是操作系统中的一项任务作业,负责一件事情。

    (我本人认为第一种定义更形象)

可见进程强调的是执行的过程,如果把程序看作是一道数学题,进程表示的就是做题的过程(开始、暂停、做完、放弃)。进程跟处理器CPU的联系远大于跟程序的联系。


问3:为什么进程跟处理器的联系更密切?

虽然进程是由程序创造出来的,但是在程序创造完进程后,进程跟程序就没有关系了。

 操作系统更关心的是进程跟处理器的关系。

因为进程就相当于做事情,管理者更关心的肯定是做事的人和事情的关系。

从另外一个角度来看,程序在操作系统眼里,本质就是存储在硬盘上的一个二进制数组,根本不需要投入精力去管理。

但是进程却是实时运行在内存中的过程,时刻渴求着CPU给予足够的计算力,操作系统必须掌控住它的状态,因为CPU的算力同一时刻只能给一个进程。


问4:进程的主要特性有哪些?

  • 内存空间独立,进程只能访问自己的内存空间和一些公用寄存器,绝对不能访问别的进程的内存空间。
  • 进程是动态的,当我们对待一个进程,一定要考虑它此时的状态。是在使用处理器还是在等待处理器。
  • 两个由相同程序创造出来的进程,其内存空间依然是独立的,不能互相访问。
  • 每个进程都有自己的独立编号,不会重复。


问5:进程的主要状态:

注意:确定进程的状态,是考试和学习的重点
  • 创建:程序从硬盘拷贝一份到内存变成进程,需要CPU执行
  • 运行:进程在被CPU执行
  • 等待:等待某些外部操作(I/O数据输入、信号),此时不被分配处理器
  • 就绪:等待操作结束,但还未被分配CPU的状态。
  • 终止:程序完成执行,或被操作系统强制注销,释放占据内存空间。

进程是操作系统学习的核心,是后续一切学习的基础,一定要多思考。
关键要理解两点 拥有独立的内存空间、跟CPU的五种状态

欢迎访问:个人博客-zobolの计算机操作系统学习札记

2.1 动为进程,静为程序 -进程概论 -《zobolの操作系统学习札记》的更多相关文章

  1. dvm进程,linux进程,应用程序进程是否同一概念

    Android 运行环境主要指的虚拟机技术——Dalvik.Android中的所有Java程序都是运行在Dalvik VM上的.Android上的每个程序都有自己的线程,DVM只执行.dex的Dalv ...

  2. 《C#与.NET程序员面试宝典》学习札记

    第2章 .NET概述 2.1-6~ .Net Framework / CLR / IL / Assembly IL:中间语言代码,不同语言(如C#,VB)的基于CLR的编译器编译生成的中间语言字节码, ...

  3. Java程序-进程中的"进程"

    进程 我们知道程序在磁盘上的时候是静态的,当他被加载到内存的时候,就变成了一个动态的,称为进程,如下图是程序被加载到内存后,在内存中的分布情况如下      此图来自http://blog.csdn. ...

  4. Linux C 程序 进程控制(17)

    进程控制 1.进程概述现代操作系统的特点在于程序的并行执行.Linux是一个多用户多任务的操作系统.ps .pstree 查看进程进程除了进程id外还有一些其他标识信息,可以通过相应的函数获得.// ...

  5. C# 强制关闭当前程序进程(完全Kill掉不留痕迹)

    C# 强制关闭当前程序进程(完全Kill掉不留痕迹) /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID ...

  6. delphi根据进程PID获取程序所在路径的函数(用OpenProcess取得句柄,用GetModuleFileNameEx取得程序名)

    uses psapi; {根据进程PID获取程序所在路径的函数}function GetProcessExePath(PID: Cardinal): string;varpHandle: THandl ...

  7. Android应用程序进程启动过程的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...

  8. 在Delphi中隐藏程序进程

    在开发某些软件的时候,为了保护程序自身,就需要用到隐藏程序进程.以下通过实例来讲解隐藏程序进程的方法: 1.创建一个新的项目 Project1 选择File,New Application.在表单Fo ...

  9. Linux 程序,进程和线程

    进程如何使用内存. 当程序文件运行为进程时, 进程在内存中获得空间. 1) Text : 固定大小 存储指令(instruction), 说明每一步的操作. 2) Global Data : 固定大小 ...

随机推荐

  1. 关于Vue.cli 脚手架环境中引入Bootstrap时,table表格样式缺失的解决办法

    Vue+bootstrap不能正常使用table的样式 环境:下载官网的本地bootstrap包,然后在vue 的index.html引入bootstrap的css和js环境 问题描述:1. vue里 ...

  2. SSM整合_年轻人的第一个增删改查_新增

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  3. python基础练习题(暂停一秒输出,并格式化当前时间)

    day5 --------------------------------------------------------------- 实例010:给人看的时间 题目 暂停一秒输出,并格式化当前时间 ...

  4. mmdetection训练出现nan

    训练出现nan 在使用MMDetection训练模型时,发现打印信息中出现了很多nan.现象是,loss在正常训练下降的过程中,突然变为nan. 梯度裁减 在模型配置中加上grad_clip: opt ...

  5. 技术分享 | SeleniumIDE用例录制

    1.录制回放方式的稳定性和可靠性有限 2.只支持 Firefox.Chrome 3.对于复杂的页面逻辑其处理能力有限 环境准备 Chrome 插件:https://chrome.google.com/ ...

  6. zookeeper篇-watch命令

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 每个路径节点都有一个watcher监控,当该节点数据改变时(CRUD), ...

  7. Bugku CTF练习题---MISC---telnet

    Bugku CTF练习题---MISC---telnet flag:flag{d316759c281bf925d600be698a4973d5} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现 ...

  8. Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

    错误描述 在DBeaver执行DDL语句时报错:SQL 错误 [1293] [HY000]: Incorrect table definition; there can be only one TIM ...

  9. JS&JQ

    1.css()设置单个或多个值: $(".iconList a").css("width", "32%")--单值:属性和值逗号分隔. $( ...

  10. hashlib加密模块和logging模块,购物车项目

    hashlib加密模块 简介 hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法.具体的加密支持有: MD5,sha1,sha224,sha256, sha384, sh ...