操作系统进程管理

操作系统课设之Windows 进程管理 操作系统课程设计 Windows进程管理 C创建进程 阅读详情

进程、线程、程序

进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。

进程具有三个特性,即动态性、独立性和并发性。所谓动态性,指的是进程表示动态执行的程序,每时每刻进程的状态都是在变化的。所谓独立性,指的是进程和进程之间一般不会相互影响,每一个进程都有自己独立的逻辑的状态,如寄存器在某时刻的值。所谓并发性,指的是在宏观意义上将,多个进程在一个CPU上可以实现并发运行,如果存在多个CPU核则可以实现真正的并行运算。

在一次完整的执行过程中,一个进程可能处于三种状态之一:运行态、就绪态和阻塞态。所谓运行态指的是进程占据CPU,使用CPU进行程序运行的过程。就绪态指的是CPU由于某种原因不能执行当前的进程,该进程已准备就绪,随时等待CPU执行的状态。而阻塞态指的是进程由于在等待某种事件(如IO输入等)而处于暂停状态,此时即使给它CPU使用权限也无法运行该进程。这三种状态可以相互转化(除了就绪态不能直接转到阻塞态,阻塞态不能直接转到运行态)。

操作系统中可能有多个进程并发运行,每个进程又有三种状态。为了解决不同进程、不同状态的管理,操作系统设立了一组队列来表示系统中所有进程的状态。处于运行态的进程构成运行队列,处于就绪态的进程构成就绪队列,处于阻塞态的进程构成阻塞队列。随着操作系统对进程的调度,某个进程依照状态的变化被移除某个队列并加入到另一个队列中。

线程一般运行于进程内部,它与进程最主要的区别就是对系统资源的占有。一个线程基本上不占有系统资源,其所使用的资源归属于线程所在的进程,而这个进程中的各个线程都可以共享这些资源。同一个进程中的线程可以共享的资源主要有:大部分进程管理信息(进程的ID/状态/优先级等)、存储信息(代码段、数据段、堆)和文件管理信息(进程打开的文件)。另外,每一个线程还包含部分独享信息,主要有逻辑寄存器和栈。

这样就可以得出结论:进程拥有完整的一套资源平台,是系统资源的分配单位;而线程只独享少量必须的资源,是CPU的调度单位,进程的三种状态及转换同时也适用于线程。

用户线程和内核线程

根据操作系统内核是否对线程可感知,可以把线程分为内核线程和用户线程。

内核线程建立和销毁都是由操作系统辅助、通过系统调用完成的,操作系统在调度时,参考各进程内的线程运行情况作出调度决定。如果一个进程中没有就绪态的线程,那么这个进程也不会被调度占用CPU。

和内核线程相对应的是用户线程,用户线程指不需要内核支持而在用户程序中实现的线程,用户进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

用户线程的优点:
(1)可以在不支持线程的操作系统中实现。
(2)创建和销毁线程、线程切换等线程管理的代价比内核线程少的多。
(3)允许每个进程定制自己的调度算法,线程管理比较灵活
(4)线程能够利用的表空间和堆栈空间比内核级线程多。

用户线程的缺点:
操作系统内核并不了解这种线程,而依然采用对进程的调度方式,这样一旦进程中的用户线程发生了阻塞,那么整个进程也将被阻塞,起不到并发的作用

内核线程的优缺点刚好跟用户线程相反。实际上,操作系统可以使用混合的方式来实现线程。

进程间通信

进程间通信方式基本上分为低级通信和高级通信两类。前者可以在进程间传递少量的控制信息,通常为一个字节或整型变量,方式有信号或信号量等;后者可以在进程间传递大量的数据,如一个文件或缓冲区内容,可以通过共享内存、消息传递和管道等。

  • 共享内存是操作系统提供的一种功能。操作系统采用虚拟存储管理技术,每个进程都有自己的独立内存地址空间,操作系统再将这些地址空间映射到实际的物理内存中去。操作系统可以提供一些API,使得进程将一部分地址空间共享出来映射到同一块物理内存,实现进程间信息的交流和共享。
  • 消息传递是进程间通过发送和接收消息来交换信息。首先需要在两个进程之间建立一个通信链路,然后调用发送和接受操作交换信息。
  • 管道是链接在两个进程之间的打开的共享文件,发送进程从一端写入数据,读取进程从另一端读出数据。这种方式涉及到了文件操作,因此比共享内存慢一些。

进程的互斥

