进程与程序

来源:互联网 发布:linux 修改文件内容 编辑:程序博客网 时间:2024/06/03 13:52

重要的概念:

    中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。

程序:顺序执行的指令序列和数据的静态的文件
单道、多道程序:
单道:在一个机器上每次只能执行一道程序,不同的程序按顺序排队逐个执行。简单嵌入式系统。
多道:在一个机器上同时活跃着多个程序:并发执行
单道程序的特点

顺序性:按程序设定的顺序执行
封闭性:资源独占:只有该指令序列才能改变机器的状态
可再现性:不管什么时候再次执行,资源的分配情况,机器的状态和运行的结果可再现,单一的。

单道程序的缺点:
资源浪费:输入、处理与输出是使用不同的资源;输入的时候CPU没办法加工。IO设备的运作,控制器,是一种协处理器,与cpu并列独立。
小贴士:I/O设备与I/O操作:管理和控制计算机的所有输入/输出(I/O)设备是操作系统的主要功能之一,主要分为字符设备和块设备。
可实现的功能简单,逻辑简单:无程序合作,通信,交互,在生命周期内,不支持进程间通信。

多道程序的特征
间断(异步)性:程序走走停停,失去原有的时序关系,节奏是不可再现了,每次执行环境不一样了。
并发:同时推进,CPU处理碎片化
并行:多个CPU
在逻辑上没障碍时,可以运行但没办法运行(照顾其他程序),间断了,OS希望知道,你处在什么状态底下。
制约性:程序之间的同步或共享资源的互斥使用
失去封闭性:资源共享:程序受其他程序的控制逻辑的影响
失去可再现性:逻辑结果是可再现的

进程:为了描述程序在并发执行时对系统资源的共享,我们需要一个描述程序执行时动态特征的概念,这就是进程。
进程代表CPU所能处理的单个任务,任意时刻,CPU总是运行一个进程,其他进程处于非运行状态。

进程是程序的一次执行过程。

是一个具有独立功能的程序
在一个数据集合上的一次动态执行过程】
是一个独立调度的活动:调度的对象是进程
是一个可以分配给予资源的抽象实体:有哪些资源,资源给谁用

在进程模型底下的阐述:
动态性、并发性、独立性:是运行的基本单位,资源分配和调度的单位、不可再现性:向前推进的速度不可再现

程序与进程的区别:
程序是静态的文本,可长期存在;进程是动态的执行过程,存在是一时的。

进程模型:
用进程来描述和实现计算机的运行机制:
—计算机上所有正在运行的用户程序,以及部分操作系统程序
被组织成若干个进程并发运行。
——计算机的资源分配,调度也是以进程作为基本单元进行的。
小贴士:操作系统的部分程序不是以进程方式运行的。进程切换过程不是以进程方式运行的系统程序

创建进程:

程序的地址空间映射在内存中。地址空间的独立性。
资源分配:A打开的文件和B不一样,资源是以文件形式表示的。
fork:父进程和子进程的返回值一致,AB可以共享一段代码与数据,但逻辑上是分开的。
父子进程打开的文件之间有什么关系?
fork点的模拟性;打开的应该是一样的,操作有所耦合
文件是一个信息流,子进程的位置会影响父进程,子进程的活动,父进程可控。逻辑上相互牵连
fork点之后的行为是分开的,子进程再打开文件,父进程不可见。

不可再现性

向前推进的节奏不可再现

进程地址空间:

程序与进程的相比较

进程模型

用进程来描述和实现计算机的运行机制
策略/机制:机制是作死的,策略是用户可改变的。
用户程序与部分OS程序被组织成若干进程并发运行
有些系统进程不是以进程方式运行的::调度程序不应该是进程:决定什么程序在当前计算机上运行,没有进程ID号,以事件触发方式运行;实现机制的相关,比如中断
计算机的资源分配,调度也是以进程作为基本单元进行的。
控制信息,
控制结构,inode——>文件

刻画程序运行的方式

单道执行模式:箭头程序计数器,硬是串行的
多道执行模式:ABCD四个进程:虚拟的或实际的
A__
B**__
C****__
D******__
时间与逻辑上的相互关系

进程的生命周期

生成:fork大部分,用户进程;差别在哪?
fork是用户的请求,系统想要产生进程不用这么麻烦。
exit(.) main函数结束调用
exec:执行完A.out就退出
讨论:main函数是不是进程执行的开始?shell命令解释器,会产生子进程,exec后才能执行main函数

创建:

系统初始化:配置,调度
fork系统调用
响应命令行
批处理作业的初始化

