taskkill无法终止进程 拒绝访问

您所在的位置:网站首页 cmd无法终止进程拒绝访问 taskkill无法终止进程 拒绝访问

taskkill无法终止进程 拒绝访问

2024-07-15 19:21| 来源: 网络整理| 查看: 265

程序顺序执行的特征

程序并发执行的特性

进程的特征

进程的状态及转换

进程的三种基本状态

创建和终止状态

进程状态的转换

进程管理中的数据结构

进程控制块PCB的作用

进程控制块中的信息

进程控制块的组织方式

操作系统内核

支撑功能

资源管理功能

进程的创建

引起创建进程的事件

进程的创建

进程的终止

引起进程终止的事件

进程终止过程

进程的阻塞和唤醒

进程的挂起和激活

进程同步的基本概念

两种形式的制约关系

临界资源和临界区

同步机制应遵循的规则

硬件同步机制

信号量机制

整形信号量

记录性信号量

AND型信号量

管程机制

管程的定义

条件变量

程序执行顺序 程序顺序执行的特征 顺序性:处理机严格按照程序所规定的顺序执行封闭性:程序在封闭的环境下运行,即程序运行时独占全机的资源,结果不会受外界影响可再现性:不论程序如何执行,都会得到相同的结果 程序并发执行的特性 间断性:并发执行的程序之间形成互相制约的关系,形成“执行——暂停——执行”这样的间断性活动失去封闭性:系统各种的资源将被共享,导致程序执行的环境受到外界因素的影响不可再现性:由于失去了封闭性,将导致其失去了可再现性 进程的定义和特征

进程实体由程序段、相关的数据段和PCB三部分构成。一般情况下,进程实体简称进程。所谓创建进程就是创建进程的PCB,撤销进程实质上是撤销进程的PCB。

进程的特征

程序和进程是两种截然不同的概念,出来进程具有程序没有的PCB结构之外,还具有下面的特征:

动态性:进程的实质是进程实体的执行过程。它由创建而产生,由调度而执行,由撤销而消亡。并发性:多个进程共存于内存中,且能在一段时间内同时执行。进程存在的目的就是为了能让进程实体能够并发执行,这也是OS的一个重要特征独立性:在传统的OS中,独立性是指进程实体是一个能够独立运行、独立获得资源和独立接受调度的基本单位异步性:是指进程按异步方式运行的,即各自独立。 进程的状态及转换 进程的三种基本状态 就绪状态:进程已经准备好运行,只需系统分配CPU资源即可运行执行状态:指进程已经获得CPU,程序正在执行阻塞状态:指正在执行的程序遇到某事件暂时无法继续执行执行时的状态 创建和终止状态 创建状态

进程创建是一个非常复杂的过程,一般要多个步骤才能完成:

由进程申请一个PCB,并向PCB中填写用于控制和管理进程的信息为进程分配资源把该进程转入就绪状态并插入就绪队列中

如果进程所需资源不能满足,创建工作尚未完成,无法完成进程的调度。于是把此时进程所处的状态称为创建状态

终止状态

进程的终止也需要两个步骤:

等待操作系统完成善后处理将PCB清零,并将PCB空间返还系统

进入终止状态的进程以后不再执行,但在操作系统中依然保留一个记录,其中保存状态码和一些计时统计数据供其他进程收集。

进程状态的转换 7e59e9c074f30b6255c9eae53fef66f7.png 进程状态图 进程管理中的数据结构

在计算机系统中,对于每个系统和每个进度都设置了一个数据结构,用于表征其实体。我们称之为资源信息表或者进程信息表。OS管理的这些数据结构一般分为四类:内存表,设备表,文件表和进程表。通常进程表又被称为进程控制块PCB。

进程控制块PCB的作用

PCB的作用是使一个多道程序环境下不能独立运行的程序能为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。

下面是对PCB具体作用的进一步阐述:

作为独立运行基本单位的标志:PCB使进程存在在系统中的唯一标志。获得了PCB才有取得OS服务的权力能实现间断式运行方式:在进程因为阻塞而暂停的时候,运行时的CPU现场信息保存在PCB中,待下次调度执行的时候恢复CPU现场使用提供进程管理所需要的信息:根据进程PCB中记录的程序和数据在内存或外存中的始址指针,找到相应的程序和数据。提供进程所需要的信息:只有处于就绪状态的进程才能被调度执行,而在PCB中就提供了进程处于何种状态的信息。进行调度还需要了解进程的其他信息。如优先级、进程的等待时间、已执行的时间等等。实现与其他进程的通信:进程同步机制是用于实现诸进程协调运行的。在PCB中还具有用于实现进程通信的区域或通信队列指针等。 进程控制块中的信息

在进程控制块中,主要包括四个方面的信息:

1 进程标识符:唯一地标识一个进程。通常具有两种标识符

外部标识符:方便用户对进程的访问内存标识符:方便系统对进程的使用,通常是一个进程的序号

2 处理机状态:也成为处理的上下文,主要是处理机的各种寄存器中的内容组成

