—————————————————————————-图解系统——————————————————————————
一、复习计算机组成原理
1.CPU是如何执行程序的如a=1+2
答:
简单说,就是取指执行。
展开说,主要涉及内存、CPU中的各种寄存器、控制单元CU、算术逻辑单元ALU。
4.Cache的数据结构和读取过程/h2>
答:
Cache数据结构 = 缓存块Cache line索引 + 组标记Tag + 偏移量 + 有效位 + 数据块
索引:是用于找到Cache中哪一块缓存块Cache line
组标记:使得同一块Cache line可以对应内存中的不同内存块。
偏移量:在对应的Cache line中找到所需要的的数据片段,字。
有效位:标记对应的缓存块Cache line中的数据是否有效。
数据块:缓存块cache line
8.Cache中的伪共享是什么何避免/h2>
答:
多个线程同时读写同一个cache line中的不同变量。
解决方法是让这些变量不要分布在同一个cache line中,利用宏定义。
9.中断是什么中断和软中断/h2>
答:
4.MMU是如何做到这个映射关系的者是操作系统是如何做到的,因为MMU本质上也是由操作系统维护的。
答:
使用内存分段机制
首先明白,正在运行的程序(进程)由不同的逻辑分段组合,包括代码段、数据段、栈段、堆段等。不同的分段有不同的属性,显然将不同分段需要映射到物理内存的不同区域,如不能把代码段和数据段放在物理内存的同一块区域。因此,内存分段的思想由此而来。
虚拟地址 = 段选择子 + 段内偏移量
段选择子中的段 ,通过“段表”找到物理内存地址的基地址,然后加上段内偏移量,就能根据虚拟地址找到物理地址了。
段表存放在内存里,MMU负责将进程中的虚拟地址,通过段表来找到物理地址。因此MMU做的是管理工作,需要操作系统来维护。
个人理解:
内存分段说的是,对某个进程而言,程序由不同的分段组成。
而对多个进程同时可以在内存中运行这个问题,原因是映射关系,而不是分段。当然这个映射关系是由分段映射组成的,即代码分段映射、数据段映射、栈段映射一起组成了某个进程从虚拟内存地址到物理内存地址的映射。
5.不同进程通过映射关系由虚拟地址到物理内存地址,会产生什么问题/h2>
答:
产生内存碎片。
7.在6中解决外部内存碎片的方法有什么问题呢/h2>
答:
内存交换效率太低。
虽然用6中的方法,可以解决多进程同时运行,通过分段映射到物理内存地址所带来的内存碎片问题,但是由于每一次内存交换,需要将内存中的数据写入并读出硬盘,而硬盘的速度相对内存而言非常慢,因此内存交换效率很低。
8.如何才能高效解决6和7中的问题解决内存分段带来的内存碎片和内存交换效率低这两个问题/h2>
答:
使用内存分页机制。
首先需要明白,内存碎片和内存交换这两个问题是不可避免的。但是,如果我们让内存碎片产生的少一点,以及在内存交换时,写入读出到硬盘的数据少一点,就可以解决这两个问题了。这也是使用内存分页的原因。
9.内存分页机制具体是如何做到虚拟地址到物理地址的映射关系/h2>
答:
内存分段和内存分页解决了同样的问题,即多进程同时运行的问题,但是内存分页解决方法不会带来内存碎片和内存交换效率低的问题。
总体上说,内存分页机制类似于内存分段,只不过粒度更细。类似于段表,页表是内存分页机制的关键,其也是存放在内存中,对进程透明,直接由MMU进行管理,或者说操作系统管理。
10.内存分页机制有什么问题呢/h2>
答:
虽然内存分页机制解决了多进程可以同时运行在内存上,且不会产生内存碎片和内存交换效率低的问题。但是本质上这种机制牺牲了内存空间来换取这些性能。因为分页粒度很细,导致需要从内存中分去很大空间去存储页表,因此造成内存空间紧张。
(内存管理单元MMU属于内存的一部分,因此段表页表就直接存储在内存中)
13.段页式内存管理/h2>
答:
内存分段虽然有缺点,但是不会占据内存空间。内存分页虽然有很大优点,但是本身会使用较大内存,即便使用多级页表和cache解决这些问题,但是cache的资源也很重要,其还需要存储进程运行所需要的数据。因此使用段页式管理,也很重要。
总结
2)线程、线程进程比较、线程上下文切换、用户线程和内核线程
3)调度简单介绍
答:
进程调度算法:
内存页面置换算法:
置换算法的功能是,当出现缺常,需调存已满时,选择被置换的物理。
1)最简单的进程间通信方式,管道pipe/h3>
答:
匿名管道,实现存在父子关系的进程间的通信。
特点:
没有名字标识,匿名管道是特殊只存在于内存,没有存在于系统中,
通信的数据是式的流并且受限
通信的是单向的,数据只能在上流动,如果要双向通信,需要创建两个管道
匿名管道的周期随着进程创建随着进程终消失。
消息队列通信过程中,存在态与内核态之间的数据拷销,因为进程写据到内核中的消息队列时,会发态拷据到内核态的过程,同理另程读取内核中的消息数据时,会发内核态拷据到态的过程。
3)为了提高进程间通信速度,共享内存/h3>
答:
消息队列的读取和写过程,都会有发户态与内核态之间的消息拷程。这造成了不同进程之间通信速度慢,因此提出共享内存。
5)异常工作情况,用信 /h3>
答:
3.线程间如何同步/h2>
答:
多线程操作共享资源所带来的问题。
1)互斥和同步的概念/h3>
答:
1.死锁概念
2.死锁的四个必要条件
3.死锁的处理方法
4…锁的分类和应用场景
答:
基本锁:互斥锁和自旋锁
读写锁:读优先锁、写优先锁、公平读写锁
悲观锁和乐观锁
总结
2)目录和目录项
答:
2)文件系统分类
答:
4.文件的存储
答:
对于索引方式:
索引的实现是为每个创建「索引数据块」,存放的是指向数据块的指针列表,说就
像书的,要找哪个章节的内容,看查就可以。
另外,头需要包含指向「索引数据块」的指针,这样就可以通过头知道索引数据块的位置,再通
过索引数据块索引信息找到对应的数据块。
5.空闲空间管理
答:
的存储是针对已经被占数据块组织和管理,接下来的问题是,如果我要保存数据块,我应该放在硬盘上的哪个位置呢道需要将所有的块扫描,找个空的地便放吗br> 针对磁盘的空闲空间也是要引理的机制,接下来介绍常:空闲表法、空闲链表法、位图法
1)空闲表法
答:
3)位图法
答:
9.文件IO
答:
五、设备管理
键盘敲字,操作系统期间发什么/p>
1.设备控制器
答:
5.存储系统 I/O 软件分层
设备、设备控制器、驱动程序、通层,现在再结合系统原理,我们来看看Linux 存储系统的 I/O 软件分层。
可以把 Linux 存储系统的 I/O 由上到下可以分为三个层次,分别是系统层、通层、设备层。
他们整个的层次关系如下图:
七、Linux命令
Q & A
1.操作系统特点(基本特征)/h2>
答:
1)并发性:
是在计算机系统中同时存在多个程序,宏观上看,这些程序是同时向前推进的。 在单CPU上,这些并发执行的程序是交替在CPU上运行的。
程序并发性体现在两个方面: 用户程序与用户程序之间的并发执行。 用户程序与操作系统程序之间的并发。
2)共享性:
资源共享是操作系统程序和多个用户程序共用系统中的资源。
3) 随机性:
随机性是指操作系统的运行是在一个随机的环境中,一个设备可能在任何时间向处理机发出中断请求,系统无法知道运行着的程序会在什么时候做什么事情。
4)虚拟性 (virtual):
是指通过技术将一个物理实体变成若干个逻辑上的对应物。在操作系统中虚拟的实现主要是通过分时的使用方法。
显然,如果n是某一个物理设备所对应的虚拟逻辑设备数,则虚拟设备的速度必然是物理设备速度的1/n。
5)异步性:即不确定性。
同一程序和数据的多次运行可能得到不同的结果;
程序的运行时间、运行顺序也具有不确定性;
外部输入的请求、运行故障发生的时间难以预测。这些都是不确定性的表现。
2.什么是进程么是线程程和线程的区别/h2>
3.进程状态转换图/h2>
4.进程的创建进程和父进程子进程间的通信/h2>
5.死锁是什么要条件何解决/h2>
6.进程间通信有几种,他们之间的区别是什么/h2>
4.进程的创建进程和父进程子进程间的通信/h2>
5.死锁是什么要条件何解决/h2>
6.进程间通信有几种,他们之间的区别是什么/h2>
6.进程间通信有几种,他们之间的区别是什么/h2>
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!