再看Java-笔试

news2024/9/20 5:35:55

放在前面的话

最近确实有些空闲,分配的功能从一开始的两眼一黑到现在的一上午就能完成,这何尝不是一种进步呢。

该说不说,海康的API问题相比较其他第三方的API还是蛮多的,而且10月份人工客服还会停运,不过到那个时候我也用不到了。

而这篇博客其实也就是汇聚一下笔试的相关知识点。

正文

macOS使用的是unix内核,它其实是unix的一条分支;

而linux其实也是基于unix开发的,也是unix的一条分支,因此macos和linux其实都是基于unix的分支。因此,不能说macos是基于linux开发的。

下面是基于linux开发的常见操作系统,用的较多的包括:红帽RedHat、CentOS、Ubuntu

进程调度的定义:进程调度的主要功能是按照一定的策略选择—个处于就绪状态的进程,使其获得处理机执行。

进程调度是操作系统的核心功能之一,简单来说,它就是合理安排各个程序运行的顺序和时间,使得系统能够高效运转。

局部变量和函数参数存放在栈上

全局变量和今天变量被分配到同一块全局静态区域中

常量存储在常量存储区 ,不允许修改

代码存放在 代码区,不允许修改,但是可以执行

C++中new一个对象是从堆上分配内存 。

希尔排序

希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。
尔排序中对于增量序列的选择十分重要,直接影响到希尔排序的性能。
希尔排序并不稳定, 相同大小的元素很可能调换原始的先后次序

冒泡排序是两两比较,一轮找出一个最大的,所以叫冒泡。

选择是下标元素和其他未排序的元素比较,一轮找出最大或最小的那个。

软链接与硬链接

符号连接,在计算机领域通常指的是符号链接(Symbolic Link),也称为软链接。它是一类特殊的文件,其主要特点是包含了一条以绝对路径或者相对路径的形式指向其他文件或目录的引用

  • 如果删除的是软链接文件本身(即那个包含指向另一个文件路径的文本字符串的文件),那么软链接将不再存在于文件系统中。但请注意,这并不影响被软链接指向的文件,该文件仍然完好无损地存在于其原始位置。
  • 如果删除的是软链接所指向的文件,那么软链接将变得无效。

硬链接是通过inode(索引节点)进行的链接。在Linux系统中,每个文件都有一个唯一的inode号,inode中存储了文件的元数据(如文件大小、创建和修改时间、权限等)和数据块位置信息。硬链接允许多个文件名指向同一个inode号,即多个文件名可以关联到同一个文件的内容。

  • 删除一个硬链接并不会影响文件本身的内容,因为inode和文件数据块仍然存在,只要还有其他硬链接指向该inode。
  • 只有当最后一个硬链接被删除时,inode和文件数据块才会被释放,文件才会被真正删除。
  • 如果删除的是硬链接所指向的原文件(即该文件不是通过硬链接创建的,而是最初的文件),并且还有其他硬链接指向该文件,那么文件本身仍然是有效的,因为这些硬链接仍然指向同一个inode和文件数据块。
  • 如果没有其他硬链接指向该文件,那么文件将被删除,所有硬链接都会失效。

在一个进程终止后,其所打开的文件通常不会被系统删除。文件的删除需要由用户或程序通过显式的删除操作来完成。

1 代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作

2 数据段:存放程序静态分配的变量和全局变量

3 BSS段:BSS段包含了程序中未初始化的全局变量,在内存中 bss段全部置零。

进程都有自己的虚拟地址空间,把虚拟地址转换为物理地址需要查找页表,页表查找是一个很慢的过程,因此通常使用Cache来缓存常用的地址映射,这样可以加速页表查找,这个Cache就是TLB(translation Lookaside Buffer,TLB本质上就是一个Cache,是用来加速页表查找的)。

由于每个进程都有自己的虚拟地址空间,那么显然每个进程都有自己的页表,那么当进程切换后页表也要进行切换,页表切换后TLB就失效了,Cache失效导致命中率降低,那么虚拟地址转换为物理地址就会变慢,表现出来的就是程序运行会变慢,而线程切换则不会导致TLB失效,因为线程无需切换地址空间,因此我们通常说线程切换要比较进程切换块,原因就在这里。
 

 

进程切换需要切换地址空间,而线程切换不需要,这主要是由于进程和线程在内存管理上的根本区别所导致的。

进程与地址空间

  1. 进程定义:进程是系统进行资源分配和调度的一个独立单元,是程序的一次动态执行过程。每个进程都有自己独立的虚拟地址空间,这个空间是进程运行所必需的,包括代码段、数据段、堆和栈等。

  2. 地址空间切换:当操作系统进行进程切换时,意味着从一个进程切换到另一个进程。由于每个进程都有自己独立的虚拟地址空间,因此切换进程时必须同时切换其对应的地址空间。这包括更新页表、刷新TLB(Translation Lookaside Buffer,快表)等操作,以确保新进程能够正确地访问其地址空间中的数据和代码。

