基本概念
进程
进程(Process),是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进『资源分配和调度』的一个独立单位。
1.进程是程序的一次执行
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3进程是程序在一个数据集合上运行的过程
3.进程是系统进行资源分配和调度的一个独立单位(或者说基本单位)
进程的结构:控制块(pcb),数据段,程序段。
PCB:进程唯一标识。
数据段:存放原始数据,中间数据。
程序段:存放在文本区域,可以被多个进程共享
进程的特征:动态性,并发性,独立性,异步性
线程(thread)
是计算机程序中的基本执行单元,是进程内的一个子任务。一个进程可以包含多个线程,这些线程共享进程的内存空间和系统资源,但每个线程有自己的执行路径和局部变量。线程的引入使得程序可以更加高效地利用多核处理器和并行计算的优势。
进程和线程的区别
-
资源占用:
- 进程占用的资源较多,包括独立的内存空间、文件描述符、寄存器等,进程切换开销较大。
- 线程占用的资源较少,因为它们共享进程的资源,线程切换开销较小。
-
通信和同步:
- 进程之间的通信较为复杂,通常需要使用进程间通信(IPC)机制,如管道、消息队列、共享内存等。
- 线程之间通信较为简单,可以通过共享内存直接访问共享数据,但需要小心处理同步问题,以避免竞争条件。
-
独立性:
- 进程是相互独立的,一个进程崩溃不会影响其他进程。
- 线程是在同一进程内运行的,如果一个线程出现问题(如内存泄漏或死锁),可能会影响整个进程的稳定性。
-
创建和销毁:
- 创建和销毁进程通常比较耗时,因为需要分配和释放独立的资源。
- 创建和销毁线程通常更快,因为线程共享进程的资源,只需创建和销毁线程的控制结构即可。
-
并发性:
- 进程之间的并发性较低,因为进程切换的开销较大。
- 线程之间的并发性较高,因为线程切换的开销较小,可以更快地响应事件。
进程
进程的状态
-
就绪状态(Ready):进程已经准备好运行,等待CPU分配时间片。在这个状态下,进程通常在就绪队列中等待。
-
运行状态(Running):进程正在执行,占用CPU资源。每次只有一个进程能够处于运行状态。
-
阻塞状态(Blocked):进程由于某些原因(如等待I/O完成或等待某个事件的发生)而被阻塞,无法继续执行。在这种情况下,操作系统将进程移动到阻塞队列中。
进程的控制
即OS对进程实现有效的管理,包括创建新进程、撤销已有进程、挂起、阻塞和唤醒,进程切换等多种操作。OS通过原语(Primitive)操作实现进程控制。
原语(Primitive)由若干指令组成,完成特定功能。执行过程不会被中断,要不全做,要全不做。常驻内存,是内核三大支撑功能(中断处理/时钟管理/原语操作)之一。
挂起原语(suspend)
- 挂起是将一个进程或线程从运行状态转移到非运行状态的操作。
- 挂起后的进程或线程不会占用CPU时间,它会被暂停执行。
- 挂起通常是由操作系统或其他控制程序触发的。
- 挂起后的进程可以在稍后的某个时刻激活或唤醒,继续执行
激活原语(active)
- 激活是将一个已经挂起的进程或线程重新恢复到运行状态的操作。
- 当进程等待的事件发生或者其他条件满足时,可以通过激活来重新启动进程。
- 激活后的进程将继续执行其先前挂起的位置,继续占用CPU资源。
进程的通信
进程通信即进程间的信息交换,进程是资源分配的基本单位,各进程内存空间彼此独立,一个进程不能随意访问其它进程的地址空间。
共享存储:允许多个计算节点或进程同时访问共享的物理存储设备,实现简单,收发双方不可见存在安全隐患。
消息传递:1.直接通信:点到点发送。发送和接收时指明双方进程的ID。每个进程维护一个消息缓冲队列。2.间接通信:广播信箱。以信箱为媒介,作为中间实体发进程将消息发送到信箱,收进程从信箱读取可以广播,容易建立双向通信链。类似共享内存但通过原语操作
管道通信:用于连续读写的共享文件,是大小固定的缓冲区。半双工通信:同一时段只能单向通信,双工通信需要两个管道,以先进先出(FIFO)方式组织数据传输。通过系统调用read()/write()函数进行读写操作
进程的同步
协调进程间额相互制约关系,让进程按照预期的规则顺序执行。
1.进程是并发执行的,进程间存在着相互制约关系。2.并发的进程对系统共享资源进行竞争。3.进程通信,过程中相互发送的信号称为消息和事件。
间接相互制约关系(互斥):进程排他性的访问共享资源。
直接相互制约关系(同步):进程间的合作。
互斥锁: 对临界区加锁以实现互斥,当一个进程访问时临界区上锁,另外进程不得访问。
死锁
并发程序的资源竞争,在得到对方资源之前不会释放自己所拥有的资源,造成大家都想要得到资源而又得不到资源。
必要条件: 互斥,不可抢占,占有且等待,循环等待条件。
处理机调度
根据一定算法和原则将处理机资源进行重新分配的过程。
高级调度/作业调度:将后备作业调入内存,只调入一次,调出一次。
中级调度/内存调度:将进程调至外存,在内外存对换区进行进程对换。
低级调度/进程调度:从就绪队列选取进程分配给处理机。
调度方式:抢占式调度,非抢占式调度。
调度时机
- 进程运行完毕
- 进程时间片用完
- 进程要求l/О
- 操作执行某种原语操作
- 高优先级进程申请运行(剥夺式调度)
进程调度:调度算法指标
cpu利用率 : 忙碌时间/总时间
系统吞吐量 : 完成作业数/总时间
周转时间 等待时间 响应时间
调度算法
先来先服务(FCFS),短作业优先(SJF),高响应比优先调度(HRRN),优先级调度(PSA),时间片转轮调度(RR),多级反馈队列调度(MFQ)