【多线程】线程与进程、以及线程进程的调度

本文介绍了操作系统的基础知识,包括冯诺依曼体系结构、操作系统的角色和进程的概念。进程是操作系统内核调度的单位,每个进程包含一个或多个PCB。进程调度通过PCB随机进行,而线程是进程内的执行单元,共享进程资源。线程间的关系是同级的,没有父线程和子线程的概念。理解这些概念对于深入学习多线程编程至关重要。
摘要由CSDN通过智能技术生成

在了解多线程之前,首先要区分线程和进程的概念与区别,我目前只了解到Java的JVM中与操作系统联系中的线程和进程,在了解线程与进程之前,首先要初步了解电脑中的操作系统的地位和作用。

冯诺依曼体系

计算机最开始是包含这四个部分:CPU、存储器、输入设备、输出设备。这是四大件是起初计算机的组成成分,随着后来发展,便出现了屏幕、键盘等设备,然后便出现了我们几乎人手一台的笔记本电脑。

当我们买电脑的时候,电脑总会装上所谓的Windows、iOS、系统,这些系统就叫做操作系统。

操作系统

操作系统其实是一个很复杂的软件,它不是像CPU、显卡那种的硬件。一部电脑一开始买来都会安装一个操作系统,这些操作系统的地位是起到类似中间人的作用,向上联系着各种桌面应用软件,向下联系着CPU等硬件。

通俗的来说就是如下图所示(当然在操作系统和桌面软件直接存在一些操作系统提供的API、以及在硬件和操作系统之间存在驱动系统等等):

进程

 在说完操作系统的基本地位和作用,就来说说进程和操作系统的联系:

在操作系统的内核中有协调多任务运行各个进程(程序任务)之间的调用,这里提到了我们想要说的进程,我们平常运行的客户端、游戏平台等等,都算作一个程序、程序的运行有时候有多个进程,然后我们平常一般运行多个程序,也就是我们可以边用微信聊天边玩游戏,此时就打开了多个程序,调用了多个进程,例如我们可以打开任务管理器看到:

 这里可以看到在操作系统的角度上的进程,在这里可以关闭我们所运行的程序,通过关闭进程来关闭。

进程的调度

在运行一个程序时,通常是这样一个过程:

点击桌面上的可执行程序(文件名.exe)然后操作系统会将程序的代码打开在cpu、内存上运行,接着一个进程便开始执行,但进程是如何运作的呢?在操作系统上通过分配资源和地址给某个进程,进程里面包含一个或者多个PCB(进程控制块,是操作系统调度的最小单位,本质是一个数据结构,是进程存在的标志),进程的调度是通过PCB来进行调度,调度是进行随机调度的,即根据操作系统对资源的开销进行调度,如果该进程需要暂时中止运行,则通过PCB将信息从 CPU寄存器存储到内存,并且将PCB设置为阻塞状态,在需要重新运行的时候再通过PCB将信息从内存调用回CPU执行,并将PCB设置为就绪状态。

所以总的来说,操作系统上进程的调度是随机调度的,具体调用方式是根据操作系统内核进行,我们修改不了。

进程和线程

进程内部可以拥有子进程,即存在父进程和子进程,而线程不存在父线程和子线程。

进程内部拥有一个或者多个线程,即进程大于等于线程。

进程拥有虚拟地址,地址的作用是在进行进程的中断再运行时,可以将信息存储到内存的某个位置上,便于将进程重新恢复运行后将信息重新取出继续执行,而将地址设立为虚拟地址,即给每一个进程都分配一个虚拟地址,通过一个硬件后映射为一个真实的在内存上的地址,避免了因为多个进程中断的时候将信息存储在内存上的地址发生重复。

一个进程里面的多个线程公用进程里面由操作系统分配给该进程的资源,即当分配一个虚拟地址给进程的时候,里面的线程公用该虚拟地址。

一个线程就包含一个 PCB(进程控制块),操作系统进行调度的时候是通过一个个线程进行调度。

一个进程里面的线程是同级关系,不分父线程和子线程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值