Java基础题:操作系统相关知识

Ⅰ:
Java基础题:操作系统相关知识
BigEndian字节序高内存地址低
LittleEndian字节序高内存地址高
BigEndian指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。
LittleEndian是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

Ⅱ:
Java基础题:操作系统相关知识
首先, 速度最快的当然是缓存, 接着消耗时间最少的是内存, 磁盘寻道时间, 然后是硬盘连续读取时间

一个个来分析, L2缓存是level2缓存是二级缓存的意思, 通过缓存直接与cpu进行数据交互, 这个是最快最直接的。这部分内容涉及到cpu缓存, 分为一级缓存,二级缓存,三级缓存。

一级缓存(L1 Cache)就是指cpu第一层级的高速缓存, 主要担当的工作是缓存指令和缓存数据。 一级缓存容量与结构对cpu的影响十分大, 但是由于它的结构比较复杂,又考虑到成本等因素, 一般来说,cpu的一级缓存较小, 通常cpu的一级缓存也就做到256kb左右的水平。

二级缓存(L2 Cache66)就是指cpu的第二层级的高速缓存, 而二级缓存的容量会直接影响到cpu的性能, 二级缓存的容量越大越好。 例如intel的第八代i7-8700处理器, 共有六个核心数量, 而每个核心都拥有256kb的二级缓存, 属于各核心独享, 这样二级缓存总数就达到了1.5mb。

三级缓存(L3 Cache)就是指cpu的第三层级的高速缓存, 其作用是进一步降低内存的延迟, 同时提升海量数据量计算时的性能。 和一级缓存,二级缓存不同的是, 三级缓存是核心共享的, 能够将容量做的很大。

第二个,内存读取时间, 当通过缓存寻找数据时发现数据在缓存中不存在,这时需要通过到内存中去寻找, 但是内存的传输速度就没有缓存这么快了, 所以, 内存读取数据的时间消耗要大于缓存。

第三个从硬盘连续读取1kb,这个意思就是读取硬盘数据, 其中读取硬盘数据的时间消耗主要是由寻道时间数据传输时间, 还有旋转时间三部分时间组成, 所以磁盘寻道时间一定小于总的磁盘读取时间。

Ⅲ:
Java基础题:操作系统相关知识

由于内存的大小是固定的,所以无论页面是大是小,可以进入内存的大小也是固定的,最多不超过内存的大小。实际上,分页的大小并不影响进入内存作业的数量。从宏观上看,进入内存的页面内容是没有变化的。 所以分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数关系不大。选C

链接:牛客网

Ⅳ:
Java基础题:操作系统相关知识
运行状态的程序都以进程的形式处于内存中;寄存器一般由于容量太小,因为只用来暂存指度令、数据和地址,相当于内存和cpu之间的桥梁,数据和指令都预先从内存中取出放至寄存器,随后cpu可以直接从寄存器中取值运行。

Ⅴ:
Java基础题:操作系统相关知识

由于缓冲区(buffer)的存在,CPU 和设备不必等对方完全处理完,所以提高了并行程度。为了缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/O设备的 并行性,在现代操作系统中,几乎所有的I/O设备在与处理机交换数据时都用了缓冲区,并提供获得和释放缓冲区的手段。总结来说,缓冲区技术用到了缓冲区, 而缓冲区的引入是为了缓和CPU和I/O设备的不匹配,减少对CPU的中断频率,提高CPU和I/O设备的并行性

Ⅵ:
Java基础题:操作系统相关知识
进程申请读磁盘操作的时候,因为要等待I\O完成,将自身阻塞,进入阻塞态。当I\O完成之后,从阻塞进入就绪态

Ⅶ:
Java基础题:操作系统相关知识
OPT(Optimal page replacement algorithm):最佳页面替换算法。

LRU(Least Recently Used ):近期最少使用算法。如果数据最近被访问过,那么将来被访问的几率也更高。LRU会首先淘汰最长时间未被使用的页面

LFU(Least Frequently Used):最近最不常使用算法。如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。LRU淘汰一定时期内被访问次数最少的页面

MFU(Most Frequently Used):最常使用页面置换算法

FIFO (Fist in first out) :先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉。

博客链接:LRU和LFU的区别

Ⅷ:
Java基础题:操作系统相关知识
缺页处理需要调入新页面,所以肯定要修改页表项分配页框,所以Ⅰ、Ⅲ可能发生,同时内存没有页面,需要从外存读入,会发生磁盘I/O。

Ⅸ: 减少换页错误
Java基础题:操作系统相关知识
换页错误,一般称为缺页异常。每个进程都有一段自己的独立的虚拟内存空间(在32位的linux系统中为3G),但是这些虚拟内存区域并不会在创建的时候就和物理页框挂钩,由于程序的局部性原理,程序在一定时间内所访问的内存往往是有限的,因此内核只会在进程确确实实需要访问物理内存时才会将相应的虚拟内存区域与物理内存进行关联(为相应的地址分配页表项,并将页表项映射到物理内存)当一个程序试图访问没有映射到物理内存的地方时,就会出现缺页异常,这时操作系统要做的是要将这段虚拟内存映射到物理内存上,使其真正“可用”。

减少换页错误的方法,即降低缺页中断率:
1、内存页框数。增加作业分得的内存块数。
2、页面大小。页面划分越大,中断率越低。
3、页面零星换算法。替换算法的优劣影响缺页中断次数
4、程序局部性。程序局部性好可减少缺页中断。