线程与共享地址空间

  1. 线程定义:线程是进程中的一个实体,是CPU调度和分派的基本单位,它是比进程更小的独立运行的单位。线程是进程的一部分,因此它共享进程所拥有的全部资源,包括内存和地址空间。

  2. 无需切换地址空间:由于线程共享其所在进程的虚拟地址空间,因此在同一进程内的线程切换时,无需进行地址空间的切换。线程切换主要涉及的是线程上下文(如寄存器值、程序计数器等)的保存和恢复,以及线程调度相关的操作,这些操作相对于进程切换来说开销要小得多。

        所以,进程切换需要切换地址空间是因为每个进程都有自己独立的虚拟地址空间;而线程切换不需要切换地址空间是因为线程共享其所在进程的虚拟地址空间。这种差异导致了进程切换和线程切换在开销和性能上的显著差异。在需要频繁切换执行单元的场景中,使用线程通常比使用进程更为高效。

补充,

在进程切换时,虚拟内存地址本身并不会改变,因为它们是进程代码和数据在逻辑上的表示。然而,由于不同进程拥有不同的虚拟地址空间,因此当从一个进程切换到另一个进程时,实际上是在访问不同进程的虚拟地址空间。

页表是操作系统用于将虚拟地址转换为物理地址的数据结构。每个进程都有自己的页表,它描述了该进程虚拟地址空间中的每个页面与物理内存中页面的映射关系。

在进程切换时,由于涉及到不同进程的虚拟地址空间,因此也需要切换到与该进程相关联的页表。这通常通过更新CPU中的页表基址寄存器(如x86架构中的CR3寄存器)来实现。

TLB是CPU中的一个高速缓存,用于存储虚拟地址到物理地址的映射关系。它的目的是减少CPU访问页表的次数,从而提高地址转换的效率。

当进程切换时,由于页表已经改变,TLB中缓存的旧进程的地址映射关系将不再有效。因此,为了确保新进程能够正确地访问其虚拟地址空间,通常需要刷新或清空TLB。这样,当新进程访问其虚拟地址时,CPU将重新从页表中查找对应的物理地址,并将其存储在TLB中以供后续快速访问。

简述,

  • 虚拟内存地址(逻辑地址)在进程切换时保持不变,但它们指向的物理内存位置会随着页表的改变而改变。
  • 页表在进程切换时需要更新,以反映新进程虚拟地址空间与物理内存的映射关系。
  • TLB中的缓存项在进程切换时需要被清空或刷新,以确保新进程能够正确地访问其虚拟地址空间。

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

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

相关文章

