• 程序顺序执行的特征

  • 程序并发执行的特性

  • 进程的特征

  • 进程的状态及转换

    • 进程的三种基本状态

    • 创建和终止状态

    • 进程状态的转换

  • 进程管理中的数据结构

    • 进程控制块PCB的作用

    • 进程控制块中的信息

    • 进程控制块的组织方式

  • 操作系统内核

    • 支撑功能

    • 资源管理功能

  • 进程的创建

    • 引起创建进程的事件

    • 进程的创建

  • 进程的终止

    • 引起进程终止的事件

    • 进程终止过程

  • 进程的阻塞和唤醒

  • 进程的挂起和激活

  • 进程同步的基本概念

    • 两种形式的制约关系

    • 临界资源和临界区

    • 同步机制应遵循的规则

  • 硬件同步机制

  • 信号量机制

  • 整形信号量

  • 记录性信号量

  • AND型信号量

  • 管程机制

    • 管程的定义

    • 条件变量

程序执行顺序

程序顺序执行的特征

  • 顺序性:处理机严格按照程序所规定的顺序执行
  • 封闭性:程序在封闭的环境下运行,即程序运行时独占全机的资源,结果不会受外界影响
  • 可再现性:不论程序如何执行,都会得到相同的结果

程序并发执行的特性

  • 间断性:并发执行的程序之间形成互相制约的关系,形成“执行——暂停——执行”这样的间断性活动
  • 失去封闭性:系统各种的资源将被共享,导致程序执行的环境受到外界因素的影响
  • 不可再现性:由于失去了封闭性,将导致其失去了可再现性

进程的定义和特征

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

进程的特征

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

  1. 动态性:进程的实质是进程实体的执行过程。它由创建而产生,由调度而执行,由撤销而消亡。
  2. 并发性:多个进程共存于内存中,且能在一段时间内同时执行。进程存在的目的就是为了能让进程实体能够并发执行,这也是OS的一个重要特征
  3. 独立性:在传统的OS中,独立性是指进程实体是一个能够独立运行、独立获得资源和独立接受调度的基本单位
  4. 异步性:是指进程按异步方式运行的,即各自独立。

进程的状态及转换

进程的三种基本状态

  • 就绪状态:进程已经准备好运行,只需系统分配CPU资源即可运行
  • 执行状态:指进程已经获得CPU,程序正在执行
  • 阻塞状态:指正在执行的程序遇到某事件暂时无法继续执行执行时的状态

创建和终止状态

创建状态

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

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

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

终止状态

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

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

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

进程状态的转换

进程状态图

进程管理中的数据结构

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

进程控制块PCB的作用

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

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

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

进程控制块中的信息

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

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

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

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

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

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

进程控制块的组织方式

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

进程控制

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

操作系统内核

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

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

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

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

支撑功能

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

资源管理功能

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

进程的创建

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

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

引起创建进程的事件

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

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

进程的创建

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

  1. 申请一个空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB
  2. 为新进程分配其运行时所需的资源,包括各种物理和逻辑资源,如内存、IO设备和CPU时间
  3. 初始化进程控制块。初始化各种标识信息,处理机信息等
  4. 将进程插入就绪队列

进程的终止

引起进程终止的事件

  1. 正常结束,表示进程的任务已经完成,准备退出运行;
  2. 异常结束:指进程在运行过程中遇到了某种异常事件,使程序无法继续运行。如越界错误、保护错误、非法指令、特权指令错误、运行超时、等待超时、算术错误、IO故障
  3. 外界干预:指进程应外界的请求而终止运行。如操作员或者父进程的某些请求。

进程终止过程

  1. 根据被终止进程的标识符,从PCB集合中找到该进程的PCB。
  2. 若进程还在执行,则终止进程的执行
  3. 若进程还有子进程,那么子进程应该也终止
  4. 将被终止进程所拥有的资源全部还给其父进程或者系统
  5. 将被终止进程(PCB)从所在队列(链表)中移出,等待其他程序来收集信息

进程的阻塞和唤醒

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

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

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

进程的挂起和激活

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

进程同步

进程同步的基本概念

两种形式的制约关系

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

  1. 间接相互制约关系

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

  2. 直接相互制约关系

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

临界资源和临界区

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

同步机制应遵循的规则

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

硬件同步机制

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

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

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

信号量机制

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

整形信号量

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

记录性信号量

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

AND型信号量

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

管程机制

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

管程的定义

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

管程主要有以下特性:

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

管程和进程的不同:

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

条件变量

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

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

