1. 简述GDB常见的调试命令,什么是条件断点,多进程下如何调试。⭐⭐⭐⭐

  2. 说说进程调度算法有哪些?⭐⭐⭐⭐⭐

  3. 简述LRU算法及其实现方式。⭐⭐⭐⭐⭐

  4. 什么是页表,为什么要有?⭐⭐⭐⭐⭐

  5. 简述操作系统中的缺页中断。⭐⭐⭐⭐⭐

  6. 简述一下虚拟内存和物理内存,为什么要用虚拟内存,好处是什么?⭐⭐⭐⭐⭐

  7. 虚拟地址到物理地址怎么映射的?⭐⭐⭐⭐⭐

  8. 说说什么是死锁,产生的条件,如何解决?⭐⭐⭐⭐⭐

=========================================================================================================

  • 本专栏适合于C/C++已经入门的学生或人士,有一定的编程基础。
  • 本专栏适合于互联网C++软件开发、嵌入式软件求职的学生或人士。
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
  • 针对于非科班同学,建议学习本人专刊文章《蒋豆芽的秋招打怪之旅》,该专刊文章对每一个知识点进行了详细解析。
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

=========================================================================================================

  1. 简述GDB常见的调试命令,什么是条件断点,多进程下如何调试。⭐⭐⭐⭐

    GDB调试:gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能调试这个被编译的文件 gcc -g tesst.c -o test

    GDB命令格式:

    1. quit:退出gdb,结束调试

    2. list:查看程序源代码

      list 5,10:显示5到10行的代码

      list test.c:5, 10: 显示源文件5到10行的代码,在调试多个文件时使用

      list get_sum: 显示get_sum函数周围的代码

      list test,c get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用

    3. reverse-search:字符串用来从当前行向前查找第一个匹配的字符串

    4. run:程序开始执行

    5. help list/all:查看帮助信息

    6. break:设置断点

      break 7:在第七行设置断点

      break get_sum:以函数名设置断点

      break 行号或者函数名 if 条件:以条件表达式设置断点

    7. watch 条件表达式:条件表达式发生改变时程序就会停下来

    8. next:继续执行下一条语句 ,会把函数当作一条语句执行

    9. step:继续执行下一条语句,会跟踪进入函数,一次一条的执行函数内的代码

    条件断点:break if 条件 以条件表达式设置断点

    多进程下如何调试:用set follow-fork-mode child 调试子进程

    ​ 或者set follow-fork-mode parent 调试父进程

  2. 说说进程调度算法有哪些?⭐⭐⭐⭐⭐

    1. 先来先服务调度算法
    2. 短作业(进程)优先调度算法
    3. 高优先级优先调度算法
    4. 时间片轮转法
    5. 多级反馈队列调度算法
  3. 简述LRU算法及其实现方式。⭐⭐⭐⭐⭐

    1. LRU算法:LRU算法用于缓存淘汰。思路是将缓存中最近最少使用的对象删除掉

    2. 实现方式:利用链表和hashmap

      当需要插入新的数据项的时候,如果新数据项在链表中存在(一般称为命中),则把该节点移到链表头部,如果不存在,则新建一个节点,放到链表头部,若缓存满了,则把链表最后一个节点删除即可。

      在访问数据的时候,如果数据项在链表中存在,则把该节点移到链表头部,否则返回-1。这样一来在链表尾部的节点就是最近最久未访问的数据项。

    3. 代码实现

      我们给出C++的具体实现,代码一看就懂了。

      class LRUCache {  
          list<pair<int, int>> cache;//创建双向链表  
          unordered_map<int, list<pair<int, int>>::iterator> map;//创建哈希表  
          int cap;  
      public:  
          LRUCache(int capacity) {