当两个或多个进程对同一块数据进行读写时,若运行的事件和顺序不同,那么最后的结果可能不同,这种状态被称作竞争状态。解决这个问题的一个有效方法就是在同一时刻只允许一个进程访问共享数据。访问共享数据的程序称为临界区,被访问的共享数据称为共享资源。
关于临界区:
(1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;
(2)任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;
(3)进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区;
(4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。

进程同步

进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。
信号量:
定义一个初始值为0的信号量,在进程A执行结束前进行V操作,在进程B的最开始执行P操作,这样可以确保B在A执行之前不会启动。

进程调度

一般进程的调度有两种方法:不可抢占调度和可抢占调度,前者一旦一个进程被选中,在它被阻塞或主动交出CPU之前不会被中止,后者可能随时被调度程序打断。

在批处理系统中,采用的调度算法主要有先来先服务法和短作业优先法。在交互式系统中的调度算法主要有时间片轮转法、优先级算法、多级队列算法和多级反馈队列算法等。

死锁

 在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。

 产生死锁的必要条件:

  (1)互斥(mutualexclusion),一个资源每次只能被一个进程使用;

  (2)不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺;

  (3)占有并等待(hold andwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放;

  (4)环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。

  这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

  死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。

  死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略。

操作系统之进程管理习题 操作系统进程管理习题详解 阅读详情

相关推荐

高级操作系统——XV6进程管理

源代码阅读: type.h:用于声明一些数据类型的简化名称,和声明页表指针的数据类型。 param.h:主要用于声明基本的一些常量,包括内核栈大小等。 memlayout.h:主要用于声明一些和内存与地址相关的常量与方法,包括虚拟内存转物理内存的方法以及物理内存转虚拟内存的方法等。 defs.h:声明在之后文件中要用到的函数。 x86.h:让c代码使用特殊的x86汇编的一些函数包括outb等,并声...

weixin_45680007的博客 6175

操作系统——进程管理

文章目录1 进程与线程1.1 进程的概念和特征1.1.1 进程的概念1.1.2 进程的特征1.2 进程的状态与转换1.3 进程控制1.3.1 进程的创建1.3.2 进程的终止1.3.3 进程的阻塞和唤醒1.3.4 进程切换1.4 进程的通信1.5 线程概念和多线程模型1.5.1 线程的概念1.5.2 线程与进程的比较1.5.3 线程的属性1.5.4 线程的实现方式1.5.5 多线程模型2. 处理机调度2.1 调度的概念2.1.1 调度的基本概念2.1.2 调度的层次2.1.3 三级调度的联系与对比2.2 调

weixin_43765321的博客 9703

操作系统实验一:进程管理

操作系统实验

liu97_的博客 4850

操作系统——进程管理篇

主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能管程是一种特殊的软件模块,有这些部分组成:1.局部于管程的共享数据结构说明;2.对该数据结构进行操作的一组过程;3.对局部于管程的共享数据设置初始值的语句;4.管程有一个名字。管程的基本特征:1.局部于管程的数据只能被局部于管程的过程所访问;2.一个进程只有通过调用管程内的过程才能进入管程访问共享数据:3.每次仅允许一个进程在管程内执行某个内部过程。

m0_63596031的博客 4882

操作系统课程设计-进程管理-c++描述

1.目的和要求 通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。 2.实验内容 用C/C++语言编程模拟进程管理,至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。 3.设计思路 Process类包括以下字段:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态;和...

欢迎来到GEEK卷轶浩繁的博客 5875

操作系统实验三:进程管理

一、实验要求 (1)掌握操作系统中进程的基本概念; (2)掌握 Linux操作系统进程管理基本方法; (3)了解进程并发运行的过程。 二、实验内容 (1)验证实验: ① 启动vi编辑器,并将其调入后台,再调出前台,最后退出vi; ② 启动vi编辑器,并将其调入后台,再将该作业杀死; ③ 启动两个vi编辑器,均调入后台后,查看当前有那些作业正在执行; ④ 列出你在当前系统中的所有进程。指出你在该系统中最早启动的进程是那个,在什么时候启动? ⑤ 列出当前系统中占用CPU时间比例最高的进程; ⑥ 系统内核的进程中

蓝多多的小仓库 8583

【操作系统】进程管理

进程基本概念:进程,进程实体(PCB,数据段,程序段),进程特性,进程的组织方式(队列方式,索引方式) 线程基本概念:线程属性,多任务与多线程,线程与进程的对比,线程实现方式(用户级,内核级线程),线程模型(一对一,多对一,多对多) 进程状态与进程调度:进程状态(五状态模型,进程状态切换,进程控制原语,调度与原语),进程调度算法,题型(甘特图) 死锁:死锁必要条件,死锁预防,避免死锁(银行家算法) 进程的同步与互斥:信号量机制,生产者消费模型,读者写者模型,哲学家模型,管程 进程间的通信:PV,高级通信方式

努力,奋斗! 5415

设计一个有 N个进程共行的进程调度程序

1、进程调度算法:采用动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。 2、每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息: 进程名---进程标示数 ID 优先数 PRIORITY 优先数越大优先权越高 到达时间---进程的到达时间为进程输入的时间。、 进程还需要运行时间ALLTIME,进程运行完毕ALLTIME=0, 已用CPU时间----CPUTIME、 进程的阻塞时间STARTBLOCK-表示当进程在运行STARTBLOCK个时间片后,进程将进入阻塞状态 进程的阻塞时间BLOCKTIME--表示当进程阻塞BLOCKTIME个时间片后,进程将进入就绪状态 进程状态—STATE 队列指针NEXT 用来将PCB排成队列。

操作系统原理 实验二 进程管理

实验目录实验一 Linux基本操作实验二 进程管理实验三 进程间通信实验四 处理机调度实验五 存储管理实验六 文件管理 实验一 Linux基本操作 实验二 进程管理 实验三 进程间通信 实验四 处理机调度 实验五 存储管理 实验六 文件管理 ...

bearcat303295的博客 3823

设计一个有 N个进程调度程序设计

以前的操作系统加深理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。课程设计,C语言编写和调试一个简单的进程调度程序。我最后得了93分,希望对大家有用。

操作系统课程设计 进程管理

java Swing 编写的桌面程序源码,支持5种指令 x=? ?为一个数,赋值语句。x++; x--; !?? 第一个?为阻塞原因A或者B, 第二个?为需要阻塞的时间。end.结束语句。 该系统还添加了单步运行的功能,可以更加直观的观看进程调度的过程。 支持3中调度算法:1.时间片轮转 2.静态优先级 3.动态优先级(比较简单) 注:在该项目中需要把读取txt代码的路径改为项目目录下。

操作系统概述(进程管理总结)

因此,网络操作系统的功能主要包括:高效、可靠的网络通信,对网络中共享资源(在LAN 中有硬盘、打印机等)的有效管理,提供电子邮件、文件传输、共享硬盘和打印机等服务,网络安全管理,提供互操作能力。分布式计算机系统是由多个分散的计算机经连接而成的计算机系统,系统中的计算机无主次之分,任意两台计算机可以通过通信交换信息。操作系统是计算机系统的资源管理者,它含有对系统软/硬件资源实施管理的一组程序。工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。面,向用户提供友好的工作环境。

sunshine151的专栏 335

京东云鼎环境配置与API安全接入实战:ISV服务商如何搞定数据加密与商家授权

本文详细介绍了京东云鼎环境配置与API安全接入的实战指南,帮助ISV服务商解决数据加密与商家授权等核心问题。通过京东开放平台的应用申请流程,结合多租户数据隔离策略和自动化授权实现,确保电商生态中的安全高效运营。文章还提供了避坑指南,助力开发者规避常见配置错误。

weixin_28705087的博客 352

操作系统——进程管理的功能

一. 进程控制 1. 什么是进程控制? 进程控制是进程管理中的最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换功能。 简单来说:进程控制就是要实现进程状态的转换 2. 如何实现进程控制呢? 3. 进程的切换需要修改PCB的内容,并放到相应的队列中去,假如没有修改PCB中的状态标志就把PCB放入到某个队列中去了,这种情况特别危险,怎么避免呢? 4. 进程控制原语做了哪些事情呢? 5. 进程创建 6. 进程终止 7. 进程

巧克力布丁的博客 1万+

佳能C3025打印机扫描方法

佳能C3025彩色打印机扫描方法 步骤一、如果打印机处于休眠状态,可按图中标记的按钮唤醒打印机; 然后点击屏幕上的【扫描】 步骤二、扫描类型选择【文件】 步骤三、点击屏幕上的【地址簿】 步骤四、此时屏幕胡看到名字,如果看不到自己的名字,可往下滑动直到看到自己的名字,然后点击自己的名字,再点击右下角的【应用】 步骤五、点击【发送设置】,可看到文件格式为PDF,点击可以选择JPEG的图片格式。...

weixin_46019317的博客 2万+

USB-Blaster在Win11报错?3分钟搞定驱动兼容性问题(Quartus 21.4实测)

本文针对Windows 11系统下USB-Blaster驱动安装问题,提供了一套快速解决方案。通过优化驱动安装流程、绕过签名验证及设备管理器高级技巧,帮助开发者在3分钟内解决Quartus 21.4的兼容性问题,提升FPGA调试效率。

weixin_30772105的博客 289
上一篇: APK安装过程分析
下一篇: Hash小结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值