3 进程调度信息:进程状态、进程调度需要的其他信息、进程优先级、事件(阻塞原因)等信息

4 进程控制信息:指用于进程控制所必须的信息。程序和数据的地址(进程实体中的程序和数据的内存或外存地址)、进程同步和通信机制、资源清单、链接指针(本进程所在队列下一个PCB的首地址)

进程控制块的组织方式

线性方式、链接方式、索引方式

进程控制

进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续进行的进程至于阻塞状态、负责进程运行中的状态转换等功能。进程控制一般是由OS内核原语实现的。

操作系统内核

现代操作系统中一般将OS划分为若干层次,再将OS的不同功能分别设置在不同的层次中。通常将一些与硬件紧密相关的模块、各种常用设备的驱动程序以及运行频率比较高的模块(如时钟管理、进程调度和许多模块公用的一些基本操作),将它们常驻内存,即通常称为OS内核。这种安排方式的目的在于两方面:对这些软件进行保护,防止其他应用程序破坏以及提高OS的运行效率。

相应的,处理机的执行状态也分为系统态和用户态两种:

系统态:也称为内核态、管态。具有较高的特权,能执行一切指令,访问所有寄存器和存储区,传统的OS都在系统态运行。用户态:也称为目太。具有较低的特权。只能执行部分指令。这样可以防止应用程序对OS的破坏。

大多数OS内核都支持以下两大方面的功能:支撑功能和资源管理功能

支撑功能

该功能是提供给OS其他众多模块的一些基本功能,以便支撑这些模块工作。其中三种最基本的支撑功能是:中断处理、时钟管理和原语操作。

资源管理功能 进程管理。在进程管理中,或者由于各个功能模块中的运行频率较高,如进程的调度和分派、进程的创建与撤销等;由于经常使用,故通常将他们放在内核中存储器管理。设备管理。由于设备管理和硬件紧密相关,因此其中很大部分也都设置在内核中。 进程的创建

在OS中允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,而把被创建进程的进程称为子进程。子进程可以创建更多的子进程,由此形成一个进程的层次结构。了解进程之间的关系是非常重要的,因为子进程可以继承父进程所拥有的资源。为了标识进程之间的家族关系,在PCB中设置了家族关系表项,以表明自己的父进程和所有子进程。进程不能拒绝子进程的继承权。

值得注意的是,在Windows中不存在任何进程层次结构的概念,所有的进程都具有相同的地位。一个进程创建另外一个进程时,创建进程获得一个句柄,其作用相当于一个令牌,可以用来控制被创建的进程。

” 引起创建进程的事件

导致一个进程去创建另一个进程的典型事件有四类:

用户登录。在分时系统中,用户在终端键入登录命令之后,若登录成功,系统将为该用户创建一个进程,并把它插入到就绪队列当中作业调度。在多道批处理系统中,当作业调度程序按一定的算法调度到某个作业时,便将它们装入内存,创建进程,插入队列提供服务。用户程序提出某种请求之后,系统专门创建一个进程来提供用户所需要的服务。应用请求。上述三种情况下,都是系统内核为用户创建进程;这类则是应用程序自己创建进程,以便进程能够同创建者进程并发运行的方式完成特定任务。 进程的创建

OS会调用进程创建原语Creat按下述步骤创建一个新进程:

申请一个空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB为新进程分配其运行时所需的资源,包括各种物理和逻辑资源,如内存、IO设备和CPU时间初始化进程控制块。初始化各种标识信息,处理机信息等将进程插入就绪队列 进程的终止 引起进程终止的事件 正常结束,表示进程的任务已经完成,准备退出运行;异常结束:指进程在运行过程中遇到了某种异常事件,使程序无法继续运行。如越界错误、保护错误、非法指令、特权指令错误、运行超时、等待超时、算术错误、IO故障外界干预:指进程应外界的请求而终止运行。如操作员或者父进程的某些请求。 进程终止过程 根据被终止进程的标识符,从PCB集合中找到该进程的PCB。若进程还在执行,则终止进程的执行若进程还有子进程,那么子进程应该也终止将被终止进程所拥有的资源全部还给其父进程或者系统将被终止进程(PCB)从所在队列(链表)中移出,等待其他程序来收集信息 进程的阻塞和唤醒

有下述几类事件会引起进程阻塞或者唤醒

向系统请求共享资源失败。此时进程不能继续执行而转变为阻塞状态等待某种操作完成。例如IO操作新数据尚未到达。如生产者——消费者模式等待新任务的到达。在一些OS中,往往设置一系列特定的系统,在完成任务之后就把自己阻塞起来,等待新任务到达。

进程使用block原语将自己阻塞,其他相关的进程使用wakeup原语将被阻塞进程唤醒

进程的挂起和激活

当系统出现引起进程挂起的事件时,OS将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起。当系统发生激活事件时,OS利用激活原语active将指定进程激活,激活原语先将进程从外存调入内存,检查该进程的现行状态,更改为挂起之前的状态。

进程同步 进程同步的基本概念 两种形式的制约关系

