不可不知的操作系统知识,2024年最新Java开发最佳实践手册全网独一份

在这里插入图片描述

特权指令:在指令系统中那些只能由操作系统使用的指令

非特权指令:允许一般的用户使用的指令


处理机的状态

管态(特权态、特态、系统态):指操作系统管理程序运行的状态。可以执行全部指令,使用所有资源,具有改变处理机状态的能力

目态(指用户程序运行时的状态。只能执行非特权指令:有些系统分为核心状态、管理状态和用户程序状态普通态、普态、用户态)

存储器的层次结构

在这里插入图片描述

为了简化对存储器的分配和管理,在不少计算机系统中把存储器分成块。在为用户分配主存空间时,以块为最小单位。

常用的存储保护机构:界地址寄存器(界限寄存器)、存储键。

缓冲技术与中断技术

缓冲技术—般有3种用途:

1.用在处理机与内存之间的

2.用在处理机和其他外部设备之间

3.用在设备与设备之间的通信上的

目的:为了解决部件之间速度不匹配的问题


-所谓中断是指CPU对系统中或系统外发生的异步事件的响应;

  • 引起中断的那些事件称为中断事件或中断源;

  • 中断源向处理器发出的请求信号称为中断请求;

  • 把处理中断事件的那段程序称为中断处理程序

  • 中断的作用:能充分发挥处理器的使用效率 、提高系统的实时能力

  • 典型的中断:程序中断、时钟中断、I/O中断、硬件失效中断

-依据中断的功能:可屏蔽中断(I/O中断)、不可屏蔽中断(机器内部故障、掉电中断)、程序错误中断(溢出、除法错等中断)、软件中断(Trap指令或中断指令INT)

-依据被激发的手段:强迫性中断、自愿性中断

-依据中断事件发生和处理是否是异步 :异步中断(中断)、同步中断(异常)

-依据中断源的类型 :硬件中断、软件中断


-中断优先级:高优先级屏蔽低优先级

-同一中断级中有多个中断请求时,可采用固定的优先数和轮转法来处理

中断处理

在这里插入图片描述

时钟

-在多道程序运行的环境中,它可以为系统发现一个陷入死循环(编程错误)的作业,从而防止机时的浪费

-在分时系统中,用间隔时钟来实现作业间按时间片轮转

-在实时系统中,按要求的时间间隔输出正确的时间信号给一个实时的控制设备

-定时唤醒那些要求延迟执行的各个外部事件

-记录用户使用各种设备的时间和记录某外部事件发生的时间间隔

-记录用户和系统所需要的绝对时间,即年、月、日


进程


操作系统·进程

进程绑定CPU

进程间通信

异步通信之 信号

守护进程,一份nginx实现,一份我的实现,看着拿呗


存储器管理


-计算机系统中存储器一般分为内存储器和辅助存储器两级

-内存可以分成系统区和用户区两部分,系统区用来存储操作系统等系统软件,用户区用于分配给用户作业使用

为用户提供方便、安全和充分大的存储空间.

内存的分配和回收

当用户作业要装入内存时,需向操作系统提出申请,操作系统按一定策略分配存储空间,若某作业执行完毕,需归还内存空间时。

为避免内存中若干道程序相互干扰,尤其是为了防止用户程序侵犯系统程序所在的内存区域,必须对内存采取保护措施 ,内存储器的地址保护功能一般由硬件和软件配合实现。

为提高内存利用率,需要进行内存空间的共享,包括两方面的含义:

-共享内存储器资源

-共享内存储器的某些区域

内存储器的扩充不是硬件设备上的扩充,而是用虚拟技术来实现的逻辑上的扩充,即虚拟存储概念


程序的链接和装入

静态链接方式:在程序运行以前,将各个目标模块及它们所需要的库函数,链接成一个完整的装入模块,又可称为可执行文件,通常不再拆开。

装入时动态链接:用户源程序经编译后所得的目标模块,在装入内存时,边装入边链接,即在装入一个目标模块时,如果发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,进行链接。

