16、缓冲区溢出?危害?
缓冲区为暂时放置输入或输出资料的内存。缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害:程序崩溃导致拒绝服务和跳转并且执行一段恶意代码。
17、分段、分页的区别?
18、物理地址、逻辑地址、虚拟内存的概念。
19、页面置换算法有哪些?
20、动态链接库和静态链接库的理解?
21、外中断和异常什么区别关系
22、一个程序从开始运行到结束的完整过程?
题目中的开始指的是手动 点击打开一个应用程序那一刻开始算起。
四个过程:预编译、编译、汇编、链接
(1)预编译:主要是处理源代码文件中的以“#”开头的预编译指令。
(2)编译:把预编译之后产生XXX.i或者XXX.ii文件进行一系列的词法分析、语法分析、语义分析及优化之后,生成相应的汇编代码文件。
(3)汇编:
将汇编代码转成机器可以执行的指令(机器码文件)。汇编器的汇编过程相对于编译器来说更加简单,没有复杂的语法,也没有语义,更不需要做到指令优化,只是根据汇编指令和机器指令的对照表一一翻译过来,汇编过程有汇编器as完成。
经过汇编之后,产生目标文件(与可执行文件格式几乎一样)xxx.o(linux下),xxx.obj(windows下)。
汇编这一块可以参照:汇编语言及学习(大学相关课程)以至更好的理解机器码的执行等,汇编有专门的语言,就叫汇编语言。
(4)链接:将不同的源文件产生的目标文件进行链接,从而形成一个可以执行的程序,链接分为静态链接和动态链接。
23、什么是用户态与内核态?
这是两种操作系统的运行状态。
内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,比如网卡、硬盘等。处于内核态的CPU可以从一个程序切换到另外一个程序,并且CPU不会发生抢占情况,一般处于特权级0的状态我们称为内核态。
用户态:处于用户态的CPU只能受限的访问内存,并且不允许被访问外围设备。用户态下的CPU不允许独占,也就是说CPU能够被其他程序获取。。
为什么要有用户态和内核态。
答:计算机有一些比较危险的操作,设置闹钟、内存清理等等,都需要特定的状态,也就是内核态下完成,如果随意的进行操作,那么很容易造成系统崩溃或者不可挽回的灾难。
24、用户态和内核态如何进行切换的?
25、进程终止的方式?
由于以下条件进行触发:
1、正常退出。
2、错误退出。
3、严重错误(非自愿)
4、被其他进程杀死(非自愿)
26、守护进程、僵尸进程、孤儿进程等?
27、如何避免僵尸进程
28、介绍几种典型的锁?
29、常见的内存分配错误
30、内存交换中被换出的进程保存在哪里?
保存在磁盘中,也就是外存中。
31、原子操作如何实现的?
32、抖动说一下?
也叫颠簸现象。