讨论:fork到底做了什么事情?

    一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。关于fork指令:http://blog.csdn.net/jason314/article/details/5640969 这篇博文十分的好,可以学习

终止:

正常退出 exit
出错退出
严重错误
被其他进程kill

讨论:exit系统调用的实现
信号:

进程的树结构

父子关系
init 初始化进程,系统创建的,所有进程的根

进程的状态

运行态:进程正在占用CPU running :单道只有running
就绪状态:ready
逻辑上的等待:block 受阻状态
进程的状态转换图:
running->blocked sleep()占用CPU盲等或挂起
pause() 系统调用 :: 可设置时间

running->ready:cpu资源紧缺,轮转

blocked->ready:

没有blocked->running:一醒过来马上执行不好,OS没办法进行转移,先变成就绪,排队没有ready->blocked:没有运行,要运行起来才可能转换到blocked状态

这里写图片描述
新建状态:created 正在生成状态:也是一种特殊的block,构造好就绪
父进程fork(): 首先父进程通过系统调用fork来创建子进程,调用fork时,子进程首先处于创建态,fork调用为子进程配置好内核数据结构和子进程私有数据结构后,子进程就要进入就绪态3或5,即在内存中就绪,或者因为内存不够,而导致在SWAP设备中就绪。
对应于进程刚刚被创建时没有被提交的状态,并等待系统完成创建进程的所有必要信息。 进程正在创建过程中,还不能运行。操作系统在创建状态要进行的工作包括分配和建立进程控制块表项、建立资源表格(如打开文件表)并分配资源、加载程序并建立地址空间表等。创建进程时分为两个阶段,第一个阶段为一个新进程创建必要的管理信息,第二个阶段让该进程进入就绪状态。由于有了新建态,操作系统往往可以根据系统的性能和主存容量的限制推迟新建态进程的提交。

UNIX进程9状态转换图:
SVR4:系统5版本4
9个调度状态
基本情况:整体架构:一个进程开始运行时,有时在用户态,有时在内核态 user running &kernal running
ready 地址空间在内存里或者磁盘上,内存里的才可以运行,磁盘里的要转移到内存上才可以运行,相关观念见内存管理
就绪态分为:内存就绪态和交换区就绪态
阻塞态分为:内存阻塞和交换区阻塞 或称sleep
交换区阻塞—>被叫起后进入交换区就绪态
内存阻塞—>被叫起后进入内存就绪态

终止状态:exit():称僵死状态:zombie
僵死进程,电脑术语。是指子进程退出时,父进程并未对其发出的SIGCHILD信号进行适当处理,导致子进程停留在僵死状态等待其父进程为其收尸,这个状态下的子进程就是僵死进程。

调度状态的转移
调度程序看到进程的状态。

进程的相关属性:
进程的上下文:是进程的映像或环境
是对进程执行活动的描述。
进程管理表:存放了每个进程的控制信息(PCB)

    进程地址空间:

命令行与进程相关的命令:
伪文件系统:proc
以进程方式刻画的文件系统
讨论:?了解一下
sysfs

CPU的工作概况

以进程的活动来刻画计算机的运行
进程切换的时间耗费:不是以进程方式运行的系统程序
P1的收场,现场保护,和P2的开启与恢复
??什么引起了进程的切换??
外部发生了一个事件;周而复始,时钟中断;
现场保护:硬件中断引起的;硬件保存;保存进程相关值(软件),中断处理,中断切换,寄存器状态保护,保存起来,CPU现场,保存在哪里??
只需要保存寄存器?::内存?不需要,内存管理会帮忙。
执行调度程序:选择新的运行进程,恢复现场
为什么要执行一个调度??
把优先级高的先恢复出来,恢复的时间,内容是CPU的工作状态

进程管理的数据结构:
调查!!为什么要有这些管理项?

PCB结构:

它不是进程地址空间里,它是OS系统中的,提供系统调用。
包含什么东西??
存放了每个进程的控制信息
在内核中:

主要内容:

进程标识符
进程名(不排他)
进程状态
进程优先级
计费和调度信息:时间,times()系统调用(time()不一样),进程花了多少系统的时间和用户态的时间
内存分配情况
打开文件状态
资源占用情况
程序计数器

PCB结构的大小::
尽可能的压缩。PCB的大小可以反应系统的复杂性

PCB结构的管理项:
在系统中是进程的一个代言人,在就绪队列中排队
进程在数据结构中的替代

进程执行的上下文

映像(环境)
是对进程执行活动的描述。
寄存器的内容,进程的用户地址空间,PCB

大O模式
在内核态和用户态分别以用户的ID进行运行

0 0