进程与线程调度的基本过程

发布于:2023-02-17 ⋅ 阅读:(496) ⋅ 点赞:(0)

这篇文章主要是简单讲述一下进程调度线程的基本过程,如果想详细了解进程和线程的知识,请进入这篇文章的入口进程与线程详解

目录

1.什么是进程

2.操作系统是如何管理进程的

3.进程的调度过程

4.操作系统是如何管理线程的


1.什么是进程

要知道进程的调度过程,首先我们要了解什么是进程,我们打开任务管理器,就会发现它的第一栏就是进程,如下图所示:

如果我们每多打开一个软件,就会发现任务管理器进程中就回多一栏,这就是软件对应的进程,我们可以理解为一个进程就是一个任务,当关闭任务时,对应的进程就会结束。这里面的进程,有些是系统自动打开的,有些是我们手动打开的。 

2.操作系统是如何管理进程的

从刚刚到任务管理器中,我们可以看到有非常多的进程,那他们是如何被系统管理着的呢?

Tip1:先描述一个进程
我们需要明确指出进程中的相关属性,创建进程PCB       。

例如:要形容一个学生,我们需要学生的学校,专业,姓名等等。

Tip2:将若干个进程组织起来
系统会利用适合的数据结构,将每个进程的相关信息存放起来,方便以后的增删改查。

Tip3:让进程正常工作
一个进程如果要正常的工作,我们需要给他分配一些系统资源,在一个进程启动前,其对应的文件是存储在硬盘上的,当我们双击某个软件时,实际上是启动了对应的.exe程序,就会加载到内存中,我们都需要哪些资源呢?

1.内存(用于加载.exe文件)

2.硬盘(用于操作文件)

3.CPU(用于执行进程上的指令)

3.进程的调度过程

进程调度只会发生在多任务操作系统中,因为单任务操作系统每次只会执行一个任务(进程),所以就不存在调度的说法。

多任务操作系统意味着每一时刻都有多个进程在运行,所谓的调度,其实就是时间管理。

假设张三是帅的一塌糊涂的美男子,身材还很好。
这就导致张三会被很多妹子追求。
原则上来说:同一时刻,张三只能谈一个女朋友。
张三希望未来的女朋友:贤惠,有钱、肤白貌美。(站在现实生活的角度,作者还没有见过这样的人)
然而身边的追求者,不存在这样的人。
因此,张三(操作系统)就同时谈3个女朋友(3个进程/任务),来集齐上述理想女友的所有特点。(三个任务同时执行)
A:有钱,长得一言难尽
B:贤惠:非常贴心,多的不说。
C:肤白貌美:美若天仙,就是有点脾气、
集合三人的特点,张三将拥有完美的体验。
但显然不科学,为此张三需要合理的安排时间。
避免同一时刻,这三个人碰面。只要不碰面,就是安全的。
在这个前提,张三就能将这种状态为此下去。
名副其实的时间管理大师。
怎么样去管理时间呢?
制作一个时间表
周一:和A 去逛街
周二:和 B 去图书馆
周三:和 C 去看电影
周四…
每个人依次安排一个具体的时间,通过这样的一张时间表,合理的去管理。
从宏观角度来说:张三同时谈了3个女朋友。
从微观角度来说:同一时刻,张三只是和一个女朋友在一起。
这个就是并发(广义上的并发)。
所以现在张三通过这样的一张时间表,就把这些女朋友很好的进行一个“调度”。
规划时间表的过程,也就是“调度”的过程。

4.操作系统是如何管理线程的

我们在Java程序中由主线程调用创建线程指令之后

Tip1:先描述一个线程
我们需要明确指出线程中的相关属性,创建线程PCB,这里的线程PCB与进程PCB实际上是同一种东西,因为操作系统认为他们是同一种东西,只不过他们可能表示的身份不一样而已。

Tip2:将若干个线程组织起来
系统会利用适合的数据结构,将每个进程的相关信息存放起来,添加到阻塞链表或者阻塞链表中。

Tip3:让线程参与调度
通过调度器,位于就绪链表中的线程PCB参与调度,位于阻塞链表中的线程PCB暂不参与调度。

5.线程调度管理的复杂多样性(图解) 

为了让我们更好的了解线程之间调度的随机性与多样性,我用时间轴的形式对线程调度进行描述,假设有我们的主线程A执行任务abcd,新线程任务1234.

情况1

 情况2

 情况3

 情况4

 当然我们这里就只举了这四种情况,其实线程的调度方式还有很多很多种。


网站公告

今日签到

点亮在社区的每一天
去签到