字符设备(character devices)
:另一类 I/O 设备是字符设备
。字符设备以字符
为单位发送或接收一个字符流,而不考虑任何块结构。字符设备是不可寻址的,也没有任何寻道操作。常见的字符设备有 打印机、网络设备、鼠标、以及大多数与磁盘不同的设备 。
设备控制器(device controller)
: 设备控制器是处理 CPU 传入信号和传出信号的系统。设备通过插头和插座连接到计算机,并且插座连接到设备控制器。ECC(Error-Correcting Code)
: 指能够实现错误检查和纠正错误技术的内存。I/O port
: 也被称为输入/输出端口,它是由软件用来与计算机上的硬件进行通信的内存地址。内存映射I/O(memory mapped I/O,MMIO)
: 内存映射的 I/O 使用相同的地址空间来寻址内存和 I/O 设备,也就是说,内存映射I/O 设备共享同一内存地址。端口映射I/O(Port-mapped I/O ,PMIO)
:在 PMIO中,内存和I/O设备有各自的地址空间。 端口映射I/O通常使用一种特殊的CPU指令,专门执行I/O操作。DMA (Direct Memory Access)
: 直接内存访问,它是计算机系统的一项功能,它允许某些硬件系统能够独立于 CPU 访问内存。如果没有 DMA,当 CPU 执行输入/输出指令时,它通常在读取或写入操作的整个过程中都被完全占用,因此无法执行其他工作。使用 DMA 后,CPU 首先启动传输信号,然后在进行传输时执行其他操作,最后在完成操作后从 DMA 控制器(DMAC)接收中断。完成执行。
周期窃取(cycle stealing)
:许多总线能够以两种模式操作: 每次一字模式和块模式 。一些 DMA 控制器也能够使用这两种方式进行操作。在前一个模式中,DMA 控制器请求传送一个字并得到这个字。如果 CPU 想要使用总线,它必须进行等待。设备可能会偷偷进入并且从 CPU 偷走一个总线周期,从而轻微的延迟 CPU。它类似于直接内存访问(DMA),允许I / O控制器在无需 CPU 干预的情况下读取或写入RAM。突发模式(burst mode)
: 指的是设备在不进行单独事务中重复传输每个数据所需的所有步骤的情况下,重复传输数据的情况。中断向量表(interrupt vector table)
: 用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址称为中断向量。 中断向量表是中断向量的集合,中断向量是中断处理程序的地址。精确中断(precise interrupt)
:精确中断是一种能够使机器处于良好状态下的中断,它具有如下特征
- PC (程序计数器)保存在一个已知的地方
- PC 所指向的指令之前所有的指令已经完全执行
- PC 所指向的指令之后所有的指令都没有执行
- PC 所指向的指令的执行状态是已知的
非精确中断(imprecise interrupt)
:不满足以上要求的中断,指令的执行时序和完成度具有不确定性,而且恢复起来也非常麻烦。设备独立性(device independence)
: 我们编写访问任何设备的应用程序,不用事先指定特定的设备 。比如你编写了一个能够从设备读入文件的应用程序,那么这个应用程序可以从硬盘、DVD 或者 USB 进行读入,不必再为每个设备定制应用程序。这其实就体现了设备独立性的概念。
UNC(Uniform Naming Convention)
:UNC 是统一命名约定或统一命名约定的缩写,是用于命名和访问网络资源(例如网络驱动器,打印机或服务器)的标准。 例如,在 MS-DOS 和 Microsoft Windows 中,用户可以通过键入或映射到类似于以下示例的共享名来访问共享资源。
\\computer\path
然而,在 UNIX 和 Linux 中,你会像如下这么写
//computer/path
挂载(mounting)
:挂载是指操作系统会让存储在硬盘、CD-ROM 等资源设备上的目录和文件,通过文件系统能够让用户访问的过程。错误处理(Error handling)
: 错误处理是指对软件应用程序中存在的错误情况的响应和恢复过程。同步阻塞(synchronous)
: 同步是阻塞式的,CPU 必须等待同步的处理结果。异步响应(asynchronous)
: 异步是由中断驱动的,CPU 不用等待每个操作的处理结果继而执行其他操作缓冲区(buffering)
: 缓冲区是内存的临时存储区域,它的出现是为了加快内存的访问速度而设计的。对于经常访问的数据和指令来说,CPU 应该访问的是缓冲区而非内存Programmed input–output,PIO
:它指的是在 CPU 和外围设备(例如网络适配器或 ATA 存储设备)之间传输数据的一种方法。轮询(polling)
: 轮询是指通过客户端程序主动通过对每个设备进行访问来获得同步状态的过程。
忙等(busy waiting)
:当一个进程正处在某临界区内,任何试图进入其临界区的进程都必须等待,陷入忙等状态。连续测试一个变量直到某个值出现为止,称为忙等。可重入(reentrant)
: 如果一段程序或者代码在任意时刻被中断后由操作系统调用其他程序或者代码,这段代码调用子程序并能够正确运行,这种现象就称为可重入。也就是说当该子程序正在运行时,执行线程可以再次进入并执行它,仍然获得符合设计时预期的结果。主设备编号(major device number)、副设备编号(minor device number)
: 所有设备都有一个主,副号码。 主号码是更大,更通用的类别(例如硬盘,输入/输出设备等),而次号码则更具体(即告诉设备连接到哪条总线)。多重缓冲区(double buffering)
: 它指的是使用多个缓冲区来保存数据块,每个缓冲区都保留数据块的一部分,读取的时候通过读取多个缓冲区的数据进而拼凑成一个完整的数据。环形缓冲区(circular buffer)
: 它指的是首尾相连的缓冲区,常用来实现数据缓冲流。
假脱机(Spooling)
:假脱机是多程序的一种特殊形式,目的是在不同设备之间复制数据。 在现代系统中,通常用于计算机应用程序和慢速外围设备(例如打印机)之间的中介。守护进程(Daemon)
: 在计算机中,守护程序是作为后台进程运行的计算机程序,而不是在交互式用户的直接控制下运行的程序。逻辑块寻址(logical block addressing, LBA)
:逻辑块寻址是一种通用方案,用于指定存储在计算机存储设备上的数据块的位置。RAID
:全称是 Redundant Array of Inexpensive Disks ,廉价磁盘或驱动器的冗余阵列,它是一种数据存储虚拟化的技术,将多个物理磁盘驱动器组件组合成一个或多个逻辑单元,以实现数据冗余,改善性能。
MBR(Master Boot Record)
:主引导记录(MBR)是任何硬盘或软盘的第一扇区中的信息,用于标识操作系统的放置方式和位置,以便可以将其加载到计算机的主存储器或随机存取存储器中。
FCFS (First-Come, First-Served)
: 先进先出的调度算法,也就是说,首先到达 CPU 的进程首先进行服务。SSF (Shortest Seek First)
最短路径优先算法,这是对先进先出算法的改进,这种算法因为减少了总的磁臂运动,从而缩短了平均响应时间。稳定存储(stable storage)
: 它是计算机存储技术的一种分类,该技术可确保任何给定的写操作都具有原子性。时钟(Clocks)
:也被称为 timers。通常,时钟是指调节所有计算机功能的时序和速度的微芯片。芯片中是一个晶体,当通电时,晶体会以特定的频率振动。 任何一台计算机能够执行的最短时间是一个时钟或时钟芯片的一次振动。QR Code
: 二维码的一种,它的全称是快速响应矩阵图码,能够快速响应。一般应用于手机读码操作,国内火车票上的二维码就是 QR 码
显卡(Video card)
,是个人电脑最基本组成部分之一,用途是将计算机系统所需要的显示信息进行转换驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要组件,是人机对话
的重要设备之一。
GDI (Graphics Device Interface)
:图形接口,是微软视窗系统提供的应用程序接口,也是其用来表征图形对象、将图形对象传送给诸如显示器、打印机之类输出设备的核心组件。设备上下文(device context)
:设备上下文是 Windows 数据结构,其中包含有关设备(例如显示器或打印机)的图形属性的信息。 所有绘图调用都是通过设备上下文对象进行的,该对象封装了用于绘制线条,形状和文本的 Windows API。 设备上下文可用于绘制到屏幕,打印机或图元文件。位图(bitmap)
:在计算机中,位图是从某个域(例如,整数范围)到位的映射。也称为位数组或位图索引。电阻式触摸屏(Resistive touchscreens)
:电阻式触摸屏基于施加到屏幕上的压力来工作。 电阻屏由许多层组成。 当按下屏幕时,外部的后面板将被推到下一层,下一层会感觉到施加了压力并记录了输入。 电阻式触摸屏用途广泛,可以用手指,指甲,手写笔或任何其他物体进行操作。
电容式触摸屏(capacitive touchscreen)
:电容式触摸屏通过感应物体(通常是指尖上的皮肤)的导电特性来工作。 手机或智能手机上的电容屏通常具有玻璃表面,并且不依赖压力。 当涉及到手势(如滑动和捏合)时,它比电阻式屏幕更具响应性。 电容式触摸屏只能用手指触摸,而不能用普通的手写笔,手套或大多数其他物体来响应。
死锁(deadlock)
:死锁常用于并发情况下,死锁
是一种状态,死锁中的每个成员都在等待另一个成员(包括其自身)采取行动。
相信你一定看过这个图
可抢占资源(preemptable resource)
:可以从拥有它的进程中抢占而并不会产生任何副作用。不可抢占资源(nonpreemptable resource)
:与可抢占资源相反,如果资源被抢占后,会导致进程或任务出错。系统检查点(system checkpointed)
:系统检查点是操作系统(OS)的可启动实例。检查点是计算机在特定时间点的快照。两阶段加锁(two-phase locking, 2PL)
:经常用于数据库的并发控制,以保证可串行化
这种方法使用数据库锁在两个阶段:
- 扩张阶段:不断上锁,没有锁被释放
- 收缩阶段:锁被陆续释放,没有新的加锁
活锁(Livelock)
:活锁类似于死锁,不同之处在于,活锁中仅涉及进程的状态彼此之间不断变化,没有进展。举一个现实世界的例子,当两个人在狭窄的走廊里相遇时,就会发生活锁,每个人都试图通过移动到一边让对方通过而礼貌,但最终却没有任何进展就左右摇摆,因为他们总是同时移动相同的方式。饥饿(starvation)
:在死锁或者活锁的状态中,在任何时刻都可能请求资源,虽然一些调度策略能够决定一些进程在某一时刻获得资源,但是有一些进程永远无法获得资源。永远无法获得资源的进程很容易产生饥饿
。沙盒(sandboxing)
:沙盒是一种软件管理策略,可将应用程序与关键系统资源和其他程序隔离。它提供了一层额外的安全保护,可防止恶意软件或有害应用程序对你的系统造成负面影响。VMM (Virtual Machine Monitor)
:也被称为 hypervisor,在同一个物理机器上创建出来多态虚拟机器的假象。
虚拟化技术(virtualization)
: 是一种资源管理技术,将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),进行抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。云(cloud)
:云是目前虚拟机最重要、最时髦的玩法。解释器(interpreter)
: 解释器是一种程序,能够把编程语言一行一行解释运行。每次运行程序时都要先转成另一种语言再运行,因此解释器的程序运行速度比较缓慢。它不会一次把整个程序翻译出来,而是每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。半虚拟化(paravirtualization)
: 半虚拟化的目的不是呈现出一个和底层硬件一摸一样的虚拟机,而是提供一个软件接口,软件接口与硬件接口相似但又不完全一样。全虚拟化(full virtualization)
:全虚拟化是硬件虚拟化的一种,允许未经修改的客操作系统隔离运行。对于全虚拟化,硬件特征会被映射到虚拟机上,这些特征包括完整的指令集、I/O操作、中断和内存管理等。客户操作系统(guest operating system)
: 客户操作系统是安装在计算机上操作系统之后的操作系统,客户操作系统既可以是分区系统的一部分,也可以是虚拟机设置的一部分。客户操作系统为设备提供了备用操作系统。主机操作系统(host operating system)
: 主机操作系统是计算机系统的硬盘驱动器上安装的主要操作系统。 在大多数情况下,只有一个主机操作系统。块设备(block devices)
:块设备是一个能存储固定大小块
信息的设备,它支持 以固定大小的块,扇区或群集读取和(可选)写入数据 。每个块都有自己的物理地址
。通常块的大小在 512 - 65536 之间。所有传输的信息都会以连续
的块为单位。块设备的基本特征是每个块都较为对立,能够独立的进行读写。常见的块设备有 硬盘、蓝光光盘、USB 盘
文章参考:
https://www.techopedia.com/definition/15763/host-operating-system
https://en.wikibooks.org/wiki/Operating_System_Design/Concurrency/Livelock
https://www.studytonight.com/operating-system/first-come-first-serve
https://blog.csdn.net/liuchuo/article/details/51986201
https://docs.openstack.org/ceilometer/6.1.5/architecture.html
https://www.techopedia.com/definition/16626/error-handling
https://simple.wikipedia.org/wiki/Device_controller
https://blog.csdn.net/zhangjg_blog/article/details/20380971
https://www.techopedia.com/definition/4763/address-space
https://en.wikipedia.org/wiki/Direct_Media_Interface
https://en.wikipedia.org/wiki/Bus_(computing)
https://en.wikipedia.org/wiki/Interrupt_vector_table
https://en.wikipedia.org/wiki/Busy_waiting
https://en.wikipedia.org/wiki/Context_switch
https://en.wikipedia.org/wiki/Read-only_memory
https://www.techopedia.com/definition/6306/cache-hit
Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。
它的内容包括:
- 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
- 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
- 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
- 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
- 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
- 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
- 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
- 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw
目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:
想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询
同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。