程序的局部性原理是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。

Ⅹ:存储保护
Java基础题:操作系统相关知识
存 储 保护,是指给外置的存储设备加个保护程序,写不进去数据,也删不掉数据。当多个用户共享主存时,为使系统能正常工作,应防止由于一个用户程序出错而破坏其它用户的程序和系统软件,还要防止一个用户程序不合法的访问不是分给它的主存区域。为此,系统提供存储保护。 通常采用的方法是:存储区域保护访问方式保护

十一:进程执行方式
Java基础题:操作系统相关知识
先来看几个概念:
1.强占式:现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进程将被迫放弃处理机 ,系统将处理机立刻分配给新到达的进程。
2. 静态优先权 :在创建进程时确定的,优先权在进程的整个运行期间保持不变。
3. 动态优先权 :在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能,该优先权会随着等待的时间增长而增长。

然后再看选项:
非强占式静态优先权法 – 优先权不会变,假如有一个最低优先权的线程在等待,那么等优先级高的进程执行完就可以轮到该进程执行了。
强占式静态优先权法 – 强占式,说明高优先权的可以抢夺CPU的执行权。假如一个低优先权的执行,当一个高优先权的在就绪状态,那么CPU就会执行高优先权的那个进程,低优先权的就会处于等待,假如一直有高优先权的进程在就绪,那么就会一直等待。
时间片轮转调度算法 – 执行的时间片完毕后,被执行的进程会放到等待队列的队尾,一次循环,既然是循环的话,那就有机会轮到。
非强占式动态优先权法 – 虽然是非强占式的,但是如果一个进程一直在等待,那么他的优先权就会动态增长,就可以得到CPU的执行权。

十二:信号量
Java基础题:操作系统相关知识
信号量的数值表示某一资源的可用的数量,而信号量为负数时: 若可用的数量为-A(A>0),表示“缺少的资源数目”为A,而每个进程需要1个资源,故共有A个进程在等待。

十三:基址寻址方式

Java基础题:操作系统相关知识
基址寻址方式,主要用来解决程序的动态定位问题。

  • 基址寻址方式:基址寄存器内容加上形式地址(位移量)
  • 变址寻址方式:变址寄存器内容加上形式地址(位移量)

十四:线程,进程调度
Java基础题:操作系统相关知识
答案:B
【进程调度】 如果系统只有用户态线程,则线程对操作系统是不可见的, 操作系统只能调度进程; 如果系统中有内核态线程,则操作系统可以按线程进行调度。

十五:PCB进程控制块
Java基础题:操作系统相关知识
进程控制块(PCB) 是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的运动变化过程。同时,系统可以利用PCB来控制和管理进程,所以说,PCB(进程控制块)是系统感知进程存在的唯一标志

十六:系统抖动
Java基础题:操作系统相关知识
页面的频繁更换,导致整个系统效率急剧下降,这个现象称为内存抖动。抖动一般是内存分配算法不好,内存太小引或者程序的算法不佳引起的页面频繁从内存调入调出。

发生系统“抖动”的根本原因是:
同时在系统中运行的进程太多 ,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺页调入内 存。太多的话, 最直接有效的方法当然是撤销部分进程

十七:文件系统中的块
Java基础题:操作系统相关知识
文件是按块存储的,如果块大小设置的大一些,读取的时候一次性读取的就更多,磁盘吞吐量提升,但是文件可能不能占满整个块,导致利用率下降。

十八:进程最基本的特征
Java基础题:操作系统相关知识
1、并发性:指多个进程实体同存于内存中,且在一段时间内同时运行。并发性是进程的重要特征,同时也成为操作系统的重要特征。

2、动态性:进程的实质是进程实体的一次执行过程,因此,动态性是进程最基本的特征。

3、独立性:进程实体是一个独立运行、独立分配资源和独立接受调度的基本单位。

4、异步性:指进程按各自独立的、不可预知的速度向前推进,或者说实体按异步方式运行。

十九:Cache
Java基础题:操作系统相关知识

  • Cache出现的原因就是为了解决CPU与主存之间的速度匹配问题,CPU速度>Cache速度>主存速度.
  • 程序访问的局部性原理是一个程序在运行的某一时段,它访问的代码或数据大部分是几种在集中在某一块区域的。
  • Cache将主存中的页面缓存供cpu高速存取,它和主存的功能是完全不同的。Cache的地址空间和主存的地址空间是映射关系,Cache和主存不统一编址,Cache的地址空间也不是主存的一部分。

二十:
Java基础题:操作系统相关知识
A: 页的划分是操作系统做的。
B: 系统进入死锁必须满足4个条件:互斥、循环并等待、不剥夺、请求与保持;所有的进程都挂起,并不表示这些进程间有资源调用和循环等待的关系,有些进程定时器结束后可能自动唤醒。
D: 有静态优先级调度

二十一:程序调优
Java基础题:操作系统相关知识
答案:B

A 缓存命中率提高,减少访问存储器的开销
B 多线程并不能使IO操作并行化。可以通过异步读写、合并读写、计算代替读写等方式优化
C 可以减少连接和断开数据库的开销
D 可以减少运行时对程序栈进行操作的开销
E 减少远程调用的次数