进程与线程

如题所述

第1个回答  2022-06-26

经典定义:
1.进程是可以并发执行的计算部分



进程的五个特性
1.动态性:创建时产生,由调度而执行,得不到资源而暂停执行,有撤销而消亡
2.并发性:多个进程实体同存于主存中
(引入进程的目的,程序是不能并发执行的)
3.独立性:进程实体是一个能独立运行的基本单位,也是系统中获得资源和独立调度的基本单位
4.异步性:进程按各自独立的,不可预知的速度向前推进(导致程序执行的不可再现性)
5.结构特征:进程实体是由程序段、数据段、进程控制块三部分构成,又称进程映像/进程上下文(context)


进程的基本状态

有些还存在两个额外状态:新状态和终止状态

进程控制块PCB
1.概念:是操作系统用于记录和刻画进程状态及有关信息的 数据结构 ,也是操作系统控制和管理进程的主要依据。

原语:一组系统命令
要么全部执行,要么不执行,不存在中间状态

$$进程创建
\begin{cases}
& \text{系统生成时,会创建一些系统进程(用来分配系统资源和管理工作)}\
& \text{用户作业,由操作系统的作业调度程序为之创建相应的进程}
\end{cases}$$

1.既可撤销具有指定标识符的过程,又可撤销一个优先级中的所有进程
2.一个进程被撤销时,必须从系统队列中移出,释放并归还所有系统资源,同时也有审查是否有子孙进程,如果有子孙进程也有一起予以撤销

1.当一个进程出现等待事件时,该进程调用阻塞原语将自己阻塞

1.必要性:解决多个进程争夺少数CPU资源的问题
2.功能:
(1)记录系统中所有进程的执行情况
(2)选择占有CPU的进程
(3)CPU分配给进程,即进行进程上下文切换
(4)回收CPU
3.进程调度算法
先来先服务/FCFS
按照进程进入就绪队列的先后次序选择占用处理器的进程

优先数调度算法
为每个进程确定一个优先数,进程调度总是让具有最高优先数的进程先使用处理器(若优先数相同则采用FCFS)

时间片轮转调度算法
CPU处理时间分成固定大小的时间片,轮流来,如果时间片用完进程还未结束,也得重新排到就绪队列的末尾等待再次调度

时间片q的选择:
q=R/N(R是系统对响应时间的要求;N是进程数)

多级反馈队列调度算法/MLFQ
设置多个就绪队列
各个队列的优先权不同(第一个队列的优先权最高,逐个降低)
各个队列的时间片大小不同(优先权越高的队列时间片越小)
当前队列的某个进程在时间片内没有完成就进入下一个队列的末尾
当某个队列为空时才会调度下一个队列
处理机在第i队为谋进程服务时,如果有新进程进入优先权较高的队列(i之前),则处理机就去处理i之前的那个新进程了,正在运行的进程被放到i队伍的末尾(可怜哈哈哈哈)

4.调度算法的选择
(1)处理器利用率(尽量让CPU处于忙碌状态)
(2)吞吐量
(3)等待时间(尽可能减少)
(4)响应时间(尽可能减少)

1.进程互斥:若干个进程要使用一个共享资源,任何时刻只允许一个进程去使用,其他要使用的进程必须等待,直到那个进程使用完后释放资源
2.进程互斥的管理办法: PV操作 管程

1.进程同步:并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消息,当一个进程没有得到另一个进程的消息时应等待,直到消息到达时才被唤醒

3.时间上的同步问题

$$进程通信
\begin{cases}
低级& \text{PV操作}\
高级 \begin{cases} 共享存储器系统\ 消息传递系统 \管道通信系统 \end{cases}
\end{cases}$$

1.基于共享数据结构的通信方式
在这种通信方式中,要求诸进程公用某些数据结构,进程通过它们交换信息。这种通信方式是低效的,只适于传递少量数据。
2.基于共享存储区的通信方式
为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中的数据进行读或写来实现通信。这种通信方式属于高级通信。

消息传递系统中,进程间的数据交换以消息为单位

1.管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称为pipe文件
2.为了协调双方的通信,管道通信机制必须提供以下三方面的协调能力:(1)互斥;(2)同步;(3)对方是否存在。

1.需要线程的目的:保持系统的并发性
2.为了减少额外开销,系统把进程的资源申请与调度执行分开,线程是调度的基本单位,进程是资源申请与拥有的基本单位
3.概念:线程(Thread)是进程中的一个实体,是可独立参与调度的基本单位
4.属性:
并发
一个线程可以创建另一个
动态性(生命周期)
TCB(进程是PCB)
同一进程内的线程共享同一地址空间
一个进程的线程对另外一个进程是不可见的
线程的通信是基于全局变量进行的
5.状态(与进程类似)

时间片轮转算法
优先权算法

1.进程作为资源的申请与拥有单位,线程作为调度的基本单位
2.线程在调度和切换上所花费的开销比进程小得多
3.进程是独立拥有资源的的一个基本单位,线程只拥有一点点运行中必要的资源
4.进程作为独立拥有资源的基本单位,线程是独立参与调度的基本单位

1.概念:死锁是多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进
2$$产生原因\begin{cases} 竞争资源\ 进程推进顺序非法(请求与释放资源顺序不当) \end{cases}$$

3.$$产生死锁必要条件 \begin{cases} 互斥条件(进程互斥使用资源) \ 占有且等待条件(得不到需要的资源就不释放占有的资源)\ 不剥夺条件(进程不能从另一进程抢夺资源)\ 循环等待条件(每个进程都在等待另一个进程所持有的资源) \end{cases}$$


4.对策:预防 避免 检测 解除
预防
(1)静态分配策略//破坏第二个必要条件
所谓静态分配是指一个进程必须在执行前就申请它所要的全部资源,并且直到它所要的资源都得到满足后才开始执行
(2)层次分配策略//破坏第四个必要条件
当一个进程获得了某一层的一个资源后,它想再申请该层中的另一个资源,必须先释放该层中的已占用资源。

避免

检测
操作系统中的每一时刻的系统状态都可以用进程—资源分配图来表示,进程—资源分配图是描述进程和资源间申请及分配关系的一种有向图,可用以检测系统是否处于死锁状态。

相似回答