Java面试之操作系统

news2024/9/28 11:20:07

1、冯诺依曼模型

运算器、控制器、存储器、输入设备、输出设备

32位和64位CPU最主要区别是一次性能计算多少字节数据,如果计算的数额不超过 32 位数字的情况下,32 位和 64 位 CPU 之间没什么区别的,只有当计算超过 32 位数字的情况下,64 位的优势才能体现出来

线路位宽  cpu能操作的内存大小 比如cpu想要操作4G的内存,就需要32条地址总线。2^32=4G

2、程序执行的基本过程

一个程序执行的时候,CPU 会根据程序计数器里的内存地址,从内存里面把需要执行的指令读取到指令寄存器里面执行,然后根据指令长度自增,开始顺序读取下一条指令。

3、指令的执行速度

程序的CPU执行时间=指令数*每条指令的平均时钟周期数*时钟周期时间

时钟周期时间=1/电脑主频  如1/2.4G

4、存储

寄存器

CPU cache SRAM 静态随机存储器  

  • 每个 CPU 核心都有一块属于自己的 L1 高速缓存,指令和数据在 L1 是分开存放的,所以 L1 高速缓存通常分成指令缓存数据缓存
  •  L2 高速缓存位置比 L1 高速缓存距离 CPU 核心 更远 大小比 L1 高速缓存更大
  • L3 高速缓存通常是多个 CPU 核心共用的

内存   DRAM (Dynamic Random Access Memory,动态随机存取存储器) 的芯片。数据会被存储在电容里,电容会不断漏电,所以需要「定时刷新」电容,才能保证数据不会被丢失

CPU 从 L1 Cache 读取数据的速度,相比从内存读取的速度,会快 100 多倍

硬盘

  • 固态硬盘:断电后数据还是存在的,而内存、寄存器、高速缓存断电后数据都会丢失。内存的读写速度比 SSD 大概快 10~1000 倍。
  • 机械硬盘:通过物理读写的方式来访问数据的,因此它访问速度是非常慢的,它的速度比内存慢 10W 倍左右。

每个存储器只和相邻的一层存储器设备打交道

5、如何写出让CPU 跑的快的代码

CPU Cache 的数据是从内存中读取过来的,它是以一小块一小块读取数据的

CPU L1 Cache 分为数据缓存和指令缓存,因而需要分别提高它们的缓存命中率:

  • 对于数据缓存,我们在遍历数据的时候,应该按照内存布局的顺序操作,这是因为 CPU Cache 是根据 CPU Cache Line 批量操作数据的,所以顺序地操作连续内存数据时,性能能得到有效的提升;
  • 对于指令缓存,有规律的条件分支语句能够让 CPU 的分支预测器发挥作用,进一步提高执行的效率;

对于多核 CPU 系统,线程可能在不同 CPU 核心来回切换,这样各个核心的缓存命中率就会受到影响,于是要想提高线程的缓存命中率,可以考虑把线程绑定 CPU 到某一个 CPU 核心。 

6、cpu缓存一致性

写数据

写直达 如果cache已经存在,则更新后写入内存  如果cache不存在,则把数据更新到内存

写回     对于已经缓存在 Cache 的数据的写入,只需要更新其数据就可以,不用写入到内存,只有在需要把缓存里面的脏数据交换出去的时候,才把数据同步到内存里,这种方式在缓存命中率高的情况,性能会更好

如何缓存一致

  • 写传播,也就是当某个 CPU 核心发生写入操作时,需要把该事件广播通知给其他核心;
  • 第二点是事物的串行化,顺序

 总线嗅探机制的 MESI 协议  已修改、独占、共享、已失效  

对于在「已修改」或者「独占」状态的 Cache Line,修改更新其数据不需要发送广播给其他 CPU 核心。

7、伪共享

CPU Cache Line 大小一般是 64 个字节 这种因为多个线程同时读写同一个 Cache Line 的不同变量时,而导致 CPU Cache 失效的现象称为伪共享 

如何避免?

 多个线程共享的热点数据,即经常会修改的数据,应该避免这些数据刚好在同一个 Cache Line 中,否则就会出现为伪共享的问题。

在 Linux 内核中存在 __cacheline_aligned_in_smp 宏定义,是用于解决伪共享的问题。是用空间换时间

字节填充

