操作系统:进程管理和IO控制
一、进程管理
进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容。
(一)进程控制
进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段。操作系统通过进程控制块(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逻辑相连的。
3. I/O通道
I/O通道是特殊的处理机。它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作,它的指令单一主要与I/O操作相关的指令,通道没有自己的内存,它和CPU共享内存。通道又分为字节多路通道,数组选择通道,和数组多路通道。
(1) 数组选择通道:又称告诉通道,在物理上可以连接多个设备,但某一段时间内通道只能选择一个设备进行工作
(2) 数组多路通道:当某设备进行数据传送时,通道只为该设备服务,当设备在执行寻址等控制性动作时,通道挂起该设备的通道程序,去为其他设备服务。
(3) 字节多路通道:用于大量低速设备,与设备之间数据传送的基本单位是字节,为一个设备传送一个字节后,又可以为另个设备传送一个字节。数组多路通道传输的基本单位是块。而且一次只能有一个设备在传输数据。
4. I/O控制方式
(1) 程序I/O方式:忙等方式。
(2) 中段驱动I/O方式:当某进程要启动某个I/O设备工作时,便由cpu向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务,此时,CPU和 I/O设备并行操作。以字节为单位进行I/O。
(3) DMA I/O方式:直接存储器访问方式数据传输的单位是块,数据之间在设备和内存中进行交换,仅块传输的开始和结束时才需要CPU干预。(替代了设备控制 器)。DMA控制器中有四类寄存器:命令寄存器(存cpu发的控制命令或设备的状态),内存地址寄存器,数据寄存器(缓冲数据作用),数据计数器(存本次要读的字节数)。
(4) I/O通道控制方式:通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的。通道指令格式为命令
1)操作码:规定了指令所执行的操作。
2)内存地址:标明读操作和写操作时的内存首址
3)计数:表示本条占领所要读或写数据的字节数
4)通道程序结束位P:用于表示通道程序是否结束
5)记录结束标志R。
三、设备管理
设备管理包括:缓冲管理,设备分配和设备处理三个内容。
进程I/O一共有四种方式:程序查询方式,程序中断方式,DMA方式,通道控制方式。通道处理器也是一个处理机,但是与CPU相比,它指令较为单一,没有独立的存储空间(使用内存空间)。通道分为字节多路通道,数组多路通道和数组选择通道。
(一)缓冲管理
缓冲管理包括单缓冲,双缓冲,循环缓冲和缓冲池。这里需要注意的是缓冲池。它包括输入队列,输出队列和空闲队列,有四种工作方式:
1.收容输入方式:进程请求向缓冲区输入,从空闲缓冲队列中申请一个缓冲区输入,将之链接在输入队列尾;
2.提取输入方式:进程要从缓冲区中提取输入,则从输入队列尾部缓冲区中拷贝信息,同时释放空间,将之重新链入空闲队列中;
3.收入输出方式:进程要想缓冲区输出,从空闲缓冲区队列中申请一个缓冲区输出,将之链接在输出队列尾;
4.提取输出方式:进程要想缓冲区提取输出,则从输出队列尾部缓冲区中拷贝信息,同时释放空间,将之重新链入空闲队列中。
(二)设备分配
操作系统为实现设备分配需要配备的数据结构有:设备使用表,控制器使用表,通道使用表,系统设备表。利用设备独立性的思想分配设备。所谓设备独立性,是指使用逻辑设备名称来请求某种设备,而系统通过某种名称转换方式将其转换成物理设备名称进行分配。实现设备独立性需要再驱动程序之上再增加一层设备独立性软件,负责实现名称和地址的转换,这种转换信息使用逻辑设备表LUT实现,每一个表项存储逻辑设备名,物理设备名,驱动程序入口地址。使用设备独立性方法实现设备分配,具有灵活性和易于设备重定向。
SPOOLing是设备分配的一个重要例子。它实现了独占设备的共享。SPOOLing系统包括输入井,输出井,输入缓冲,输出缓冲,输入进程和输出进程。进程在请求独占设备输出时,OS要求它先把要输出的内容输入到输入缓冲,之后有输入进程将其输入到输入井中,此时如果处理机要处理这些数据,则从输入井中取数据;独占设备要输出时,由输出进程将输出井中的信息送至输出缓冲,由输出设备输出。这种方式实现了独占设备的共享,如网络打印机。
(三)设备处理
设备处理指的是一系列驱动程序。它们是OS与外设的接口,把OS进程发来的抽象的要求转化为对硬件的具体的控制命令,如设置命令控制字,读取设备状态信息,启动设备等。它们对操作系统提供统一的接口,方便用户调用。
Reference:
操作系统复习总结:理论总结- -
操作系统理论学习笔记
操作系统:进程管理和IO控制的更多相关文章
- Python学习笔记整理总结【网络编程】【线程/进程/协程/IO多路模型/select/poll/epoll/selector】
一.socket(单链接) 1.socket:应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socke ...
- PHP有关守护进程,以及流程控制和信号处理函数
守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.PHP也可以实现守护进程的功能. 1.基本概念 进程 ...
- centos6下jbd2进程占用大量IO处理
刚在尝试重现一个bug时,好像在killed mysql一段时间之后,io一直很高,如下: 12:40:01 PM CPU %user %nice %system %iowait %steal %id ...
- 操作系统--进程管理1--单个CPU情况
1.进程概念 进程:一个正在执行的程序:操作系统提出进程概念目的:是为了跟踪程序在执行期间的状态.而程序只是一段代码,是一个静态的概念 无法准确描述程序执行时候发生的一切.程序代码被加载进内存后就以进 ...
- 操作系统--进程管理(Processing management)
一.进程的组成 进程通常由程序.数据和进程控制块(Process Control Block,PCB)组成. 二. 进程的状态以及状态切换 进程执行时的间断性决定了进程可能具有多种状态,最基本的三种状 ...
- python 并发编程 操作系统 进程 并发.并行 及 同步/异步,阻塞/非阻塞
操作系统: 多道技术背景: 提高工作效率(充分利用IO阻塞的时间) 同时执行多个任务 多道技术 空间复用:充分的利用内存空间 时间复用:充分利用IO阻塞时间 分时系统: 并发:提高了程序的工作效率 两 ...
- <操作系统>进程和线程
进程 定义: 一个正在执行的程序: 一个正在计算机上执行的程序实例; 能分配给处理器并由处理器执行的实体: 一个由一组执行指令,一个当前状态和一组相关的系统资源表征的活动单元. 进程的基本元素:程序代 ...
- 总结day26 ----验证客户端的合法性,已经操作系统,进程的简单初识别
前情提要 一:验证客户端的合法性: # .需要认证 # 程序和用户打交道的时候才会用到用户认证 # 对所有的客户端进行统一的认证 # # 我现在要做的事情 # 写一个server端 # 写一个clie ...
- 并发编程5 操作系统&进程
一.今日大纲 1.multiprocessing模块简单应用 2.for循环创建进程 3.进程传参方式和创建方式2 4.join方法 5.操作系统基础 二.今日内容 (1)操作系统简单介绍 多道技术: ...
随机推荐
- 实现ScrollView中包含ListView,动态设置ListView的高度
ScrollView 中包含 ListView 的问题 : ScrollView和ListView会冲突,会导致ListView显示不全 <?xml version="1.0" ...
- php调用empty出现错误Can't use function return value in write context
php调用empty出现错误Can't use function return value in write context 2012-10-28 09:33:22 | 11391次阅读 | 评论:0 ...
- wordpress自定义数据库出错页面
wordpress数据连接出错时,会有一个空白页面,有一行字:数据连接错误.这样当然不美观,好在这个页面是可以自定义的. 在/wp-content/目录下创建'db-error.php'文件,当数据库 ...
- nginx gzip 模块配置
#gzip模块设置 gzip on; #开启gzip压缩输出 gzip_min_length 1k; #最小压缩文件大小 gzip_buffers 4 16k; #压缩缓冲区 gzip_http_ve ...
- Bigtable: A Distributed Storage System for Structured Data
https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf Abstr ...
- WIN7 64位系统下的服务程序更新失败问题解决
自己用DELPHI做了个小的服务在后台运行,帮助自己做一些琐事,今天修改了一下代码结果重启服务的时候一直还是以前的状态,新加的代码没任何效果. 1.检查程序没问题呀 2.关闭SSD缓存硬盘问题仍旧 3 ...
- jboss中文支持
一.中文问题 如果操作系统不支持中文, 应首先使操作系统上的Server支持中文. 修改run.conf中 -Dfile.encoding=gbk -Ddefault.client.encoding= ...
- LightOj1285 - Drawing Simple Polygon(连接多边形各点)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1285 题意:给你一些点,然后把它们用一条线把它们连起来,构成一个多边形,不能有相交,必 ...
- Sort---hdu5884(优先队列+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5884 题意:有n个有序序列,每个序列有ai个元素,现在有一个程序每次可以归并最多k个序列,最终把所有的 ...
- OO之美
㈠ 设计的分寸 对于设计,还有很多看似"惯常"的法则与经验广泛存在于软件系统中,例如除了经典的23种设计设计模式.还有很多模式之外的模式,按照粒度的大小,系统的特点,规模的大小,而 ...