怎么选择一个好的友情链接网站,视频会议,wordpress文章名加后缀,给做网站建设的一些建议进程
定义#xff1a;
进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程。
组成#xff1a;
代码数据状态寄存器#xff08;正在运行的一个程序的所有状态信息#xff09;#xff1a;CPU状态CP0、指令指针IP通用寄存器#xff1a;AX、BX、CX…进程
定义
进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程。
组成
代码数据状态寄存器正在运行的一个程序的所有状态信息CPU状态CP0、指令指针IP通用寄存器AX、BX、CX进程占用系统资源打开文件、已分配内存
特点
动态性客动态地创建、结束进程并发性进程既可以被独立调度并占用处理机运行独立性不同的进程的工作不相互影响制约性因访问共享数据/资源或进程间同步而产生制约
进程与程序的联系
进程是操作系统处于执行状态程序的抽象。程序 文件静态的可执行文件进程 执行中的程序 程序 执行状态同一个程序的多次至干性过程对应为不同进程。如命令“ls”的多次执行对应多个进程进程执行需要的资源。内存保存代码和数据CPU执行指令
进程与程序的区别
进程是动态的程序是静态的。程序是有序代码的集合进程是程序的执行进程有内核态/用户态进程是暂时的程序是永久的。进程是一个状态变化的过程程序可长久保存进程与程序的组成不同。进程的组成包括程序、数据和进程控制块
进程控制块Process Control Block, PCB
定义操作系统管理控制进程运行所用的信息集合。
操作系统用PCB来描述进程的基本情况以及运行变化的过程。
PCB是进程存在的唯一标志每个进程都在操作系统中有一个对应的PCB
使用
进程创建时生成该进程的PCB进程终止时回收它的PCB通过对PCB的组织管理来实现对进程的组织管理
内容
进程标识信息。PID进程号UID等 哪个程序在执行执行了几次用户标识处理机现场保存主要就是寄存器保存进程的运行现场信息堆栈指针记录堆栈现场指令指针记录进程运行到哪进程控制信息
调度和状态信息进程和处理机使用情况调度进程间通信信息进程间通信相关的各种标识存储管理信息指向进程映像存储空间数据结构进程所用资源进程使用的系统资源如打开文件等有关数据结构连接信息通过与PCB相关的进程队列实现
组织
链表便于插删用于通用的OS同一状态的进程PCB为一链表多个状态对应更多个不同的链表就绪链表阻塞链表索引表数组不利于插删使用于固定数目的进程相对创建更快捷同一状态的归入一个index表每一个index指向PCB就绪/阻塞索引表进程状态
划分在不同操作系统中可能不同但是大致可以分为
系统初始化时创建INIT进程INIT再负责创建其他进程用户请求创建一个NEW PROCESS正在运行的进程执行了创建进程的系统调用。进程就绪进程获取了除处理机之外的资源得到了处理机即可运行进程运行内核选择一个就绪的进程让它占用处理机cpu并执行进程阻塞等待的三种情况请求并等待系统服务无法马上完成启动某种操作和其他进程协调工作无法马上完成需要的数据没有到达。进程自己触发阻塞因为只有自己才知道何时需要等待某事件进程抢占进程会被抢占情况高优先级进程就绪进程执行当前时间用完。进程唤醒的情况需要的资源可被满足等待的事件到达。因为自身没有占用cpu执行所以只能被OS或其他进程唤醒进程结束的情形自愿正常退出错误退出强制性的致命错误被其他进程所杀
进程切换 三状态进程模型
创建与退出只是两个短暂的状态除此之外简化为三个状态就绪、运行、等待。装填变迁如下图。 运行状态进程正在处理机上运行就绪状态进程获取了除处理机之外的资源得到了处理机即可运行阻塞状态进程正在等待某一事件出现而暂停运行创建状态进程正在被创建还没转到就绪状态之前的状态退出状态进程正在从系统中消失时的状态这是因为进程结束或由于其他原因所导致
挂起进程模型
处在挂起状态的进程映像在磁盘上目的是减少进程占用内存。也就是说挂起就是把一个处于就绪或者等待状态的进程从内存转存到外存通常选择低优先级进程进行挂起。 1、进程挂起
不同于进程阻塞。挂起时没有占用该内存空间而是映像在磁盘上。类似虚存中有的程序段被放到了硬盘上。 可以合理、充分地利用系统资源。Suspend把一个进程从内存转到外存。
2、挂起状态
堵塞挂起状态进程再外存并等待某事件的出现就绪挂起状态进程再外存但只要进入内存即可运行
3、状态转换
内存中被挂起
①堵塞到堵塞挂起没有进程处于就绪状态或就绪进程要求更多内存资源
②就绪到就绪挂起当高优先级等待进程和低优先级就绪进程
③运行到就绪挂起对抢占式分时系统当有高优先级等待挂起进程因事件出现而进入就绪挂起
外存中激活
①阻塞挂起到就绪挂起: 相关事件出现时转变为就绪挂起但还在硬盘上。
②解挂/激活 activate外存到内存需要运行该进程时
就绪挂起到就绪态: 没有就绪进程或挂起就绪优先进程优先级高于当前就绪进程时
堵塞挂起到堵塞态当一个进程释放了足够内存时OS把高优先级阻塞挂起认为很快出现等待的事件转换为阻塞进程
状态队列
由操作系统来维护一组队列表示系统中所有进程的当前状态。不同队列表示不同状态。根据进程状态不同进程PCB进入对应的队列。线程
引入原因一个进程内部可能有多种事件可以并发地执行比如播放音乐时可以拆分为磁盘读取、解码和播放三个子流程读取主要是I/O操作解码主要是CPU工作这两者是可以并发执行的。因此很多时候需要在进程内部增加一类实体满足以下特性实体之间可以并发执行、实体之间共享相同的地址空间。在这种需求之下出现了线程。
定义线程是进程的一部分描述指令流执行状态它是进程的指令执行流的最小单元是CPU调度的基本单位。
进程的资源分配角色进程由一组相关资源构成包括地址空间代码段、数据段、打开的文件等各种资源。线程的处理机调度角色线程描述在进程资源环境中的指令流的执行状态。每个线程有自己独立的指令指针等。线程的优点
一个进程中可以同时存在多个线程线程之间可以并发地进行线程之间可以共享地址空间和文件等资源
线程的缺点 在进程空间内有多个控制流且执行流程不一样有各自独立的寄存器和堆栈但共享代码段数据段资源。 如果一个线程写错了崩溃如破坏了数据会导致这个进程的所有线程都崩溃。
线程与进程的比较
进程是资源分配单元内存打开的文件访问的网络线程是CPU调度单位CPU也是一种特殊的资源要执行控制流需要的相关信息进程拥有一个完整资源平台而线程只独享必不可少的资源如寄存器和栈线程同样具有就绪、阻塞和执行三种基本状态和转换关系线程能减少并发执行的时空开销 线程的创建时间比进程短 线程的终止时间比进程短 同一进程内的线程切换时间比进程短 由于统一进程的各线程间共享内存和文件资源可不通过内核进行直接通信。线程的终止时间比进程短
线程三种实现方式
用户线程在用户空间实现OS看不到由应用程序的用户线程库来管理POSIX Pthreads, Mach C-threads内核线程在内核中实现OS管理的Windows轻量级进程lightweight process内核中实现支持用户线程。Solaris, Linux用户线程与内核线程间可以是多对一一对一多对多
用户线程 由一组用户级的线程库函数来完成线程的管理。如POSIX Pthreads等。
优点
不依赖于操作系统内核可以用于不支持线程的多进程操作系统在用户空间实现的线程机制同一进程内的用户线程切换速度快无需在用户态与核心态之间切换允许每个进程拥有自己的线程调度算法
缺点
线程发起系统调用而阻塞时整个进程进入等待不支持基于线程的处理机抢占除非当前运行线程主动放弃它所在的线程的其他线程无法抢占CPU只能按进程分配CPU时间多个线程进程中每个线程的时间片较少。
内核线程 由内核通过系统调用实现的线程机制由内核完成线程的创建、终止和管理。如Windows、Linux等
特点
由内核维护PCB和TCB线程执行系统调用而被阻塞不影响其他线程线程的创建、终止和切换开销相对较大因为通过系统调用/内核函数在内核空间实现以线程为单位进行CPU时间分配多线程的进程可以获得更多CPU时间。
轻量级进程 内核支持的用户线程一个进程可以有一个或多个轻量级进程每个轻权进程由一个单独的内核线程来支持。如Solaris。最后这个被证实优点没有被很好地体现出来。
用户线程与内核线程的对应关系
可以有如下图多种方式最后证明一对一是最优的。