Linux基础七——进程的描述
来源:互联网 发布:域名注册检测工具 编辑:程序博客网 时间:2024/06/05 11:53
在早期的单道批处理系统里,程序的执行方式是顺序的,在内存里只允许装入一道程序,并且由他独占系统中的所有的资源,任性!
但是这种处理方式有明显的缺点:效率低,浪费资源。
考虑到我们希望其能并发的执行多个程序并共享资源,我们引入了进程的概念。
***************前趋图
前趋图:用于描述进程先后顺序的有向无循环图,它的每个节点表示一个进程、程序段或者一条语句。进程之间的前趋关系使用->来表示
eg:p1和p2存在前趋关系则可以表示为:p1->p2 该图的意义是:p1开始执行之前p2必须完成
至于为什么不能有循环,举个栗子:
p1指向p2,p2又指向p1这种情况下,p2的开始依赖于p1的完成,p1的开始依赖于p2的完成,这显然是没有办法实现的。
***************程序的执行顺序
一个应用程序由若干个程序段组成,而这些程序段必须遵守一定的执行顺序才能正确的完成某个功能。而我们的程序的执行顺序就可以是用前趋图来表示。
程序在顺序执行时具有以下特征:
1、顺序性:每个操作必须在下一个操作开始前结束
2、封闭性:程序运行时独占全机资源
3、可再现性:只要初始条件相同无论执行多少次程序的结果不变
***************程序的并发执行
程序的并发执行到底啥?举个栗子:我们现在有三个程序:作业的输入、计算、打印,在我们完成了第一个作业的输入并且进入了计算第一个作业的时候,我们的作业输入程序可以接受第二个作业的输入。同理,在我们计算完成并进入打印第一个作业的阶段时,我们可同时进行第二个作业的计算。
结论:不存在前趋关系的程序可以并发的执行
eg: s1:a = x+2
s2:b = y+3
s3:c = a+b
s4:d = c+1
这条语句的前趋图如下:
程序在并发执行的时候具有以下特征:
1.间断性:并发执行的程序之间性成相互制约的关系。例如输入程序并没有完成第一次的输入此时计算程序必须等待。
2.失去封闭性:当系统中存在多个并发执行的程序时,系统中的资源将被他们共享。而这些资源的状态也可以被这些程序所改变
3.不可再现性:因为程序的速度是不可以预见的。如果存在一个共享变量在程序每次执行时两个程序都会对该变量做一定的改变,我们不可以预知最后的结果是什么。
并发与并行:
并行性:两个及以上事件在同一时刻发生
并发性:两个及以上事件在统一时间间隔发生
***************进程的定义
进程:(1)进程是程序的一次执行
(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动
(3)进程是具有独立功能的程序在数据集合上运行的过程,也是系统进行资源分配和调度的独立单位
进程特征:
1.动态性:进程是静态的程序在执行时的过程,由创建产生,由调度执行,由撤销而消亡。
2.并发性:多个进程实体同村域内促进,并且能够在同一时间段内同时运行。
3.独立性:进程实体可以各自独立运行,独立获得资源也是独立的接受调度的基本单位。
4.异步性:进程按照各自独立的不可预知的速度前进。
***************进程的基本状态及转换
1)进程的三种基本状态
就绪:进程已经做好准备进入运行状态,已经分配到了除CPU以外的所有资源╰( ̄▽ ̄)╭
系统将处于就绪状态的进程们排成一个就绪队列
执行:进程已经获得CPU
阻塞:正在执行的进程由于发生了某件事情暂时无法继续执行。
同样地,系统也将这些阻塞的宝宝们排成一个阻塞队列
2)进程状态之间的转换
进程在运行的过程中会发生状态的转换,基本状态转换关系图如下:
*********************************************************************************************************************************************
进程的切换:在进程运行时CPU会在寄存器里残留进程的临时数据,当进程被切换出去之前这些临时数据都会被保留下来,
当其恢复时也会先将进程的那些临时数据加载进去,此时就该进程就和他被切换之前一样。我们将这些数据称为:上下文数据。
***************进程的地址空间
1)进程的地址空间的具体表达
我们以一个小程序来验证一下此图的正确性
该程序的结果如图
我们可以看见其中的数据所在的位置与我们之前给出的空间地址模型一致。
2)分段存储式管理方式
a.引入分段的原因
通常程序都被分为若干个段,如主程序段,子程序段,数据段,栈段等等,每个段都是从0开始编址,是相对独立的逻辑单位,我们采用分段机制十分的方便管理,满足信息共享等
b.分页与分段
分页系统里的页只是存放信息的物理单位(块),并无完整的逻辑意义,而一个可被共享的过程往往可能需要占用数十个页面,这为实现共享增加了困难而此时我们就可以将需要共享的数据放入一个段内,极大地简化了共享的实现。
c.分段的基本原理
在分段存储管理方式里,作业的地址空间被分为了若干个段,每个段定义了一组逻辑信息,每个段都有自己的段号以及一段连续的地址空间
d.段表
在分段存储管理系统里,我们为每个段分配一个连续的分区。进程中的各个段,可以离散的装入内存的不同分区。为了保证程序能够正常的运行,我们为每个进程建立了一张映射表——段表,记录了该段在内存里的起始位置和段的长度,用于实现逻辑到物理内存的映射
我们来看一下段表映射的示意图
左边一部分代表我们的作业空间 而中间就是我们的段表,最右边则是内存空间
f.地址变换机制
为了实现从逻辑地址到物理地址的转换,在系统里设置了段寄存器,用于存放段表起始位置和段表的长度TL,在转换时,系统将逻辑地址的段号和段表长度TL比较如果段号大于TL则表示越界访问,产生中断信号,如果没有越界则根据段表的起始位置计算对应段表项的位置,从里面读出该段的内存起始位置,然后检查段内地址是否超过该段的段长,如果超过同样发送中断信号,若均未越界则将段基址和段内偏移相加即可得到物理地址。
g.分页和分段
1.页是物理信息单位
2.页的大小固定并且由系统决定
3.分页的用户程序地址空间是一维的
- Linux基础七——进程的描述
- Linux内核分析——进程的描述和创建
- linux下的进程描述符——task_struct
- linux进程描述符—task_struct结构
- Linux下的进程描述
- Linux内核分析之六——进程的描述与进程的创建
- 进程—Linux进程描述符初印象
- Linux下进程描述(1)—进程控制块
- Linux进程控制基础(七)
- linux基础命令(七)进程管理
- 进程的描述——PCB
- Linux的进程------进程的描述和进程的创建
- [linux]进程(七)——进程通信
- Linux 基础命令(七)—— 软件包的管理
- Linux进程描述符——task_struct(初学者的简单学习)
- 【Linux】 进程PCB的描述(task_struct)
- linux下的进程描述符task_struct
- Linux基础——linux中进程的类型
- JavaWeb中使用过滤器来解决中文乱码问题
- 动态规划 最长公共子序列(LCS)问题
- 生成窗口最大值数组
- 常用网页特效-瀑布流布局(开源)
- AJAX获取服务器文件
- Linux基础七——进程的描述
- 仿QQ聊天项目(二)
- 小白上手第一弹——学会真机测试
- mysql 创建函数
- JDBC
- LINUX VIM 下一些基本的操作命令
- Topcoder SRM 636 Div2 A
- 做移动开发有这些值得阅读的书
- string转化为int