• 内存管理
  • 进程管理
  • 网络

虚拟内存
什么是虚拟内存?
是一种对主存的抽象概念。
提供了三个重要的能力:

  1. 它将主存看成是一个存储在磁盘上地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存。
  2. 它为每个进程提供了一致的地址空间,从而简化了内存管理。
  3. 它保护了每个进程的地址空间不被其它进程破坏。

10.PCB都包含什么内容?
进程描述信息:
进程标识符:标识各个进程,每个进程都有一个并且唯一的标识符; 用户标识符:进程归属的用户,用户标识符主要为共享和保护服务;
进程控制和管理信息:
进程当前状态,如 new、ready、running、waiting 或 blocked 等;
进程优先级:进程抢占 CPU 时的优先级; 资源分配清单:
有关内存地址空间或虚拟地址空间的信息,所打开文件的列表和所使用的 I/O 设备 信息。
CPU 相关信息:
CPU 中各个寄存器的值,当进程被切换时,CPU 的状态信息都会被保存在相应的 PCB 中,以便进程
重新执行时,能从断点处继续执行。
11.进程的上下文切换到底是切换什么呢?
回答:进程是由内核管理和调度的,所以进程的切换只能发生在内核态。所以,进程的上下 文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器 等内核空间的资源。
12.产生死锁条件? 回答:
(1)互斥使用(资源独占):一个资源每次只能给一个进程使用
(2)占有且等待(请求和保持,部分分配):进程在申请新的资源的同时保持对原有资源的占有
(3)不可抢占(不可剥夺):资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占 有者自愿释放
(4)循环等待:存在一个进程等待队列 {P1 , P2 , … , Pn},其中P1等待P2占有的资源,P2等 待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路。
当死锁产生的时候一定会有这四个条件,有一个条件不成立都不会造成死锁。
追问1:如何避免死锁问题的发生? 回答:产生死锁的四个必要条件是:互斥条件、持有并等待条件、不可剥夺条件、环路等待
条件。
那么避免死锁问题就只需要破环其中一个条件就可以,最常用的并且可行的就是使用资源有 序分配法,来破环环路等待条件。



哈希冲突如何解决?

  1. 链地址法
  2. 再哈希法
  3. 建立公共溢出区
  4. 开放定址法

法1:对于相同的哈希值,使用链表进行连接。
缺点:链式哈希局限性也很明显,随着链表长度的增加,在查询这一位置上的数据的耗时就会增加,毕竟链表的查询的时间复杂度是 O(n)。
rehash和渐进式rehash
法2:用第二个哈希函数再哈希一次。

法3:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。

法4:当一个关键字和另一个关键字发生冲突时,使用某种探测技术在Hash表中形成一个探测序列,然后沿着这个探测序列依次查找下去,当碰到一个空的单元时,则插入其中。基本公式为:hash(key) = (hash(key)+di)mod TableSize。其中di为增量序列,TableSize为表长。根据di的不同我们又可以分为线性探测,平方(二次)探测,双散列探测。
1)线性探测
以增量序列 1,2,……,(TableSize -1)循环试探下一个存储地址,即di = i。如果table[index+di]为空则进行插入,反之试探下一个增量。但是线性探测也有弊端,就是会造成元素聚集现象,降低查找效率。具体例子如下

https://blog.csdn.net/feiying0canglang/article/details/122781574