电子商务推广网站,铜陵公司做网站,商业网站建站,最好的网站模板文章目录1.为什么引入进程2.进程究竟是什么#xff1f;进程的定义和属性#xff1a;3.进程的状态和转换4.什么是进程上下文5.进程的控制和管理6.为什么要引入线程7.线程的概念8.引入线程的好处9.进程和线程的区别1.为什么引入进程
1、我们知道#xff0c;最早出现的OS系统是…
文章目录1.为什么引入进程2.进程究竟是什么进程的定义和属性3.进程的状态和转换4.什么是进程上下文5.进程的控制和管理6.为什么要引入线程7.线程的概念8.引入线程的好处9.进程和线程的区别1.为什么引入进程
1、我们知道最早出现的OS系统是单道批处理系统它是顺序执行程序的即一个一个地按先到先执行的顺序依次执行。 作业运行过程中如果发生I/O请求高速的CPU便需要等待低速的I/O操作完成导致CPU资源利用率和系统吞吐量降低。
2、 而后为了缓解这个矛盾人们引入了多道批处理系统该系统让程序宏观上并发执行即在一道程序发起I/O请求时CPU不再选择等待I/O完全运行结束而是当一道程序因I/O请求而暂停运行时CPU便立即转去运行另一道程序用户既不能了解自己程序的运行情况也不能控制计算机【因为万一有其中一道程序根本不会占用CPU资源但是系统还是会给它分配了同等的资源所以根本不能达到人工控制】 3、再然后就诞生了分时操作系统把处理器的运行时间分成很短的时间片按时间片轮流把处理器分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算则该作业暂时停止运行把处理器让给其他作业使用等待下一轮再继续运行将程序分成一小片一小片的这个进程执行一点那个进程执行一点。虽然在内部进程的执行是一段一段的但是CPU的速度很快的速度都是纳秒级别的所以我们是感受不到进程执行过程中的停顿。 解释 1.上面的简单操作系统通过一些系统指令去操作程序然而程序本身也是一组指令的集合指令操作指令这是一个静态的概念无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系。
2.多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征.这些特征都是在程序的执行过程中发生的,是动态的过程。
3.程序这个静态概念已不能如实反映程序并发执行过程的特征.**为了深刻描述程序动态执行过程的性质,**人们引入“进程Process”概念。
4.引入进程想要实现的目标是什么呢?
-资源对多个应用程序是可用的 -物理处理器在多个应用程序间切换以保障所有程序都在执行中 -处理器和IO设备能得到充分利用。
5.所有现代操作系统采用的方法都是依据对应于一个或多个进程存在的应用程序执行的一种模型。
2.进程究竟是什么进程的定义和属性 程序是一个没有生命的实体只有处理器赋予程序生命时它才能成为一个活动的实体我们称其为进程
1、从理论角度看进程是对正在运行的程序过程的抽象
怎么理解这句话呢 正在运行的程序过程的抽象 你想象一下你在打LOL程序的时候电脑需要把程序抽象成进程进行管理什么时候操作什么指令。
从实现角度看是一种数据结构,目的在于清晰地刻划动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。 2、上面的话也许有点难以理解那是因为没了解它的狭义和广义定义
狭义定义进程就是一段程序的执行过程。 广义定义【官方定义】进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元在传统的操作系统中进程既是基本的分配单元也是基本的执行单元。
仔细看就会发现进程的目的是在于清晰地刻画动态系统的内在规律进而才能有效管理和调度进入计算机系统主存储器运行的程序
进程的定义总结为一句话一个执行中的程序的实例
进程提供给应用程序的关键抽象 ①进程是一个独立的逻辑控制流它提供一个假象好像我们的程序独占地使用处理器。 ②进程是一个私有的地址空间它提供一个假象好像我们的程序独占地使用存储器系统。 3、进程的一般特征
**动态性**进程的实质是程序在多道程序系统中的一次执行过程进程是动态产生动态消亡的。【这个很关键】 **并发性**任何进程都可以同其他进程一起并发执行 **独立性**进程是一个能独立运行的基本单位同时也是系统分配资源和调度的独立单位【这个也很关键】 **异步性**由于进程间的相互制约使进程具有执行的间断性即进程按各自独立的、不可预知的速度向前推进 4、进程的结构特征进程由进程控制块【PCB】、数据段和正文段三部分组成
进程控制块(PCB)进程控制块包含了充分的信息,这样就可以中断一个进程的执行并且在后来恢复执行进程时就好像进程未被中断过一样。PCB是进程存在的唯一标志PCB与进程同生死。系统创建进程时会产生一个PCB撤销进程时PCB也自动消失。
数据段系统把进程的数据段又划分成三部分: 用户栈区(供用户程序使用的信息区) 用户数据区(包括用户工作数据和非可重入的程序段) 系统数据区(包括系统变量和对换信息)。
正文段能被若干进程共享为了管理可共享的正文段UNIX设置了一张正文表每个正文段都占用一个表目用来指出该正文段在内存和磁盘上的位置、段的大小以及调用该段的进程数等情况。
**注意**多个不同的进程可以包含相同的程序一个程序在不同的数据集里就构成不同的进程能得到不同的结果 但是执行过程中程序不能发生改变。
可以这么说进程 程序代码 相关数据 进程控制块 3.进程的状态和转换
进程的三种基本状态
**1. 就绪状态**进程已获得除处理器外的所需资源等待分配处理器资源只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如当一个进程由于时间片用完而进入就绪状态时排入低优先级队列当进程由I/O操作完成而进入就绪状态时排入高优先级队列。 **2. 运行状态**进程占用处理器资源处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以 执行时(如所有进程都在阻塞状态)通常会自动执行系统的空闲进程。 **3. 阻塞状态**由于进程等待某种条件如I/O操作或进程同步在条件满足之前无法继续执行。该事件发生 前即使把处理机分配给该进程也无法运行。 进程状态的转换 运行—就绪这是由资源调度引起的主要是进程占用CPU的时间过长人家嫌弃它就让它去等待一下 就绪—运行运行的进程的时间片用完调度就转到就绪队列中选择合适的进程分配CPU 运行—阻塞发生了I/O请求或等待某件事的发生突然就有别的请求发生导致运行变阻塞 阻塞—就绪进程所等待的事件发生就进入就绪队列【队列是先进先出的表】
这里可以比喻成去超市排队买菜【运行—就绪】摊位只有一个窗口的时候一次性只能和一个人买菜买菜时间太久了就一边去继续排队排队的过程其实就是就绪状态【就绪—运行】轮到你了才可以再次购买【运行—阻塞】当你正在窗口前买菜的时候突然有人插队了直接推开你【阻塞—就绪】这时候你只能重新去排队谁让插队那个人比较霸道。
以上4种情况可以相互正常转换不是还有两种情况吗
阻塞–运行即使给阻塞进程分配CPU也无法执行操作系统載进行调度时不会載阻塞队列进行挑选其调度的选择对象为就绪队列 就绪–阻塞因为就绪态根本就没有执行何来进入阻塞态
这里可以比喻成你去超市买菜的时候看到很多很多人在排队买菜【阻塞–运行】你想强制插队进去窗口直接买菜但是排队的人就不同意了同样【就绪–阻塞】你在排队买菜的时候快排到自己了会考虑强制插队吗 4.什么是进程上下文
一开始小编也是很疑惑什么是上下文上面和下面的内容吗其实不然我们都知道万物必有因果有上文才有下文因此
操作系统中把进程运行的时的物理实体和运行的环境合称为进程上下文
△那么进程上下文我们知道其实是系统运行时提供的环境了系统调度新进程占有处理器【可以暂时看做CPU】的时候新老进程随之发生上下文切换这个上下文是什么概念呢老进程退出处理器的时候需要先保存其退出运行环境然后退出也就是说保存其退出进程上下文然后退出处理器这时候新进程要进来处理器了为了适应处理器的环境新进程需要先创建新的运行环境也就是说先创建新的进程上下文。新老进程发生上下文切换进程的运行被认为是在上下文中执行。 进程切换的步骤 1.保存中断进程的处理器现场情况 2.修改被中断进程的进程控制块有关信息相当于创建一个新的上下文环境 3.把被中断进程的PCB加入有关队列 4.选择下一个占有处理器运行的进程这时候新进程要准备进来了因为第二步已经为它创建好了环境 5.修改被选中进程的PCB的有关信息 6.设置被选中进程的地址空间回复存储管理信息 7.根据被选中进程的上下文信息恢复处理器现场 8.处理器开始新的进程处理
怎么样是不是觉得进程的切换很简单。
5.进程的控制和管理
上面说了进程从何而来进程有什么定义进程有什么状态的切换进程切换的进程上下文是什么…说了这些相信你一定很好奇进程这么厉害那么进程是如何控制谁来控制的呢
进程是由处理器控制控制的内容包括进程创建、进程撤销、进程阻塞和唤醒进程等这种功能由操作系统中的原语实现
原语是什么呢
原语是在管态下执行的就是有管理员权限的时候执行这个原语和我们所学的机器指令类似其特点就是执行过程中不允许被中断是一个不可分割的基本单位执行的时候是顺序的不是并发的。
因此进程有两种执行模式
一种是非特权态常称为用户态/目态这是因为用户程序通常在该模式下运行
另一种是特权态可称为系统态/内核态/管态
既然知道了处理器可以进行进程的控制现在我们用掌握的知识创建一个进程吧
步骤给新进程分配一个唯一的进程标识符-给进程分配空间-初始化进程控制块PCB-设置正确的连接-创建或扩充其他数据结构 创建成功后假设计算机里面有很多进程该如何切换呢 步骤在某一时刻一个正在运行的进程被中断操作系统指定另一个进程为运行态并把控制权交给这个进程
这时候系统不需要一个进程该如何撤销呢 进程的阻塞和唤醒
1.引起进程阻塞和唤醒的事件
1请求系统服务 2启动某种操作 3新数据尚未到达 4无新工作可做
2.进程阻塞过程 正在执行的进程当发现上述某事件后由于无法继续执行于是进程便通过调用阻塞原语block把自己阻塞。可见进程的阻塞是进程自身的一种主动行为。进入block过程后由于此时该进程还处于执行状态所以应先立即停止执行把进程控制块中的现行状态由执行改为阻塞并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列则应将本进程插入到具有相同事件的阻塞 等待队列。最后转调度程序进行重新调度将处理机分配给另一就绪进程并进行切换亦即 保留被阻塞进程的处理机状态在PCB中,再按新进程的PCB中的处理机状态设置CPU环境。 3.进程唤醒过程 当被阻塞的进程所期待的事件出现时如I/O完成或者其所期待的数据已经到达则由有关进程比如 用完并释放了该I/O设备的进程调用唤醒原语wakeup将等待该事件的进程唤醒。唤醒原语执行的过程是首先把被阻塞的进程从等待该事件的阻塞队列中移出将其PCB中的现行状态由阻塞改为就绪然后再将该PCB插入到就绪队列中。
6.为什么要引入线程
前面所学的进程我们了解到创建和切换进程的时候既有进程上下文环境初始化又有进程退出处理器时要保存其进程结束的上下文环境这样对系统的时间空间开销都很大效率很低这时候围绕着效率低这件事情我们引入线程的概念以小的开销来提高进程内的并发程度。
那么要提高效率我们提供了一种基本思路
把进程的两项功能①独立分配资源②被调度分派执行进行分离进程作为系统资源分配和保护的独立单位不需要频繁地切换和加载线程作为系统调度和分派执行的基本单位会被频繁地调度和切换
7.线程的概念
线程是进程内的一个相对独立的可执行单元 线程是操作系统中的基本调度单元在线程中包含调度所需的信息。
一个进程至少有一个线程可有多个线程。
线程并不拥有资源而是共享和使用包含它的进程所拥有的所有资源。 线程在需要时也可创建其他线程。线程有自己的生命期也有状态变化。
和进程一样进程有进程控制块【PCB】里面存储了充分被调用的信息因此每一个线程都有一个线程控制块【thread】用于保护自己私有信息主要由四个基本部分组成
一个唯一的线程标识符 、一组寄存器 、两个栈指针 、一个私有存储区 为什么线程又被叫做轻量级进程呢
线程运行在进程的上下文中,并共享使用进程的资源和环境。
系统调度的基本单位是线程而不是进程,每当创建一个进程时至少要同时为该进程创建一个线程。
线程状态有运行、就绪、等待和终止状态转换也类似于进程。
线程必须在某个进程内执行一个进程可以包含一个线程或多个线程
8.引入线程的好处
1.两个线程的调度切换方便线程是调度的基本单位进程是资源的拥有单位。
2.进程可以由一个或多个线程组成。在同一进程中线程的切换不会引起进程的切换不同进程间的线程切换则会引起进程切换。
3.共享同一地址空间资源不同进程间的地址空间是相对独立的而同一进程的各线程共享同一地址空间可访问其隶属的进程资源。
4.线程通信方便同一进程内的线程共享内存和文件因此它们之间可以相互通信无须调用内核。
5.占用资源少线程除了必不可少的一点资料 (私有堆栈和程序计数器)外自己不拥有系统资源.
9.进程和线程的区别
1.进程是cpu资源分配的最小单位线程是cpu调度的最小单位。以前进程既是资源分配也是调度的最小单位后来为了更合理的使用cpu(实际上是cpu性能越来越好)才将资源分配和调度分开就有了线程。线程是建立在进程的基础上的一次程序运行单位。
2.进程是应用程序的执行实例。比如说当你双击的Microsoft Word的图标你就开始运行的Word的进程。线程是执行进程中的路径。另外一个过程可以包含多个线程。启动Word时操作系统创建一个进程并开始执行该进程的主线程。由于一个进程可以由多个线程线程可以被认为是“轻量级”的过程。【参考】 内核不知道线程的活动但仍然管理线程的进程的活动。当线程调用系统调用时整个进程阻塞但对线程库来说线程仍然是运行状态即线程状态是与进程状态独立的。