【JavaEE】操作系统+进程+线程

目录

操作系统

进程 

操作系统管理进程

PCB

进程的虚拟地址

进程间的通信

线程

线程优点

线程缺点


操作系统

操作系统本质上就是一个软件。它是一个搞管理的软件。对于软件,操作系统要给软件提供一个稳定的环境;对于硬件,要管理好硬件设备。


进程 

进程就是一个运行起来的程序。进程也叫做任务,打开电脑上的任务管理器就可以看到有哪些进程。程序一运行起来,肯定是要用一些东西的,比如内存等。也就是说进程会占用一些资源,操作系统就会根据每个进程分配相应的资源。所以进程也是操作系统分配资源的基本单位。 这些资源有很多打开任务管理器,可以简单的看到资源分配。

其中的内存,磁盘等都很好分,你用多少给你多少即可。可以看到,进程有很多,但是CPU资源有限,现在的CPU通常为多核,但对于几百个进程来说还是太少了。对于进程的同时进行,CPU内核是通过并行和并发这两种方式解决的。


并行

在微观上,两个进程在两个CPU上同时执行。

并发 

在微观上,多个进程在一个CPU上执行,虽然不能同时执行,但是它对于线程之间切换的速度是很快的。这样在宏观上还是感觉它们是同时进行的。

上面这两种方式我们无法分辨出来,通常除非特意申明,否则把并行和并发统称为并发


操作系统管理进程

一个结构体(PCB)对应一个进程,操作系统通过双向链表(化简为这样的结构,实际更要复杂)把这多个结构体给串起来进行管理。

PCB

PCB就是描述一个进程的结构体。它的内容非常的多,以下只介绍一些比较重要的。

1.pid  这是进程的标识符(数字),每个进程的都是不一样的。类似人的身份证号。

2.内存指针  该指针描述了此进程使用了哪些内存。

3.文件描述符  描述了该进程使用的硬盘上的文件等其他资源。

4.进程调度的相关属性  这里介绍重要的。本质上是为了解决大量进程在少量CPU上运行的问题。

  a. 进程的状态

    ①就绪状态  表示进程已经准备好了,随时可以到CPU上去工作。

    ②运行状态  表示进程正在CPU上工作。   很多操作系统并不会区分以上两种状态。

    ③阻塞状态  表示进程该进程无法短时间到CPU上工作。

  b. 进程的优先级

    操作系统进行调度时,并不是平等的对待每一个进程。有些进程的优先级高,就会先调用。

  c. 进程的上下文

    进程如果被中断,过一段时间重新启动时,进程还能保持原先中断前的状态就靠进程的上下文。

    本质上是中断前保存CPU中各个寄存器的值,恢复后把这些值重新恢复回去。

  d. 记账信息

      统计进程在CPU上占用的时间和执行的指令数目,从而决定下一阶段如何调度。


进程的虚拟地址

进程之间使用的地址都是经过物理地址抽象后的虚拟地址。为什么不直接使用真实的物理地址呢?通过这个例子就知道了。

 对于上面的情况,一个线程出现了问题,同时连带其他线程出现问题,这不是一个好的情况。所以针对进程使用的内存空间,我们引入了一个硬件设备——MMU(能够加速把物理地址转为虚拟地址)。MMU和操作系统一起完成地址的转换。

此时一旦有某一个线程越界访问,操作系统内核就会发现这个问题,然后直接向进程反馈一个错误,让线程崩溃,从而不会影响其他线程。


进程间的通信

进程之间总是要有一些交互信息的,但上面才刚把进程之间隔离了,那么如何进行进程之间的交互呢。方法很多,但是核心思路都是一样的,就是划分出来一块公共空间,多个进程都可以进行访问这块空间,这样进程间就可以进行交互了。(后续文章在细说)


线程

线程是可以简单的理解为是进程的简化版,它是存在于进程里的。对于上文所描述的进程,可以理解为里面只有一个线程,但实际上一个进程至少有一个线程

同一个进程里的多个线程共用内存资源和文件描述符,pid也是一样的;对于进程调度的相关属性每个线程都是不一样的。所以一个进程里就会有多个PCB。

操作系统调度时,只是单独调度一个线程,而不是调度整个进程。所以进程时操作系统分配资源的基本单位,线程是操作系统调度执行的基本单位。


线程优点

线程的有点就是“轻”。(相较于进程)

1.创建线程开销小;

2.销毁线程开销小;

3.调度线程开销小。


线程缺点

由于同一个进程中的线程是不隔离的,所以如果有一个线程崩了,处理不好可能会导致这个进程的其他线程也崩了。但是进程之间就不会出现这样的问题。


多线程的代码在下篇。

文章希望可以帮到你,有什么问题评论区指出。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值