taskkill无法终止进程 拒绝访问_进程的基本概念相关推荐

  1. taskkill无法终止进程 拒绝访问_解决删除文件时,提示无法删除的问题

    有时我们想删除某个程序文件夹,或是卸载后残留的一些 .dll 等后缀的文件,却一直提示 "运行中" . "权限不足" ,甚至用第三方的强力删除功能都无法删除.这 ...

  2. win10软件拒绝访问删不掉_进程拒绝访问怎么结束_win10关闭进程拒绝访问的处理方法...

    2019-12-04 10:10:25 win10删除一个进程拒绝访问怎么办?我们在使用win10系统电脑工作学习中,可能在碰到一些进程没有响应时就会对其进行关闭.但有的网友的电脑却出现了进程拒绝访问 ...

  3. win10taskkill无法终止进程_Win10无法终止进程拒绝访问

    用任务管理器强制结束一些已经不使用程序的进程,是很多用户会用的功能之一,但是最近有使用win10系统的用户,遇到结束进程的时候,被拒绝访问.遇到这样的问题,给大家带来了这篇文章的方法,希望能帮助到大家 ...

  4. 结束拒绝访问的进程 cmd下结束进程 强行结束进程

    结束拒绝访问的进程 有些病毒和恶意进程我们在任务管理器里面是不能结束的,这个时候,如果又没有工具,就很麻烦了,今天看网管员世界,提到了一种方法,能够解决: 根本的思想是用system的权限来运行tas ...

  5. 结束拒绝访问的进程 cmd下结束进程 强行结束进程 1

    结束拒绝访问的进程 有些病毒和恶意进程我们在任务管理器里面是不能结束的,这个时候,如果又没有工具,就很麻烦了,今天看网管员世界,提到了一种方法,能够解决: 根本的思想是用system的权限来运行tas ...

  6. uniaccess进程无法结束 拒绝访问_嵌入式Linux编程——程序员小白不懂的进程、信号量、并发、互斥...

    所有学嵌入式Linux系统的看过来了,以下内容是每一位想学习Linux嵌入式系统想要了解的内容,真的很想要分享给大家! 本文分享的内容主要如下几个方面: 3.1 并发的原理 3.1.1 一个简单的例子 ...

  7. windows taskkill强制关闭进程拒绝访问解决方法

    如果taskkill /f /pid 123 出现拒绝访问时,可使用以下方式删除进程: wmic process where name='qq.exe' delete 如果这样还杀不死,恐怕就要进[安 ...

  8. 如果结束进程拒绝访问,可以尝试以下

    如果taskkill /f /pid 123 出现拒绝访问时,可使用以下方式删除进程: wmic process where name='qq.exe' delete11如果这样还杀不死,恐怕就要进[ ...

  9. Windows任务管理器结束进程“拒绝访问”解决办法

    被测软件:360 工具:命令提示符 终止任务时提示拒绝访问 找到文件位置,获取文件名 转到详细信息找到此程序,记录PID win+R运行cmd 键入 tskill 11380 回车就可以关闭了 我也试 ...

最新文章

  1. ​每日一皮:​入职新公司第一周的感受...
  2. GLUT及其函数的用法整理
  3. js操作frame详细解说,window.opener和window.parent的区别
  4. 小明分享:Esp32下softAP+tcp_server的简单实现
  5. 【ArcGIS遇上Python】从入门到精通系列之第二章:ArcGIS Python基本语法基础速递
  6. 【双11劲爆干货】阿里高级Java面试题(首发,70道)
  7. centos 6 安装mysql,CentOS6.5安装MySQL教程(完整教程)
  8. 使用Powershell远程管理Windows Server(WinRM)
  9. -bash: make: command not found
  10. spring yml 配置事务_application.yml与bootstrap.yml的区别
  11. oracle对某两列求和再求和_只会SUM函数求和,试试这5种求和函数,十倍提高工作效率...
  12. C语言中static的使用
  13. 一信通短信接口对接_短信验证码接口轻松对接事项
  14. 基于SSM的办公人员管理系统的设计与实现(附源码)
  15. js前篇!道路千万条,安全第一条,前端学不好,亲人泪两行。
  16. linux内核下载 ok6410,手把手教你移植linux内核---------OK6410(一)
  17. 后缀数组(Suffix Array )
  18. 汽车电子显示屏尺寸以及分辨率参照表
  19. iPhone手机 -- 如何找到开发者选项
  20. 【Week 15 作业A】ZJM 与霍格沃兹

热门文章

  1. lnmp mysql 路径_LNMP笔记:更改网站文件和MySQL数据库的存放目录
  2. python基础教程:变量的使用
  3. python中修改列表元素的方法
  4. Python open()函数用法详解
  5. C++内联 inline的用法
  6. 安装了git之后visual studio 2019变得很卡怎么办?(工具 --> 选项 --> 源代码管理工具【设置成无】)
  7. 【深度学习的数学】为什么用二次代价函数,误差越大,参数调整幅度越小?
  8. python multiprocessing 进程间如何共享数据、对象
  9. 网络监听listen技术是什么原理?
  10. Intel Realsense D435报错 RuntimeError: MFCreateDeviceSource(_device_attrs, _source) returned: HResult