操作系统到底是个什么鬼?(五)

进程的通信
共享存储器系统
相互通信的进程共享某些数据结构或者共享存储区

消息传递系统
进程间通过操作系统提供的一组通信程序来传递消息

管道通信
进程间通过管道(连接读写进程的特殊文件)进行信息通信

消息缓冲队列
利用消息缓冲区,发送原语和接收原语实现信息通信

补充:共享存储器系统、消息传递系统和管道通信属于高级通信机制

线程是个啥?
其实,线程就是对进程的细分

定义:线程是进程中的一个实体,是被系统独立调度和分派任务的的基本单位

线程只能拥有在运行中必需的资源,包括程序计数器、一组寄存器和栈,但它可与同一进程的其他线程共享进程所有拥有的全部资源

注意: 线程是不能独立申请资源的!

线程的分类
1.内核级线程

2.用户级线程

线程的状态
运行态、阻塞态和就绪态

线程控制块(TCB)
每一个线程都由一个数据结构表示,包括他的基本状态等,这个数据结构就是TCB

TCB记录了操作系统所需要的、用于描述线程情况以及控制线程运行所需的全部信息

进程和线程的关系
1.资源和调度:线程是程序执行的基本单位,进程是拥有资源的基本单位

2.地址空间:不同进程的地址空间互相独立,而同一进程中的各线程共享同一地址空间

3.通信关系:进程之间的通信必须由操作系统提供的进程间通信机制,而同一进程中的各线程可以字节通信

4.并发性:多个进程之间可以并发执行,多线程之间也可以并发执行

5.系统开销:线程之间切换的开销小于进程之间切换的开销

线程的控制
1.创建
(1)内核级线程的创建

(2)用户及级线程的创建

2.终止
(1)正常结束

(2)异常结束

(3)外界干扰

3.阻塞
(1)请求系统服务

(2)启动某种操作

(3)新数据尚未到达

4.唤醒

5.调度

6.切换

进程的调度和死锁
进程调度的功能与时机
进程调度的功能由操作系统的进程调度程序来完成

具体而言,进程调度就是按照某种策略和算法从就绪态进程中为当前空闲的CPU选择在其上运行的新进程

调度的时机:

(1)进程正常结束

(2)进程阻塞

(3)有更高级优先级进程到来

(4)时间片用完

(5)进程异常结束

进程调度算法的选择
1.如何衡量一个好算法?

(1)周转时间短:作业从提交给操作系统开始直到作业完成花费时间短;

(2)响应时间快:从用户提交作业开始到系统开始响应,花费时间短;

(3)截止时间的保证:保证作业在开始截止时间前开始,并在完成截止时间前完成;

(4)吞吐量大:系统在单位时间内完成的作业量最多;

(5)处理机利用率好:CPU的利用率尽可能高。

补充:

周转时间:外存等待时间+就绪队列等待时间+执行时间+I/O操作完成

##进程调度算法
1.先来先服务FCFS

从就绪队列中直接选择最先到达的进程为其分配CPU

2.短进程优先SPF

从就绪队列中选择运行时间最短的进程为其分配CPU

优点:可以有效降低进程的平均等待时间,提高系统吞吐量

缺点:不利于长进程

猜你喜欢

转载自blog.csdn.net/weixin_46107282/article/details/114272404