操作系统:进程管理和IO控制

发表于:2014-6-19 10:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Loull    来源:51Testing软件测试网采编

  一、进程管理
  进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容。
  (一)进程控制
  进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段。操作系统通过进程控制块(PCB)管理进程。每一个PCB唯一标示一个进程。它存储进程的PID,UID,当前状态等信息,以及进程执行某一时刻的寄存器值,并且指向进程的数据段和程序段。OS把所有PCB链接为一个链表。
  进程在刚刚被创建时出于new状态。OS负责申请一块存储空间作为该进程的PCB,在其中填上进程的信息,标示为ready,链接到PCB队列和就绪队列中,此时进程进入"就绪"态。进程调度程序在未来某一时刻将其分配给处理机执行,该进程出于"执行"态,OS将根据PCB中的内容初始化处理机的各个寄存器值,之后进入用户态执行;进程请求I/O或系统调用时将放弃处理机,进入"活动阻塞"态,进程调度程序将当前处理机各寄存器值压栈(存入PCB中,或存入核心栈),将该进程PCB运行队列中移入阻塞队列;当系统调用或I/O完成时被唤醒再次进入活动就绪态,即PCB由阻塞队列链入就绪队列(操作系统如何实现唤醒进程??)。如果在系统调用完成之前,进程被换到外存,相应内存空间被释放,则进程进入"静止阻塞态",这里中级调度程序将和磁盘驱动程序一起,把相应内容拷贝到对换空间,同时释放内存;系统调用完成时若仍在外存中而为未被换入,则出于"静止就绪"态,之后被换入内存可直接进入执行态,或动态就绪态。进程执行完毕后进入"僵死"态,系统将释放内存空间,回收所有资源。
  UNIX系统中提供的系统调用中,fork产生一个与父进程完全相同的子进程,在子进程的地址空间中运行;spawn则从文件中装入一个文件作为子进程,在其地址空间运行;exec则从文件中装一个进程到当前进程地址空间,覆盖当前进程执行。
  (二)进程调度
  这里说的进程调度主要指低级调度,即由调度程序负责完成的,在内存和处理机之间的调度。在文件和内存之间的调度成为高级调度,又叫作业调度,在内存和对换空间的调度称为中级调度,又称对换。低级调度算法主要有:先来先服务FIFO;.短作业优先SJF;.时间片轮转Round Robin;静态优先级调度;多级队列反馈轮转调度。UNIX系统中采用的动态优先级+多级队列反馈轮转调度。具体内容可参见前面的文章
  (三)进程通信
  进程通信有直接通信和间接通信,直接通信是两进程直接交换数据或发送信息,间接通信则是把信息发送到一个中间实体中。根据同步方式,可分为:1.发送进程阻塞,接受进程不阻塞;2.发送进程不阻塞,接受进程阻塞;3.发送进程和接收进程都阻塞。
  进程通信也分为高级通信和低级通信。
  高级通信通常传输数据量较大,包括:消息机制,共享存储区,管道。
  1、消息机制:
  在消息机制里值得注意的是消息缓冲队列方式。发送进程首先申请一块缓冲区,把消息内容和消息首部填入其中,之后调用send系统调用。send将把该进程的消息内容拷贝到消息缓冲队列中;接受进程首先申请接受缓冲区,之后调用receive系统调用,OS负责把消息缓冲队列中的消息拷贝到该进程空间的缓冲区中。
  2、管道通信:
  相当于一个队列形式的一个进程在管道尾写,另一个进程在管道头取,管道分为无名管道和有名管道。无名管道是用pipe函数创建的,只能用于子进程之间的通信,有名管道用mkfifo函数创建用于任意两个进程之间通信,对管道的操作相当于对文件的操作比如open函数打开管道close函数关闭管道等。
  低级通信包括同步和互斥两种,通过信号量实现,主要针对临界区问题。临界区的互斥访问要遵循4个原则:空闲让进,忙则等待,有限等待,让权等待。主要信号量分为0/1信号量,整型信号量,记录型信号量,AND型信号量和信号量集。经典同步问题有生产者-消费者问题,读者-写者问题,哲学家进餐问题。
  信号量:信号量是操作系统提供的管理公有资源的手段,即PV操作。对于独享设备有驱动程序做PV操作。
  p操作的过程是:s=s-1;if(s<0){进入等待队列,自己阻塞进程}
  v操作的过程是:s=s+1;if(s<0){从等待队列取一个进程;取出的进程进入就绪队列,当前进程该干嘛干嘛}
  pv原语不能次序错误,而且必须成对出现。信号量的定义是semaphore mutex;经典同步问题有生产者-消费者问题;读者-写者问题;哲学家进餐问题。
  (四)死锁控制
  由于进程竞争资源或推进顺序非法,可能会造成进程死锁。死锁有四个必要条件:互斥访问,请求保持,非剥夺,环路等待。打破其中任何一个都可以不出现死锁。对于死锁的处理有三类方法:
  1.死锁预防:主要是打破死锁必要条件中的一个。打破请求保持条件,则要求进程在执行之前一次性请求到所有资源才可以执行;打破非剥夺条件,要求进程执行过程中因为缺少资源无法执行时,剥夺所有资源,将其阻塞;打破环路等待条件,则给资源编号,要求进程请求资源的顺序依照编号由高到低进行。
  2.死锁避免:指Dijkstra的银行家算法;
  3.死锁检测消除:指在发生死锁时检测资源分配图中是否有子环,然后将一个或多个进程挂起,消除死锁;检测算法是NP完全问题,CPU代价较大。
  二、输入输出(I/O)管理
  (一)   I/O管理概述
  1.  I/O管理功能
  (1)   动态的纪录各种设备的状态
  (2)   设备分配与回收
  (3)   实施设备驱动和中段处理的工作
  2.  I/O应用接口
  (1)  设备和设备控制器的接口:设备和cpu之间不是直接通信的而是夹着一个设备控制器,设备与设备控制器是靠三根线相连的,数据信号线,控制信号线和状态信号线,数据信号线用于在设备和设备控制器之间传送数据信号,控制信号线传送由设备控制器向I/O设备发送控制信号,状态信号线用于传送设备当前状态的信号。
  (2)  设备控制器:控制一个或多个I/O设备,其基本功能有接收和识别(cpu发的)命令,数据交换(与cpu或与设备数据交换),标示和报告设备的状态(给cpu发)地址识别,数据缓冲,差错控制。
  (3)  设备控制器由三部分组成:设备控制器与处理器的接口(由数据线连接DMR和控制状态寄存器,控制线,和地址线组成),设备控制器与设备的接口(多个设备接口,每个设备接口由数据控制和状态三种信号),I/O逻辑(当cpu启动一个设备时,将启动命令发给I/O逻辑同时通过地址线给I/O逻辑由它进行译码。。译出命令后对所选设备进行控制。所以地址线和控制线是直接跟I/O逻辑相连的。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号