Java EE 计算机的操作系统
在计算机中,操作系统指的是一组做计算机资源管理的软件的统称。
目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、IOS系列、以及我们的国产新星——鸿蒙系统。
一 . 操作系统的定位
操作系统有两个基本功能:
(1)防止硬件被应用程序滥用。
(2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。
二 . 进程 / 任务与线程
(1)什么是进程
进程,我们通俗点又叫做任务。进程是操作系统对于一个正在进行的程序的一种抽象概念。换句话说,我们可以将进程看做程序的一次运行过程。同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。
咱们可以打开我们的任务管理器,这里就能看到我们电脑系统正在运行的一些进程(任务)
(2)进程控制块抽象(PBC Process Control Block)
计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在我们的Java语言中,我们可以通过类 / 对象来描述这一特征,也就是我们的 class xxx { };
这样,每一个PBC对象,就代表着我们实实在在正在运行的一个程序,也就是我们这里的进程。
1 . CPU 分配 —— 进程调度(Process Scheduling)
(假设是单CPU单核的计算机)操作系统对于 CPU 资源的分配,采用的是时间模式 —— 不同的进程在不同时间段去使用 CPU 资源。
2 . 内存分配 —— 内存管理(Memory Manage)
操作系统对于内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会受到干扰。
3 . 进程间通信(Inter Process Communication)
如上所述,进程是操作系统进行资源分配的最小单位,这就意味着各个进程之间是无法感受到对方的存在的,这就是我们操作系统抽象出来进程这一概念的初衷: 进程之间相互具备 “ 隔离性 ”。
但是随着我们科技的进步,现代应用要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合来达到目的。这样一来,我们就要进程之间就必须要有 “ (交互)信息交换 ” 的需求。因此,进程间通信应运而生。
当下,主流操作系统所提供的进程通信机制有以下几种:
3 . 1 管道
3 . 2 共享内存
3 . 3 文件
3 . 4 网络
3 . 5 信号
3 . 6 信号量
其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程之间的通信,还支持同一网络内部非同一主机上的进程间通信
(3)进程与线程的概念与区别
(这里只是简单的放出来让大家区别一下它与进程的关系,有关于线程,还有多线程,内容比较多,我会在下期单独出一期讲解)
1 . 进程是系统资源分配的基本单位;线程是系统调度执行的基本单位。
2 . 进程包含线程,一个进程里可以有多个线程,但至少有一个线程。
3 . 同一个进程里的线程之间,共用同一份系统资源(内存、硬盘、网络宽带等等),内存资源是代码中定义的变量 / 对象,在我们的编程中,多个线程是可以共用同一份变量的。
4 . 线程是当下实现并发编程的主流方式,通过多线程,可以充分利用好我们的多核 CPU 。一般来讲,多线程能够从一定层面反应我们的多核 CPU 的利用效率,但是,大家要注意,并不是我们的线程数目越多就越好,当我们线程数目达到一定的临界值的时候,将每个核心都已经充分利用完全了之后,此时我们若是再去增加线程,就无法再提高效率了,甚至呢,有可能还会影响我们原有的高效率。因为我们这个线程调度也是有一定会消耗的是吧,这一点大家能懂吧。
5 . 多个线程之间,可能会互相影响。线程安全问题:一个线程抛出异常,可能会把其他的线程一起带走。
6 . 多个进程之间,一般不会互相影响。就列如我们在使用电脑 / 手机的肯定都经历过应用程序运行的崩溃吧?应用就直接卡死了。这个时候我们只要将这个应用程序直接结束掉,我们还可以在电脑 / 手机上对其他应用进行操作,并不会直接让我们电脑 / 手机所有功能都卡死掉吧?这就是我们进程的隔离性。
OKK,咱们今天就先这样昂,下一期我来带大家详细了解一下线程与多线程。咱们下期再见咯!!!与诸君共勉!!!