优点:①便于修改和更新。②便于实现对目标模块的共享。

运行时动态链接:这种链接方式是将对某些模块的链接推迟到执行时才进行。在执行过程中,当发现一个被调用模块尚未调入内存时,立即由操作系统去找到该模块并装入内存,再把它链接到调用者模块上。

各种存储管理方式

在这里插入图片描述

单一连续分配:

基本思想:

内存的用户区一次只分配给一个用户程序使用

存储保护机制:

基址寄存器和界限地址寄存器

特点:

这种管理方式的分配、去配算法非常简单,内存的利用率很低

分区分配:

分区分配的存储管理是为了适应多道程序设计技术而产生的最简单的管理方式

固定分区:

  • 基本思想

系统预先把内存中的用户区分成若干个连续的区域,每个区域称为一个“分区”。程序装入时,根据它对内存大小的需求量,系统将按照一定的策略,把能满足它要求的一个分区分配给该程序

  • 分配和回收

固定分区分配表,内容包括分区号、起始地址、长度、占用标志等.


分区分配算法

首次适应算法:要求空闲分区链以地址递增的次序链接,在进行内存分配时,从链首开始顺序查找,直至找到一个能满足其大小要求的空闲分区为止

循环首次适应算法:在为程序分配内存空间时,不再每次从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找。直至找到第一个能满足要求的空闲分区

最佳适应算法 :把既能满足要求、又是最小的空闲分区分配给程序

最差适应算法:每次为程序分配内存时,总是找到一个满足程序长度要求的最大空闲分区进行分配


内存分区回收操作

当进程运行完毕释放内存时,系统根据回收区的首址,从空闲分区表(链)中找到相应的插入点,进行回收,此时可能出现以下四种情况:

-回收区与插入点的前一个分区相邻接,两分区合并

-回收区与插入点的后一个分区相邻接 ,两分区合并

-回收区同时与插入点的前、后两个分区邻接 ,三分区合并

-回收区与插入点前、后两个分区都不相邻 ,单独一个分区

内存回收算法

假定进程归还的分区起始地址为S,长度为L,则:

① 归还区有下邻空闲区

如果S+L正好等于空闲区表中某个登记栏目(假定为第j栏)的起始地址,则表明归还区有一个下邻空闲区。这时只要修改第j栏登记项的内容:

起始地址=S;

第j栏长度=第j栏长度+L;

② 归还区有上邻空闲区

如果空闲区表中某个登记栏目(假定为第k栏)的“起始地址+长度”正好等于S,则表明归还区有一个上邻空闲区。这时要修改第k栏登记项的内容(起始地址不变):

第k栏长度=第k栏长度+L;

③ 归还区既有上邻空闲区又有下邻空闲区

如果S+L正好等于空闲区表中某个登记栏目(假定为第j栏)的起始地址,同时还有某个登记栏目(假定为第k栏)的“起始地址+长度”正好等于S,这表明归还区既有一个上邻空闲区又有一个下邻空闲区。此时对空闲区表的修改如下:

第k栏长度=第k栏长度+第j栏长度+L;(第k栏起始地址不变)

第j栏状态=“空”;(将第j栏登记项删除)

④ 归还区既无上邻空闲区又无下邻空闲区

如果在检查空闲区表时,无上述三种情况出现,则表明归还区既无上邻空闲区又无下邻空闲区。这时,应该在空闲区表中查找一个状态为“空”的栏目(假定查到的是第t栏),则第t栏的内容修改如下:

第t栏起始地址=S;

第t栏长度=L;

第t栏状态=“未分配”

可变分区分配的优缺点

优点:有助于多道程序设计,提高了内存的利用率

要求硬件支持少,代价低

管理算法简单,实现容易

缺点:必须给作业分配一连续的内存区域

碎片问题严重,内存仍不能得到充分利用

不能实现对内存的扩充


分页存储管理方式