在多道程序环境下,是对多个相关进程在执行顺序上进行协调,使并发执行的诸进程之间能按照一定规则共享系统资源,由于它们共享着资源,因此存在以下两种制约关系

间接相互制约关系

系统大部分资源只能由进程互斥访问,为了保证这些进程能够有序进行,用户在使用之前应该提出申请,而不允许用户进程直接访问

直接相互制约关系

例如进程A和进程B共享缓存区,A向缓存区输入数据,B从缓存区取出数据。A和B之间就形成了直接制约关系

临界资源和临界区

许多系统资源都是互斥访问的,例如:打印机、IO设备等,这些资源就被称为临界资源。诸进程之间应该采取互斥方式,实现对这些资源的共享。而访问这些临界资源的代码被称为临界区。由于进程需要对系统提出申请对某一资源的访问,所以应该加入一段检查代码,这段代码被称为进入区。在对临界资源操作结束后,还要告诉系统自己已经用完了,以不影响其他进程,这段代码被称为退出区;除此之外的所有代码都被称为剩余区

同步机制应遵循的规则 空闲让进。当无进程处于临界区时,允许一个请求进入临界区忙则等待。当已有进程进入临界区内时,其他试图进入临界区内的进程必须等待有限等待。对要求访问临界资源的进程,应保证有限时间内能进入自己的临界区,以免陷入“死等状态”。让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免陷入“忙等”状态 硬件同步机制

现在OS一般都采用硬件来实现进程的同步,例如实现一条原语指令——关锁。

现在有关中断、测试并建立指令TS(Test-and-Set)、Swap指令(又称为XCHG指令)等硬件指令有效地实现进程互斥。

但当临界资源忙碌时,其他访问进程必须不断地进行测试,处于一种“忙等”的状态,造成处理机资源的浪费

信号量机制

信号量集机制是目前最广泛使用的,在单处理机、多处理机和计算机网络之中都有一席之地。

整形信号量

整型信号量定义为一个用于表示资源数目的整形量S,它只能通过两个标准的原子操作wait(S)和signal(S)来访问。这两个操作有分别称为P、V操作

记录性信号量

在整型信号量中并没有遵循“让权等待”的准则。如果采取了“让权等待”的策略后,又会出现多个进程等待访问同一临界资源的情况。为此,在信号量机制中,除了一个需要用于代表资源数目的整型变量value之外,还应增加一个进程链表指针list,用于链接上述所有等待进程。在信号量集中出现了可用资源就通过wakeup原语唤醒等待进程

AND型信号量

上述是多个进程争夺一个资源,如果争夺多个资源很可能出现死锁现象。AND同步机制的思想就是:将进程在整个运行过程中需要的所有资源,一次性全部分配给进程,待继承结束后一起释放。只要尚有一个资源未能分配给进程,其他所有可能为之分配的资源也不分配给它。,通过Swait和Ssignal操作

管程机制

大量分散在各个进程之间的操作为系统的管理带来的很大的麻烦,还容易因为操作不当引起死锁。于是产生了一种新的进程同步工具——管程

管程的定义

系统中的各种硬件和软件资源均可用数据结构抽象地描述其资源特性,即用少量信息和对该资源所执行的操作来表征该资源,而忽略它们的内部结构和实现细节。代表共享资源的数据结构和对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成了一个操作系统的资源管理模块,我们称之为管程。简单理解为对共享资源及其操作的抽象,包含了面向对象的思想。所有进程要访问临界资源只能通过管程来访问,管程每次只允许一个进程进入。

管程主要有以下特性:

模块化。即管程是一个基本程序单位,可以单独编译抽象数据类型。管程中不仅有数据而且有对数据的操作信息遮蔽。指管程中的数据结构只能被管程中的过程访问。

管程和进程的不同:

虽然二者都定义了数据结构,但进程定义的是私有数据结构PCB,而管程定义的是公共数据结构,如消息队列等;二者都存在对各自数据结构的操作,但是进程是由顺序程序执行有关操作,而管程主要是进行同步操作和初始化操作;设置进程的目的在于实现系统的并发性,而管程则是解决共享资源的互斥使用问题;进程通过调用管程中的过程对共享数据结构实行操作,管程是被动工作方式,而进程是主动工作方式进程之间能并发执行,而管程不能与其调用者并发进程具有动态性,而管程是一个资源管理模块 条件变量

在利用管程实现进程同步时,必须设置同步工具,如两个同步操作原语wait和signal。当某进程通过管程请求获得临界资源而未能满足时,管程便调用wait原语使进程等待,并将其排在等待队列上。仅当另一进程访问完成并释放该资源之后,管程才又调用signal原语,唤醒等待队列中的队首进程。

而仅仅上述的同步工具是不够的,考虑一种情况:当一个进程调用了管程,在管程中时被阻塞或挂起,这样其他进程也无法进入管程。为了解决这个问题,引入条件变量condition。通常,一个进程被阻塞或挂起的条件可有多个,因此在管程中设置了多个条件变量,对这些条件变量的访问只能在管程中进行。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3