8、cpu选择线程

  • SCHED_DEADLINE:是按照 deadline 进行调度的,距离当前时间点最近的 deadline 的任务会被优先调度;实时任务总是会比普通任务优先被执行
  • SCHED_FIFO:对于相同优先级的任务,按先来先服务的原则,但是优先级更高的任务,可以抢占低优先级的任务,也就是优先级高的可以「插队」;
  • SCHED_RR:对于相同优先级的任务,轮流着运行,每个任务都有一定的时间片,当用完时间片的任务会被放到队列尾部,以保证相同优先级任务的公平性,但是高优先级的任务依然可以抢占低优先级的任务;

9、软中断 

中断处理程序的上部分和下半部可以理解为:

  • 上半部直接处理硬件请求,也就是硬中断,主要是负责耗时短的工作,特点是快速执行;
  • 下半部是由内核触发,也就说软中断,主要是负责上半部未完成的工作,通常都是耗时比较长的事情,特点是延迟执行;

 Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型  软中断的处理是通过“ksoftirqd”内核线程来实现的

10、补码

有了补码,负数的加减法操作,实际上是和正数加减法操作一样的

十进制整数转二进制使用的是「除 2 取余法」,倒序     

十进制小数使用的是「乘 2 取整法」正序

计算机存小数 符号位 指数位 尾数位

小数计算不精确的原因

因为有的小数无法可以用「完整」的二进制来表示,所以计算机里只能采用近似数的方式来保存,那两个近似数相加,得到的必然也是一个近似数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国篆刻孙溟㠭凿木《应无所住而生其心》

应无所住而生其心 弘一法师言:学佛不是让你出家,也不是让你变得与众不同。学佛就是一个正常生活的人,一个善良的人懂得用佛法降服自心,消除烦恼所有有皆是虚妄,若见诸相非相,即见真我。 孙溟㠭凿木《应无…

Vue3发送验证码,开启倒计时,并且倒计时结束前无法点击

目录 1.最终效果 2.HTML 3.JS 1.最终效果 先看效果,点击发送验证码,然后开启倒计时,倒计时结束前无法再次发送,并且该按钮处于无法选中状态 废话少说,上干货,直接看代码 2.HTML 按钮部分内容&#xf…

揭秘eBay店铺排名提升秘诀:测评自养号的好处

在竞争激烈的电商市场,eBay作为全球知名的在线拍卖及购物网站,为卖家提供了广阔的舞台。如何在众多商品中脱颖而出,提升产品排名,成为每位eBay卖家关注的焦点。 eBay卖家如何提升排名? 1、关键词优化:关键…

适合制造业的项目管理软件都有哪些?

项目管理软件涉及进度、预算成本、资源、开发、流程、质量、风险、工时、知识文档、商务等各个方面,是企业项目管理领域的重要辅助工具,能够帮助组织提高项目管理水平与质量,确保项目顺利进行。 一、 奥博思 PowerProject 项目管理系统 Pow…

汇川Autoshop编程软件连接PLC并下载程序的具体步骤示例

汇川Autoshop编程软件连接PLC并下载程序的具体步骤示例 如下图所示,打开AutoShop编程软件后,新建项目,点击工具—通讯设置, 如下图所示,在弹出的窗口中选择通讯类型(这里选择以太网),设置好IP地址,然后点击搜索,正常情况下可以搜到PLC, 如下图所示,如果搜索不到PLC…

