【JavaEE学习日记】----操作系统和进程认识

目录

1.操作系统

 2.操作系统的功能

3.什么是进程/任务(process)/(task)

3.1如何使用进程

3.2操作系统如何管理进程

 3.2.1PCB是什么

3.2.2.CPU 分配 —— 进程调度(Process Scheduling)

4.进程调度的属性

5.进程的内存分配

6. 进程之间的通信        

6.1通信方式

7.参考博文

1)​​​​​​​操作系统-第五章-进程调度 - 方知有 - 博客园 (cnblogs.com)

2)并发和并行的区别_奋努的bird的博客-CSDN博客_并发与并行

3) 进程间通讯的7种方式_zhaohong_bo的博客-CSDN博客_进程间通信

4)操作系统原理总结_weixin_39953756的博客-CSDN博客_操作系统原理 


1.操作系统

操作系统(operating system,简称OS),是管理计算机硬件与软件资源的计算机程序

 2.操作系统的功能

1)进程管理:其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多道程序或多用户的情况 下,组织多个作业或任务时,就要解决处理器的调度、 分配和回收等问题

2)存储管理:存储分配、存储共享、存储保护 、存储扩张

3)设备管理:设备分配、设备传输控制 、设备独立性

4)文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护

5)作业管理:负责处理用户提交的任何要求

总结:

1.防止硬件被应用程序滥用

2.向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备


3.什么是进程/任务(process)/(task)

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体

用一句通俗易懂的来讲,进程就是电脑上跑起来的程序

例如打开任务管理器出现的这一行:

 这是电脑上正在运行的程序,也就是所谓的进程

3.1如何使用进程

在我们的电脑上有很多个这样的 .exe 程序,这些 .exe 程序统称为“可执行程序”,这些可执行程序执行之前都是都是存储在硬盘上的,在鼠标双击之前对电脑是不会有任何的影响的

当我们双击这些应用程序之后,这些 .exe 文件就开始执行,操作系统就会把这些 .exe 文件加载到内存当中,并且让CPU执行 .exe 内部的一些指令(.exe内部存储了很多对应程序的二进制指令) 

此时 .exe  文件就开始进行相应的工作了

我们把此时运行起来的可执行文件称为 进程

对于我们写的java代码来说,就是通过java程序来执行的,此处的java程序指的就是jvm

3.2操作系统如何管理进程

1.先描述一个进程 PCB(明确出进程上面的一些相关属性)

2.在组织进程(使用一些数据结构(链表),把很多描述进程的一些信息放到一起,方便进行增删改查)

具体实现:

1)创建进程:就是先创建出PCB,然后把PCB 放到双向链表当中

2)销毁进程:找到对应的PCB,然后把PCB从链表中移除

3)查看进程:就是遍历链表

 3.2.1PCB是什么

进程控制块PCB(Process Control Block):计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。 类似于java当中的类

PCB 的三个属性:

1. PID:进程id,相当于身份证

2.内存指针:指明了这个进程要执行的代码或者指令在内存的哪里,以及这个进程依赖的数据在哪里

3.文件描述符表:程序在运行过程中要经常和文件打交道,这里的文件是在硬盘上的,也就说明程序要经常和硬盘打交道,进程每打开一个文件,就会在文件描述符表上增加一项(这个文件描述符表就相当于一个数组,每个数组里面的元素可以视为一个结构体,记录对应文件的相关信息),一个进程只要启动,不管是否打开或者操作文件,都会默认的打开三个文件

标准输入(System.in),标准输出(System.out),标准错误(System.err)

介绍到这我们就能知道每一个PCB就代表着一个进程

以上介绍的属性只是一些基本的属性,而接下来要介绍的属性是为了实现进程调度

3.2.2.CPU 分配 —— 进程调度(Process Scheduling)

什么是进程调度呢?操作系统管理了系统的有限资源,当多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是进程调度。

简单的来理解就是 渣男的时间管理

进程调度是理解操作系统管理进程的重要内容,其目的就是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源

4.进程调度的属性

 现在的操作系统一般都是 多任务操作系统 ,一个系统同时执行了很多的任务,便可以将操作系统比喻成一个渣男,一个个的进程比作是一个上钩的妹子,妹子也是有所不同的,渣男也不可能同时的和三个妹子约会,总得展开自己的时间管理技术

1.状态:这个就描述了当前这个进程接下来应该怎么调度

1.1.就绪状态:随时可以去CPU执行

1.2.阻塞状态/睡眠状态:暂时不能去CPU上执行

2.优先级:给重要的程序先分配时间,分配的时间多一点,给不重要的程序分配的时间少一点。

就和上述的海王给三个妹子分配时间,三个妹子总要分配不同的时间,要有个先后顺序

3.记账信息:统计了每个进程都被执行了多久,分别都执行了那些指令,给进程提供指导依据的

类似于海王和三个妹子约会分别记录下约会的细节,以免下次约会串台了

4.上下文:表示了上次进程被调度出CPU的时候,当时程序执行的状态,下次进程上CPU执行的时候就可以直接恢复到上次那个状态

进程被调出CPU之前,要先把CPU中的所有的寄存器中的数据保存到内存中,相当于存档

下次进程再被调度到CPU的时候,就可以从内存中恢复这些数据到寄存器中,相当于读档

5.进程的内存分配

进程通过虚拟地址空间来分配内存资源,进程是操作系统进行资源分配的最小单位

操作系统上同时运行着多个进程,如果某个进程出现了问题,是否会影响到其他的进程呢?对于线代的电脑来说,肯定是不会的,这是因为 进程的独立性,而进程的独立性就依赖了虚拟地址空间

6. 进程之间的通信        

然而在实习生活中,一个任务不能单单是一个进程就能完成的,往往需要进程与进程之间相互联系

但是有人会问,既然能相互交流,那么隔离性有什么作用呢???

其实很简单,这里的交流并不是说两个进程串台了,举个例子,A 和 B 被隔离了,但是A  还有件东西落在了 B  那里,但是A 和 B 不能接触怎么办呢?此时就需要借助一快公共空间(内存),B 将物体放在这里,然后 A 就可以来到这个公共空间来拿这个物品,这样就做到了既隔离了也不串台了

所以进程与进程之间的关系就类似于这种关系

6.1通信方式

最常用的通信方式主要有两种

1.文件操作

2.网络操作(socket)

7.参考博文

很多的地方博主能力有限,如果我介绍的不够详细的话可以参考以下博文

 

1)​​​​​​​操作系统-第五章-进程调度 - 方知有 - 博客园 (cnblogs.com)

2)并发和并行的区别_奋努的bird的博客-CSDN博客_并发与并行

3) 进程间通讯的7种方式_zhaohong_bo的博客-CSDN博客_进程间通信

4)操作系统原理总结_weixin_39953756的博客-CSDN博客_操作系统原理 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

w-ib

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

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

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

打赏作者

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

抵扣说明:

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

余额充值