操作系统概念(三)——进程

此为本人在期中临近复习操作系统概念时将手写版笔记中的重点进行提炼后,加入个人的理解与思考所写出的总结性笔记,仅供参考。

一、进程概念,需要从映像/上下文/状态/内核数据结构PCB三个方向学习
1、系统由一组进程组成,操作系统进程执行系统代码而用户进程执行用户代码。
2、进程是可执行程序的映像,地址由低到高依次为:代码(文本段)、数据段(全局变量)、堆(动态分配的内存)、当前活动(程序计数器的值与寄存器的内容)、进程堆栈段(临时数据)
3、程序计数器用来表示下一个要执行的命令与相关资源集合,由此使进程“动了起来”。
4、只有当一个可执行文件被装入内存(.exe或.out),程序才能成为进程
5、进程状态:一般为五个
①、新的:进程正被创建
②、运行:进程指令正在被执行
③、等待(阻塞):进程等待某个事件发生,此时即便有CPU空闲也不能运行。
④、就绪:进程等待分配处理器
⑤、终止:进程完成执行
6、进程切换:
①、当I/O操作完成的时候,进程可以从等待转到就绪。
②、当发生本进程引起的中断(主动的系统调用)的时候,进程可以从运行转到等待。
③、当其他进程引起中断抢占资源(外部引发的中断)的时候,进程可以从运行转到就绪。
④、当进程被cpu调度程序选中的时候,进程可以从就绪转到运行。
⑤、一般来讲,编辑器会自动为程序打包一个终止函数(exit)以确保产生的进程可以进入终止状态。

7、进程控制块PCB:每个进程在os中由PCB表示,包含:
①、进程状态
②、进程编号
③、程序计数器:进程要执行的下一个指令的地址,用来存储状态
④、CPU寄存器:包括累加器、索引寄存器、堆栈指针、通用寄存器、其他条件码信息寄存器,出现中断时保存。
⑤、CPU调度信息:包括进程优先级、调度队列的指针
⑥、内存管理信息:包括基址、界限寄存器的值、页表或段表
⑦、记账信息:包括CPU时间、实际使用时间、时间界限、记账数据、作业或进程数量等
⑧、I/O状态信息:包括分配给进程的I/O设备列表、打开的文件列表等
9、上下文切换:每次进程切换时,都会先被中断,使CPU从当前任务改变为运行内核子程序,进程从运行状态转到就绪状态,此时将会执行一个状态保存函数来将当前状态(上下文)保存到PCB中(PCB在进程创建时就已经在OS中的指定位置开辟),然后调度程序从就绪队列中选择一个进程,将其之前被保存好的状态从他的PCB中取出并放到指定的CPU寄存器等位置,然后由就绪状态转到运行状态开始执行。

二、进程调度
1、多道程序设计的目的:保持CPU不空闲
2、分时系统目的:进程切换时用户可与程序进行交互
3、调度队列:驻留在内存中、等待运行的进程将会被保留在就绪队列中,一般用链表来实现,头结点指向第一个和最后一个PCB块的指针,每个PCB块包含一个指向就绪队列的下一个PCB的指针域。
4、处理中断时,首先停止当前正在运行的进程到就绪队列中,再处理中断,然后从就绪队列中选取一个进程开始执行
5、等待特定I/O设备的进程列表为设备列表,每个设备都有自己的设备列表。
6、当进程分配到CPU执行是,可能发生:
①、进程发出一个I/O请求,并进入i/o等待队列。此时将会从等待到就绪。
②、创建一个子进程,并等待其结束。此时将会从等待到就绪。
③、由于终端而释放CPU,并进入就绪队列。此时将会从运行到就绪。
④、当时间片结束,进程终止,从队列中删除,PCB和资源被释放。此时将会从运行到终止。

7、调度程序:通常对于批处理系统,进程多被提交,而并非立即执行。提交到大容量存储设备(多为磁盘)的缓冲池中。
8、长期调度程序:处理I/O队列,从作业池中选择进城并装入内存以准备执行,控制多道程序设计的成都,仅当进程离开的时候才需要长期调度程序。
9、短期调度程序:即CPU调度,处理就绪队列,从准备执行的进程(内存)中选择进城,并为之分配CPU,两者的主要差别是执行频率
10、绝大多数进程可分为I/O主(放入I/O队列)或CPU主(放入就绪队列),I/O主的计算时间>CPU主。因此长期调度程序应选择一个合理的包含I/O主和CPU主的组合进程。
11、中期调度程序:将进程从内存中移出,从而降低多道程序设计的程度。之后进程能被重新调入内存,使进程可换出换入,可改善进程组合,或内存过度使用而释放内存。
12、上下文切换时间是额外开销,与硬件支持密切相关,一般仅需要改变指针,即当前寄存器组。

三、进程操作
1、创建子进程时可能从OS直接获得资源,或者从父进程获得,除了得到物理与逻辑资源外,初始化数据(输入)由父进程传入。
2、创建新进程时有两种可能:
①、父进程与子进程并发执行(不需认为,自动)
②、父进程等待,知道某个子进程完成(通过wait(pid)函数实现,会将父进程移出就绪队列,将会返回子进程的进程标志符)
3、新进程的地址空间有两种可能:
①、与父进程有相同的程序与数据
②、子进程装入另一个新程序
4、通过fork()系统调用可创建新进程,此时新锦成复制原来进程的地址空间,两进程的数据空间相互独立,数据改变互不影响,都会继续执行位于fork()后的指令,子进程返回值为0,父进程返回值为子进程的进程标识符(多大于0)
5、进程终止:使用exit()系统调用请求OS删除自身
6、级联终止:如果一个进程终止,那么他的所有子进程也将终止

四、进程间通信
1、协作进程:进程间可实现信息共享、提高运算速度、模块化、方便。但需要一种进程间通信机制,一般为共享内存或者信息传递。
2、信息传递不需避免冲突,且更容易实现;共享内存更快,没有内核介入的时间消耗。
3、共享内存系统:需要两个以上的进程解除OS对阻止进程访问另一进程内存的先知,建立共享内存区域。
①、无限缓冲:对缓冲区大小没有限制,消费可能不得不等待,生产任意
②、有限缓冲:缓冲区大小有限制,通过循环数组与两个逻辑指针实现,最大值为maxsize-1,保留一个空位
4、消息传递系统:发送与接收信息需要有新系统录。定长消息系统级容易实现,编程困难;变长消息系统系统级难实现,编程简单。
5、直接间接通信:
①直接通信:必须明确的命名通信的接收者或发送者,通信线路自动建立,一个线路只与两个进程有关,每对进程之间只有一条线路,线路可单向可双向。
②间接通信:消息通过邮箱或端口发送接收,每个邮箱有一唯一的标识符,且进程只有共享一个邮箱才能相互通信。只要一对进程共享一个邮箱就建立了通信线路,一个线路可与两个或多个进程关联,两个进程可有多个线路,线路可单向可双向。
6、阻塞(同步)与非阻塞(异步):
①、同步消息:send时发送进程阻塞,直到消息为接收进程或邮箱接收。receive接收阻塞,直到有消息可用
②、异步消息:send时发送消息并继续操作,recieve时接受有效或无效消息
7、缓冲:线路用队列保存消息
①、零容量:发送者阻塞,直到接受消息
②、有限缓冲:队列长为n,最多有n个,自动缓冲一种
③、无限容量:队列长∞,发送者不阻塞,自动缓冲另一种

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值