LeetCode54. 螺旋矩阵(2024秋季每日一题 21)

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix [[1,…

由于安全风险,安全领导者考虑禁止人工智能编码

安全团队与开发团队之间的紧张关系 83% 的安全领导者表示,他们的开发人员目前使用人工智能来生成代码,57% 的人表示这已成为一种常见做法。 然而,72% 的人认为他们别无选择,只能允许开发人员使用人工智能来保持竞争力&#xff0…

【Unity】对象池 - 未更新完

自定义泛型对象池 文章目录 自定义泛型对象池封装泛型类例子 使用Unity自带对象池 封装泛型类 public abstract class MyPool<T> : MonoBehaviour where T :Component {[SerializeField] protected T prefab; // 生成的预制体[SerializeField] protected int defaultNum…

Delphi5利用DLL实现窗体的重用

文章目录 效果图参考利用DLL实现窗体的重用步骤1 设计出理想窗体步骤2 编写一个用户输出的函数或过程&#xff0c;在其中对窗体进行创建使它实例化步骤3 对工程文件进行相应的修改以适应DLL格式的需要步骤4 编译工程文件生成DLL文件步骤5 在需要该窗体的其他应用程序中重用该窗…

8.sklearn-模型保存

文章目录 环境配置&#xff08;必看&#xff09;头文件引用1.保存模型代码工程运行结果生成文件 2.加载模型代码工程运行结果 环境配置&#xff08;必看&#xff09; Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章&#xff0c;本专栏深度学习相关的版本和配置&…

HTML基础和常用标签

“合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;1. HTML的基本结构解释&#xff1a; 2. 常见标签的介绍2.1 标题和文本2.2 链接和图片2.3 列表2.4 …

云安全 | AWS S3存储桶安全设计缺陷分析

什么是AWS S3&#xff1f; 默认情况下&#xff0c;Amazon S3 是安全的。创建后&#xff0c;只有资源所有者才能访问他们创建的 Amazon S3 资源。 Amazon S3 支持用户身份验证来控制对数据的访问。您可以使用存储桶策略和访问控制列表 (ACL)等访问控制机制来有选择地向用户和用…

solidwork直线画圆弧的操作

效果如下&#xff1a; 踩过好多坑了。 首先选择直线 先点一下这个点拉出来再回到这个点&#xff08;这个过程点一次就可以了&#xff09;&#xff0c;注意注意一定要这么做&#xff01;否则没有圆弧

prime1靶机渗透 (信息收集 内核提权)

靶机信息 vulnhub靶机 prime1 主机发现 -sn 是scan and no port hack 只用于主机发现 ┌──(kali㉿kali)-[~] └─$ sudo nmap -sn 192.168.50.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-09 02:25 EDT Nmap scan report for 192.168.50.1 Host is up …

web学习——day1

1.web标准 2.html和css 此时&#xff0c;学完这一部分&#xff0c;你web的具体的结构已经有了 但是呢&#xff0c;这还是太单调了&#xff0c;我们应该加点儿样式&#xff0c;这就该用到CSS了 CSS引入方式 样式1&#xff1a;颜色 样式2&#xff1a;哪怕对于同一类事物&#xf…

消息队列-Kafka(概念篇)

1 为什么需要消息队列&#xff1f; 消息队列是一种基于消息的异步通信机制&#xff0c;用于在分布式系统中不同组件或服务之间传递数据和通知。实际上可以将消息队列看作为存放消息的容器&#xff0c;参与消息传递的分别称为生产者&#xff08;发送消息&#xff09;和消费者&am…

【macOS】【zsh报错】zsh: command not found: python

【macOS】【zsh Error】zsh: command not found: python 本地已经安装了Python&#xff0c;且能在Pycharm中编译Python程序并运行。 但是&#xff0c;在macOS终端&#xff0c;运行Python&#xff0c;报错。 首先要确认你在macOS系统下&#xff0c;是否安装了Python。 如果安…

打不开Qtcreator(This application fail to start...........)

目录 今天突然打不开Qtcreator,报错如下 解决方案 1.检查环境变量配置(我就是通过这个解决好的) 2.如果也弹出跟我一样的AMD窗口,可以更新AMD驱动试试 3.重装qtcreator 4.检查 qtcreator下的bin\plugins\platforms是否缺少提示的相关.dll文件 总结 今天突然打不开Qtcreat…

马来西亚交通标志检测系统源码分享

马来西亚交通标志检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comp…

VSCode语法提示的配置

ctrlshiftP打开Command Palette,运行C/Cpp: Edit configurations...生成c_cpp_properties.json c_cpp_properties.json是什么&#xff1f; 这个文件主要是用于VSCode语法提示的配置&#xff0c;例如&#xff1a;指定 include 路径&#xff0c;问题匹配类型等。CtrlShiftP打开C…

nvm list available报错Could not retrieve https://nodejs.org/dist/index.json.

今天在查看nvm list available时出现如下错误&#xff1a; 首先找到nvm所在文件夹settings.txt 打开此文件后&#xff0c;加入两段代码&#xff0c;如果有就替换掉 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/ 再次运行…

Android轻量级RTSP服务使用场景分析和设计探讨

技术背景 好多开发者&#xff0c;对我们Android平台轻量级RTSP服务模块有些陌生&#xff0c;不知道这个模块具体适用于怎样的场景&#xff0c;有什么优缺点&#xff0c;实际上&#xff0c;我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景&#…

golang操作mysql利器-gorm

1、傻瓜示例 GORM通过将数据库表中的数据映射到面向对象的模型中&#xff0c;简化了数据库操作&#xff0c;使得开发者可以很方便的使用代码来操作数据库&#xff0c;而无需编写SQL语句。 目前有个mysql表&#xff1a;miniprogram_orders&#xff0c;其存储了所有用户对应的订…

PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题

PyCharm和VS Code 安装通义灵码&#xff0c;可本地安装包安装&#xff0c;解决插件安装不上问题 PyCharm、VS Code 安装通义灵码介绍主要应用场景支持编程语言安装指南JetBrains IDEs 中安装指南步骤 1&#xff1a;准备工作步骤 2&#xff1a;在 JetBrains IDEs 中安装通义灵码…

实验3 Hadoop集群运行环境搭建和使用

实验3 Hadoop集群运行环境搭建和使用 一、实验介绍 本节实验旨在引导学生通过实际操作搭建一个基本的Hadoop集群,并进行基本的使用验证。实验包括在集群节点上添加域名映射以实现节点间的相互识别,配置免密SSH登录以便无密码访问各节点,安装和配置JDK以满足Hadoop的运行需求…