JAVA EE - 操作系统

目录

1.何为操作系统?

        1.2 操作系统定位

 2.进程

        2.2 如何管理进程的?

                ①.  描述

                ②.  组织

        2.3那么PCB描述了哪些进程的特征

3.内存管理

4.进程间通信


1.何为操作系统?

        操作系统(Linux win Mac 等等)是一个软件:搞管理的软件

管的啥? 1.对下要管理硬件设备        2.对上要给软件提供稳定的运行环境

        进一步的认为:操作系统是软件  硬件  用户之间交互的媒介!!!

1.2 操作系统定位

        

 2.进程

        一个跑起来的程序(正在运行的程序)就是一个进程

反言之,没在运行就是不是进程!!!

系统中包含很多的软件资源(进程就是一种软件资源)写代码的时候就需要这些软件资源,但是软件资源在操作系统的内核中,在代码中无法直接跳过系统调用直接对内核进行操作,这时候就需要一个类似“遥控器” 进行操作 这个遥控器(简单的整数/编号)就叫   句柄    (handler)

通过系统调用借助这个句柄就可以直接操作软件资源了

进程是一个重要的软件资源,是由操作系统内核负责管理的!!!

2.2 如何管理进程的?

        可以分为俩部分 : 描述   +    组织

①.  描述

        描述就是讲清楚进程属性特征

        描述:使用一个结构体(就是c语言) 来描述进程属性

        用来描述进程的结构体就叫 PCB (进程控制块)

②.  组织

        通过双向链表(不是单纯的双向链表)将多个PCB串在一起


其实可以理解为:

创建一个进程,本质上就是创建一个PCB这样的结构体对象,把它插入链表

销毁一个进程,本质上就是把链表上的PCB删除掉

任务管理器看到进程列表,就是遍历

2.3那么PCB描述了哪些进程的特征

        1.pid进程的身份标识符(唯一的数字)

身份证可以这样理解~~

        2.内存指针   指向了说自己的内存有哪些

        3.文件描述符表  :硬盘上的文件等其他资源

2,3都是描述了进程持有 了哪些硬件资源  硬件资源,内存等等都好分,但是CPU不好分~~

因为进程少说数百个,但是cpu就那么几个,造成了“狼多肉少”的问题,我们就希望“同时运行”——分时复用

并行:微观上同一时刻,俩个核心上的进程,同时执行

并发:微观上同一时刻,一个核心只能运行一个进程,但是它能够对进程进行快速的切换 宏观上人 感知不到的

这俩内核负责处理,程序员也感知不到,因此统称 并发~~

因此操作系统里有一个重要的模块调度器,就专门负责让有限的CPU来调度执行这么多的进程~~


         4.进程调度相关的属性: 

1.进程状态:

        就绪状态:随叫随到

        运行状态:正在运行

        阻塞状态:短时间无法响应

2.优先级:

        先给谁排,给谁排多?.......

        操作系统调度的时候,不会一碗水端平的,要涉及优先级

3.上下文:

        操作系统在进行进程切换的时候,需要把进程执行的“中间状态”记录下来,保存好~~

        下次这个进程再上CPU运行的时候,可以恢复上次的状态——存档,读档

        进程的上下文,就是CPU中的各个寄存器的值:CPU内置的存储数据的模块,保存的就是程序运行过程中中间结果

        保持上下文,把这些CPU中寄存器的值 记录到内存(PCB)中

        恢复上下文,就是把内存中的值恢复回去

 4.记账信息:

        操作系统 统计每个进程在CPU上占用的时间和执行的指令数目,根据这个来决定下一阶段如何调度

3.内存管理

        虚拟地址空间:程序中获取的内存地址,并非真实的物理内存地址,而是经过了一层抽象,虚拟出来的地址~~

        

        //内存有个了不得的特性,它可以随机访问:造就了数组取下标操作时O(1)


        但是,如果程序1有bug造成越界访问,可能会影响到程序2

        因此,针对进程使用的内存空间,进行“隔离”引入了虚拟地址空间!!!代码里不再直接使用真实的物理地址了,而是使用虚拟地址,由操作系统和专门的硬件设备负责进行虚拟地址到物理地址的转换~~

MMU也就是能说让转换更快一点,集成到CPU中~~

4.进程间通信

        虽然进程隔离了,但是又出现了问题,有些进程之间需要进行数据的交互~~

        就需要在隔离的基础上,开个口子

        进程间通信,实现方式很多,但是核心思路是一致的,需要整一个“公共空间”,基于这个公共空间来进行交互数据~~
 

        这里的通信方式/公共空间,有很多的具体体现形式~~

但是我们主要讲的是 基于文件与基于网络~~

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值