我在高职教STM32——I2C通信入门(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…

基于PREEvision的架构方案评估

Introduction 随着汽车行业的快速发展和消费者需求的日益复杂化,现代汽车已不再仅仅是机械设备的集合体,更是高度复杂的电子和电气系统的结合体。在这样的背景下,如何有效地设计和优化汽车电气架构,成为制造商和供应商面临的关键…

CSS实现元素hover时背景色拉伸渐变

HTML代码 <ul><li><p><a href"#">Facebook搜索</a></p></li><li><p><a href"#">Instagram搜索</a></p></li><li><p><a href"#">Google搜索&…

【Qt】如何搭建Qt开发环境

Qt的开发工具 需要搭建Qt开发环境&#xff0c;需要安装3个部分&#xff1a; C编译器&#xff08;gcc、cl.exe...&#xff09;注意&#xff0c;这里的C编译器不是指visual studio这种集成开发环境&#xff0c;编译器不等于IDE&#xff0c;编译器只是IDE调用的一个程序。Qt SDK…

办公知识分享:如何自己制作一个图文二维码呢?

和一般的网址二维码、文件二维码等不同&#xff0c;H5编辑二维码支持在一个H5页面同时展示&#xff1a;图片内容、文字内容、并支持插入超链接、视频、音频等文件…。 其用途非常广泛&#xff0c;在教育、企业办公、产品包装设计、展会、艺术展览等都在使用H5编辑二维码来传播…

代码随想录算法训练营第24天 | 题目:93.复原IP地址 、78.子集 、 90.子集II

代码随想录算法训练营第24天 | 题目&#xff1a;93.复原IP地址 、78.子集 、 90.子集II 文章来源&#xff1a;代码随想录 题目名称&#xff1a;93.复原IP地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09…

Apache EChart前端图表

目录 一、了解Apache EChart 1.1 什么是Apache Echart 1.2 为什么要使用图表 1.3 常见的图表以及特点 二、Apache EChart的基本使用 2.1 下载echarts.js 2.2 echart基本使用案例 三、多类型图表的使用 3.1 柱状图(type:bar) --基本柱状图 --多系列柱状图 --堆叠柱状图…

我面试了个目标 50w 的大厂老哥,很符合预期

大家好&#xff0c;我是程序员鱼皮。上周我直播模拟面试了一位很优秀的老哥&#xff0c;有些感受想和朋友们分享分享。 先简单介绍一下&#xff1a;老哥是一本硕士出身 在大厂做后端开发 2 年&#xff0c;buff 拉满&#xff0c;目标是通过跳槽冲击 50 万的年薪。 说实在的&a…

Python 如何进行图像处理(OpenCV, PIL)

图像处理是计算机视觉的重要组成部分&#xff0c;它涉及对数字图像进行分析、修改和处理。在Python中&#xff0c;OpenCV和Pillow&#xff08;PIL是Pillow的前身&#xff09;是两个非常流行的图像处理库。 一、OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Lib…

【文心智能体】梗图七夕版,一分钟让你看懂如何优化prompt,以及解析低代码工作流编排实现过程和零代码结合插件实现过程,依然是干货满满,进来康康吧

目录 背景什么是梗图梗图概念梗图结构 低代码开发最小运行单元大模型链提示词模板文心模板输出效果 测试工具链HTTP请求工具 梗图工具链全流程 梗图优化Prompt提示词优化后梗图结构提示词前后对比优化前效果优化后效果API接口BOS图片水印 梗图插件格式说明构思插件清单文件定义…

21天学通C++:理解智能指针、IO流、异常处理

理解智能指针 管理堆&#xff08;或自由存储区&#xff09;中的内存时&#xff0c;C程序员并非一定要使用常规指针&#xff0c;而可使用智能指针。 什么是智能指针 简单地说&#xff0c;C智能指针是包含重载运算符的类&#xff0c;其行为像常规指针&#xff0c;但智能指针能…

Spring通过注解优雅实现工厂模式

Spring通过注解优雅实现工厂模式 工厂模式作为开发者&#xff0c;应该都是耳熟能详的&#xff0c;在课本上、在网络上都会有无数的案例&#xff0c;是一个简单、确十分好用的设计模式。但是实现它的方法有很多&#xff0c;早年见过最多的就是用 if 判断类型&#xff0c;然后返回…

Docker部署Minio并配置域名访问

Docker部署Minio并配置域名访问 1、拉取镜像 docker pull minio/minio:RELEASE.2024-08-03T04-33-23Z-cpuv12、启动容器 # 创建数据目录 mkdir /data/minio # 创建配置目录 mkdir /root/.minio # 启动容器(如果不配置域名访问MINIO_BROWSER_URL、MINIO_SERVER_URL可以不用配…

springboot书画在线学习网站-计算机毕业设计源码11849

摘 要 本篇论文旨在设计和开发基于SpringBoot的书画在线学习网站&#xff0c;提供用户便捷的学习方式和丰富的学习资源。在该系统中&#xff0c;用户可以通过网站浏览书画的相关内容&#xff0c;包括诗公告消息、书画资讯、课程信息等。同时&#xff0c;系统还将提供书画的学习…

第七在线联手深服协:以科技之力,绘就时尚 AI 智能商品管理新篇章

7月30日&#xff0c;在深圳&#xff0c;一场堪称行业精英云集、科技锋芒毕露的“科技赋能时尚前沿沙龙”圆满落幕。这场盛会由 7thonline 第七在线与深圳服装行业协会&#xff08;简称“深服协”&#xff09;携手打造&#xff0c;深度聚焦 AI 智能商品管理在时尚天地的创新运用…