java多线程-进程与线程基础-1

基本概念

进程

        是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空 间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。

        进程+cpu采用时间片轮转方式的操作系统,对于单核Cpu来说,在某个时刻都只有一个任务在占用cpu资源,只是让你感觉有多个任务好似在并发,实则不然,它只是在不断的进行上下文切换(cpu资源的进程分配),进程是操作系统进行资源分配的基本单位

线程

        在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位,即CPU分配时间的单位 。

        曾经看到过这样一句话:进程让操作系统的并发性成为了可能,而线程让进程的内部并发成为了可能。

并发与并行

        并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。

        这里面有一个很重要的点,那就是系统要有多核CPU才会出现并行。在有多核CPU的情况下,才会出现真正意义上的『同时进行』。

进程和线程的区别

        ①进程单独占有一段内存地址的空间,各个进程存在内存隔离,数据是分开的。所以数据同步简单但是数据共享复杂;线程所共享的是该线程所属进程所占有的内存地址空间,所以数据同步复杂但是数据共享简单。

        ②进程间无影响,但是一个线程出现问题会影响整个程序。

        ③进程是重量级的,线程是轻量级的。

 上下文切换

        上下文切换指的是内核(操作系统的核心)在CPU上对进程或者线程进行切换。上下文切换过程中的信息被保存在进程控制块(PCB-Process Control Block)中。PCB又被称作切换帧(SwitchFrame)。上下文切换的信息会一直被保存在CPU的内存中,直到被再次使用。

        可以理解为是CPU进行进程或线程的切换。上下文是指某一时间点 CPU 寄存器和程序计数器的内容。

        CPU通过CPU时间片机制来实现多线程。CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务,保存当前任务状态,以便于切换回当前还未执行完的任务,从任务保存到再次进行任务加载就是一次上下文切换。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那山川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值