标签:冲突 方式 其他 进程数量 计数器 任务 进程表 最小 数据段
进程是现代分时操作系统的工作单元。
进程是资源分配的基本单位。
线程是程序执行的最小单位。
进程是执行的程序,这是一种非正式的说法。进程不只是程序代码(也称文本段),进程还包括数据(程序计数器的值和处理器寄存器的内容等)、进程堆栈(包括临时数据,如函数参数、返回地址和局部变量)和数据段(包括全局变量)和堆。
内存中的进程
新的(new):进程正在创建
运行(running):指令正在执行
等待(waitting):进程等待发生某个时间(如I/O完成或收到信号)
就绪(ready):进程等待分派处理器
终止(terminated):进程已经完成执行
操作系统内的每个进程表示,采用进程控制块(Progress Control Block,PCB),也称任务控制块。它包含于进程的相关信息:
...
多道程序设计的目标是,无论何时都有进程运行,从而最大化CPU利用率。分时操作系统的目的是在进程间快速切换CPU,以便用户在程序运行时能与其交互。为了满足这些目的,程序调度器选择一个可用进程到CPU上执行。单处理系统不会具有多个正在运行的进程。
进程在进入系统时,会被加到作业队列(job queue),这个队列包括系统内的所有进程。
驻留在内存中的、就绪的、等待运行的进程保存在就绪队列。
等待特定 I/O 设备的进程列表被称为设备队列。每个设备都有自己的设备队列。
最初,新进程被加到就绪队列中等待,知道被选中执行。当该进程被分配到CPU上执行时,一下时间可能发生:
前面两种情况,进程最终会从等待状态切换到就绪状态,并放回到就绪队列。进程重复这一循环知道终止,然后会从所有队列中删除,其PGB和资源也被释放。
进程会在各种调度队列之间迁移,操作系统wield调度必须按一定方式从这些队列中选择进程。进程选择通过适当调度器或调度程序来执行。
通常,对于批处理系统,提交的进程多于可以立即执行的进程,这些进程会被保存到大容量存储设备(通常为磁盘)的缓冲池中,以便执行。长期调度程序从该池中你那个选择程序,加到内存,以便执行。短期调度程序或CPU调度程序从准备执行的进程中选择进程,并分配CPU。
这两种调度程序的主要区别是执行频率。
短期调度进程必须经常为CPU选择新的进程。
长期调度进程执行并不频繁。长期调度程序控制多道程序程度(内存中的进程数量)。长期调度程序进行认真的选择,应该选择I/O密集型和CPU密集型的合理进程组合。
有的操作系统如分时操作系统可能引入一个额外的中期调度程序。思想是可将进程从内存中换入换出。
当中断发生时,系统需要保存当前运行在CPU上的进程的上下文,以便在处理后能够恢复上下文,即先挂起进程,再恢复进程。进程上下文采用PGB表示。
切换CPU到另一个进程需要保存当前进程状态和恢复另一个进程的状态,这个任务称为上下文切换。
大多数系统的进程能够并发执行,它们可以动态地创建和删除,因此操作系统必须提供机制,以创建进程和终止进程。
进程(父进程)在执行的过程可以创建多个子进程,从而形成进程树。
大多数的操作系统对进程的识别采用的是唯一的进程识别符pid,通常是一个整数。
进程创建新进程时,父进程可以与子进程并发执行;父进程等待子进程部分或全部子进程执行完。
操作系统的并发执行的程序可以是独立的也可以是协作的,与其他进程共享数据的是协作进程。允许进程协助的理由:信息共享、计算加速、模块化、方便。
协助进程需要一种进程间的通信机制,以允许进程相互交换数据和信息。进程间通信有两种基本模型:共享内存和消息传递。
共享内存模型会建立一块供协作进程共享的内存区域,进程提供向此共享区域读出或写入数据来交换信息。
消息传递模型提供在协作进程间交换消息来通信。
消息传递对交换较少的数据很有用,因为无需避免冲突。对于多核系统,消息传递的性能要优于共享内存。共享内存会有高速缓存一致性问题。
标签:冲突 方式 其他 进程数量 计数器 任务 进程表 最小 数据段
原文地址:https://www.cnblogs.com/astonc/p/12150702.html