当前位置: 首页 > news >正文

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,咱们今天就先这样昂,下一期我来带大家详细了解一下线程与多线程。咱们下期再见咯!!!与诸君共勉!!!

相关文章:

  • Python爬虫课程实验指导书
  • ZeroGrasp:零样本形状重建助力机器人抓取
  • Pikachu靶场-目录遍历
  • 单相交直交变频电路设计——matlab仿真+4500字word报告
  • Python multiprocessing.Pool中,pool.close() 和 pool.join() 的作用
  • 【JavaScript】关系运算符--非数值类型、Unicode编码表
  • Pmax非英语国家投广,Feed语言和货币问题解决策略
  • Laravel5.7的一些用法
  • DuckDB:现代数据分析的“SQLite“内核革命
  • 人类社会的第四阶段
  • web字符转义
  • 特伦斯智慧钢琴:开启智能钢琴新体验
  • 国产免费工作流引擎star 5.9k,Warm-Flow版本升级1.7.0(新增大量好用功能)
  • FreeMarker语法深度解析与Node.js集成实践指南
  • 使用Nestjs, Bun 和 NCC 打造高效的 Node.js 应用构建流程
  • 高校毕业论文管理系统小程序实现
  • Spring MVC 多个拦截器的执行顺序
  • AI测试工具Testim——告别自动化测试维护难题
  • 开源|上海AILab:自动驾驶仿真平台LimSim Series,兼容端到端/知识驱动/模块化技术路线
  • git每次push都要输入用户名和密码很繁琐,只在第一次输入之后都不需要的解决方法
  • 以色列消防部门:已控制住耶路撒冷山火
  • 解放日报:硬科企业由此迈出“市场第一步”
  • 王受文已任中华全国工商业联合会领导班子成员
  • 国家网信办举办在欧中资企业座谈会,就数据跨境流动等进行交流
  • 人物|德国新外长关键词:总理忠实盟友、外交防务专家、大西洋主义者
  • 铁路上海站今日预计发送旅客65.8万人次,同比增长超16%