【JavaEE】进程和线程

目录

▮操作系统上承各类程序,下控计算机各种硬件

▪狼多肉少,CPU遭受压榨

▮进程是操作系统操控程序的需要

▪进程

▪进程的独立性

▮高并发和高并行的执行程序

▮线程能进一步减少系统开销

▪线程

▮进程与线程的区别

▮ 多进程和多线程

 


▮操作系统上承各类程序,下控计算机各种硬件

        计算机是由:CPU,内存,硬盘,输出和输入设备,主板,显卡等多种硬件组成。其中CPU是计算机的大脑,最为重要。所以,操作系统如何操控CPU成为了操作系统能否操作计算机的一个关键。

        那操作系统为什么又要操作CPU呢?因为操作系统上面的程序需要使用CPU,如果各个程序胡作非为,随意使用电脑CPU,那必然会导致混乱和纷争。所以,需要操作系统来管理各个程序对CPU的使用。

▪狼多肉少,CPU遭受压榨

        CPU有一个重要的指标:8核16线程。8核指的是CPU有八个内核,即八个能干活的人;16线程指定是CPU有16个逻辑处理器,一次性能干16件事情。这里并不是说每个核心能干两件事情,而是说8个内核一起能干16件事情。

        当然,不同CPU的这个参数是不同的,具体可以打开电脑的“任务管理器”来查看。(任务管理器 -> 性能 -> CPU)

        

b57ca647635743c0b7cd931929106132.png

         这么一看来,感觉CPU还挺厉害的,一次性能做16件事情。而实际上,CPU要做的事情比这个多的多。打开任务管理器,你会看到上面运行着上百个程序,CPU不仅要运行这些程序,而且都要同时运行。在很短的时间内,CPU会把所有程序给运行一遍,给我们营造一种程序在同时运行的错觉。虽然说,这不是真正意义上的同时运行。但在微观层面上,CPU不断的在这上百进程里快速切换和运行;使得宏观层面上,我们感受到的就是这上百个进程正在同时进行。

        如此多的进程需要CPU来快速处理,操作系统对这些进程的管理也是繁琐而又复杂。


▮进程是操作系统操控程序的需要

        程序:硬盘里的可执行文件。


        进程:执行中的程序,也就是把硬盘里的程序给加载进内存,以被CPU执行

▪进程

        进程是操作系统分配内存的基本单位。创建进程的第一步那肯定是在内存上给进程开辟一块空间,然后往空间里添加进程所拥有的信息和数据。为了管理进程,那肯定是要把进程里的信息和数据按照某种结构来记录,就跟java中的类和对象一样。

        所以进程拥有一些固有属性,用于记载程序的信息和数据。通过这些信息,操作系统就可以了解进程的代码内容并调用这些进程,管理进程们合理的去使用CPU。

•进程属性

        1.PID:进程的ID,进程的身份标识用于区分其他进程
        2.进程的状态:新建态,阻塞态,就绪态,运行态和销毁态
        3.进程的优先级:优先级只是给操作系统的一个建议,具体谁先谁后,由系统决定。
        4.进程的记账信息:记录进程使用CPU的时间和指令数
        5.上下文信息:存档机制,用于保存进度,每次执行进程时回到上次结束的位置。就跟看视频时跳转到上次没看完的地方一样
        6.内存指针:指向进程在内存里开辟的空间
        7.文件描述符表:用于管理硬盘里被进程打开的文件。

▪进程的独立性

        操作系统可以说是一个花花公子,他轮流的跟每个进程玩好的同时,还不让进程之间相互认识。也就是说进程之间都不知道对方的存在,也没法相互影响,所以进程之间都是有独立性的。至于进程之间的通信,那是靠操作系统提供一个共用空间来实现数据交互。(进程不知道是谁给的,只知道是操作系统给的数据)。


▮高并发和高并行的执行程序

        并行:进程程序1的时候能同时进行程序2


        并发:既可以执行程序1又可以执行程序2,但只能执行一个

        并行就是可以“同时”处理多个任务,并发就是可以“轮流”处理多个任务。为了合理压榨CPU,提高运行速度,那一定是要尽可能的调用CPU的全部。因为CPU只是一个机械,坏了可以更换,干的快点和干的慢点所带来的效益一样,那还不如让CPU尽可能的干的多,干的快,以提高时间效率。所以就要不断提高程序们的并行和并发。


▮线程能进一步减少系统开销

        首先,我们知道使用进程是要去内存上开辟空间的,开辟空间需要时间和资源,需要消耗系统资源。
    现在有程序1和程序2,程序1先执行,程序2后执行。当程序1结束后,我们是不是要去释放它的空间?释放程序1后,我们进行程序2,万一程序2要再使用程序1呢?那我们是不是又要重新给程序1开辟空间?这样一开一放实在是太过于麻烦了,我们干脆直接划出一块固定的内存以供程序来使用,程序在这块空间上随便的执行和停止想干嘛就干嘛。
    实际上,“进程”就是这个固定的内存,所以称:进程是操作系统资源分配的基本单位。而“线程”就是里面的程序1、2,要送进CPU里去执行。所以称:线程是任务调度和执行的基本单位。

▪线程

        线程是进程里的一个执行流,把进程比作一个工厂,那线程就是里面的员工或者机械。在同一进程里的各个线程之间没有独立性,线程之间会相互影响,因为他们同用一块内存。

▮进程与线程的区别

        1.包含:进程里包含线程

        2.意义:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

        3.空间:进程之间相互独立,有各自的空间;而同一进程内的线程共用一块空间

        4.独立:进程之间具有独立性;而同一进程内的线程会相互影响。

▮ 多进程和多线程

        多进程就是你可以边看博客,边登QQ,还能刷个视频。多线程就是在你播放视频的时候还能点赞收藏,和查看评论。播放视频是一个线程,点赞收藏功能又是一个线程,查看评论也是一个线程。

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值