2.1 动为进程,静为程序 -进程概论 -《zobolの操作系统学习札记》
2.1 动为进程,静为程序 -进程概论
问1:发明进程的原因?
早在20世纪60年代,进程的思想就已经被IBM的工程师们构想出来,并且一直延续到今天。当时的计算机面临着,一段时间内要轮转并发执行多个任务的要求,这要求各个程序之间占据的内存空间互不干扰,程序通过统一的程序编号进行访问控制。
但是在编写操作系统的时候,我们不可能预料到未来会有什么样程序运行在它之上(什么样都有可能)。所以我们必须给所有运行在操作系统上的程序,再封装一次,让它们拥有一些共性,这样才能借此进行各种后续调度机制的设计。
进程是为了解决程序并发性和资源共享性而发明的。
问2:现在计算机中的进程的定义是什么?
进程Process,就是程序执行的过程。
对于进程的定义的含义,我们可以从多个角度进行理解:
- 进程可以看作是对处理器上运行程序的活动规律的一种抽象。
- 进程可以看作是一种数据结构,他对程序执行过程进行封装。
- 进程是操作系统设计的最小独立实体,拥有自己内存空间和分配的计算力。
- 进程就是操作系统中的一项任务作业,负责一件事情。
(我本人认为第一种定义更形象)
可见进程强调的是执行的过程,如果把程序看作是一道数学题,进程表示的就是做题的过程(开始、暂停、做完、放弃)。进程跟处理器CPU的联系远大于跟程序的联系。
问3:为什么进程跟处理器的联系更密切?
虽然进程是由程序创造出来的,但是在程序创造完进程后,进程跟程序就没有关系了。
操作系统更关心的是进程跟处理器的关系。
因为进程就相当于做事情,管理者更关心的肯定是做事的人和事情的关系。
从另外一个角度来看,程序在操作系统眼里,本质就是存储在硬盘上的一个二进制数组,根本不需要投入精力去管理。
但是进程却是实时运行在内存中的过程,时刻渴求着CPU给予足够的计算力,操作系统必须掌控住它的状态,因为CPU的算力同一时刻只能给一个进程。
问4:进程的主要特性有哪些?
- 内存空间独立,进程只能访问自己的内存空间和一些公用寄存器,绝对不能访问别的进程的内存空间。
- 进程是动态的,当我们对待一个进程,一定要考虑它此时的状态。是在使用处理器还是在等待处理器。
- 两个由相同程序创造出来的进程,其内存空间依然是独立的,不能互相访问。
- 每个进程都有自己的独立编号,不会重复。
问5:进程的主要状态:
注意:确定进程的状态,是考试和学习的重点
- 创建:程序从硬盘拷贝一份到内存变成进程,需要CPU执行。
- 运行:进程在被CPU执行。
- 等待:等待某些外部操作(I/O数据输入、信号),此时不被分配处理器。
- 就绪:等待操作结束,但还未被分配CPU的状态。
- 终止:程序完成执行,或被操作系统强制注销,释放占据内存空间。
进程是操作系统学习的核心,是后续一切学习的基础,一定要多思考。
关键要理解两点 拥有独立的内存空间、跟CPU的五种状态
2.1 动为进程,静为程序 -进程概论 -《zobolの操作系统学习札记》的更多相关文章
- dvm进程,linux进程,应用程序进程是否同一概念
Android 运行环境主要指的虚拟机技术——Dalvik.Android中的所有Java程序都是运行在Dalvik VM上的.Android上的每个程序都有自己的线程,DVM只执行.dex的Dalv ...
- 《C#与.NET程序员面试宝典》学习札记
第2章 .NET概述 2.1-6~ .Net Framework / CLR / IL / Assembly IL:中间语言代码,不同语言(如C#,VB)的基于CLR的编译器编译生成的中间语言字节码, ...
- Java程序-进程中的"进程"
进程 我们知道程序在磁盘上的时候是静态的,当他被加载到内存的时候,就变成了一个动态的,称为进程,如下图是程序被加载到内存后,在内存中的分布情况如下 此图来自http://blog.csdn. ...
- Linux C 程序 进程控制(17)
进程控制 1.进程概述现代操作系统的特点在于程序的并行执行.Linux是一个多用户多任务的操作系统.ps .pstree 查看进程进程除了进程id外还有一些其他标识信息,可以通过相应的函数获得.// ...
- C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
C# 强制关闭当前程序进程(完全Kill掉不留痕迹) /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID ...
- delphi根据进程PID获取程序所在路径的函数(用OpenProcess取得句柄,用GetModuleFileNameEx取得程序名)
uses psapi; {根据进程PID获取程序所在路径的函数}function GetProcessExePath(PID: Cardinal): string;varpHandle: THandl ...
- Android应用程序进程启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...
- 在Delphi中隐藏程序进程
在开发某些软件的时候,为了保护程序自身,就需要用到隐藏程序进程.以下通过实例来讲解隐藏程序进程的方法: 1.创建一个新的项目 Project1 选择File,New Application.在表单Fo ...
- Linux 程序,进程和线程
进程如何使用内存. 当程序文件运行为进程时, 进程在内存中获得空间. 1) Text : 固定大小 存储指令(instruction), 说明每一步的操作. 2) Global Data : 固定大小 ...
随机推荐
- 关于Vue.cli 脚手架环境中引入Bootstrap时,table表格样式缺失的解决办法
Vue+bootstrap不能正常使用table的样式 环境:下载官网的本地bootstrap包,然后在vue 的index.html引入bootstrap的css和js环境 问题描述:1. vue里 ...
- SSM整合_年轻人的第一个增删改查_新增
写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...
- python基础练习题(暂停一秒输出,并格式化当前时间)
day5 --------------------------------------------------------------- 实例010:给人看的时间 题目 暂停一秒输出,并格式化当前时间 ...
- mmdetection训练出现nan
训练出现nan 在使用MMDetection训练模型时,发现打印信息中出现了很多nan.现象是,loss在正常训练下降的过程中,突然变为nan. 梯度裁减 在模型配置中加上grad_clip: opt ...
- 技术分享 | SeleniumIDE用例录制
1.录制回放方式的稳定性和可靠性有限 2.只支持 Firefox.Chrome 3.对于复杂的页面逻辑其处理能力有限 环境准备 Chrome 插件:https://chrome.google.com/ ...
- zookeeper篇-watch命令
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 每个路径节点都有一个watcher监控,当该节点数据改变时(CRUD), ...
- Bugku CTF练习题---MISC---telnet
Bugku CTF练习题---MISC---telnet flag:flag{d316759c281bf925d600be698a4973d5} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现 ...
- 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 ...
- JS&JQ
1.css()设置单个或多个值: $(".iconList a").css("width", "32%")--单值:属性和值逗号分隔. $( ...
- hashlib加密模块和logging模块,购物车项目
hashlib加密模块 简介 hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法.具体的加密支持有: MD5,sha1,sha224,sha256, sha384, sh ...