将程序的逻辑地址空间和存储空间按相同长度为单位进行等划分。把每个程序逻辑空间分成一些大小相同的片段,叫做页面或页。把内存的存储空间也分成大小与页面相同的片段,叫做物理块或页框。分配的物理块可以连续也可以不连续。

在这里插入图片描述

页表

页表的作用是实现从页号到物理块号的映射

系统在内存空间设置一片区域作为页表区,系统为每个进程提供一个页表。进程页表的起始地址存放在进程PCB中。

存取控制

在页表的表项中设置一存取控制字段,用于对该存储块中的内容进行保护。

在这里插入图片描述

地址变换

地址变换即通过地址变换机构把逻辑地址变换成相应的物理地址,实际上是将逻辑地址中的页号,转

换为内存中的物理块号。因为页表的作用就是用于实现页号到物理块号的变换,因此,地址变换任务是借助于页表来完成的

除此以外,系统设置了一个页表寄存器PTR其中存放页表在内存的始址和页表的长度

动态地址变换

逻辑地址可以分解成:页号、页内位移量(页内地址)

物理地址可以分解成:物理块号、物理块内位移(物理块内地址)

 p=逻辑地址/页面大小      d=逻辑地址-p×页面大小

p=逻辑地址/页面大小 d=逻辑地址-p×页面大小

地址变换过程

⑴ 根据逻辑地址计算出页号p和页内地址d,

p=逻辑地址/页面大小 d=逻辑地址%页面大小

⑵ 根据页号p查页表,得到对应块号f

⑶ 块内地址和页内地址相同,计算物理地址

物理地址=f×块大小+d

(块大小等于页大小)

若页面大小为2的幂,则页号和页内地址可以直接取高位和地位部分获得,物理地址可以用块号和块内地址拼接而成

分页系统中的地址变换机构

在这里插入图片描述

快表

由于页表存储在内存中,所以当要按照给定的逻辑地址进行读/写时,需要两次访问内存:

第一次是根据页号访问页表,读出页表相应栏中的块号以便形成物理地址;

第二次是根据物理地址进行读/写操作。

这样比通常执行指令的速度慢一倍。为了提高存取速度,在地址变换机构中增设了一个具有并行查寻能力的特殊高速缓冲存储器,又称为“联想存储器”或“快表”

利用快表的地址变换机构

在这里插入图片描述

两级和多级页表

现代的大多数计算机系统都支持非常大的逻辑地址空间,此时,页表就变得非常大,要为它分配一大段连续的内存空间将变得十分困难

解决办法:

①采用离散分配方式来解决难以找到一块连续的内存空间问题;

②只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入。


分段存储管理


基本思想

每个程序的地址空间按照自身的逻辑关系划分成若干段(比如主程序段、子程序段、数据段、堆栈段等)每个段都有自己的名字,通常可用一个段号来代替段名,每个段都从0开始独立编址,段内地址连续。段的长度由相应的逻辑信息组的长度决定,因而各段的长度不等。分配内存时,为每个段分配一连续的存储空间,段间地址空间可以不连续

段表

段表实现了从逻辑段到物理内存区的映射.系统为每个进程建立了一张段映射表,简称“段表”。进程的每个段在段表中占有一个表项,在其中记录了该段在内存中的起始地址(基址)和段的长度

段与页的差别

基本思想

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

面试经验技巧篇
  • 经验技巧1 如何巧妙地回答面试官的问题
  • 经验技巧2 如何回答技术性的问题
  • 经验技巧3 如何回答非技术性问题
  • 经验技巧4 如何回答快速估算类问题
  • 经验技巧5 如何回答算法设计问题
  • 经验技巧6 如何回答系统设计题
  • 经验技巧7 如何解决求职中的时间冲突问题
  • 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
  • 经验技巧9 在被企业拒绝后是否可以再申请
  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

资料整理不易,点个关注再走吧

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

[外链图片转存中…(img-fNw0vbwJ-1712802128576)]

资料整理不易,点个关注再走吧

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-CGpSyGvL-1712802128576)]

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值