您的位置:首页 > 编程语言

笔试总结——编程基础篇【持续更新】

2016-07-25 22:01 344 查看
1.

34^17%6 = ((34%6)^17)%6 = 4^17%6 = 4
可以先对34%6求余,得到4  然后是4^17%6 求余, 得到4

2.哪些特性导致代码膨胀:

宏定义


模板


内联函数


这种导致代码膨胀的特性一般是出现在编译阶段,而非运行阶段。而宏定义,模板和内联函数都是出现在程序的编译阶段,都会实现代码替换(宏定义,内联函数)或者生成特定的代码(内联函数)。

2.

OPT:Optimal page replacement algorithm最佳页面替换算法。

LRU:Least Recently Used 近期最少使用算法。
MFU:Most Frequently Used最常使用页面置换算法
LFU:Least Frequently Used最近最不常使用算法。
3

操作系统采用分页式存储管理(PAGING)方法,要求

每个进程拥有一张页表,但只要执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中

4(没看懂)

首先介绍下动态重定位装入方式:
其运行环境:多道程序环境;
程序在运行过程中在内存的位置可能变动,装入程序把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正执行时才进行。说白了,动态重定位装入方式,是在程序执行时由CPU硬件进行地址重定位。

特点:程序在内存中可以浮动,不要求整个应用程序占用连续控件;为使地址转换不影响指令的执行速度,需要一个重定位寄存器的支持。

可重定位装入方式:
运行环境:多道程序环境
程序目标模块的起始地址通常是从0开始的,程序中的其他地址也都是相对于起始地址计算的;根据内存的当前情况,将装入模块装入到内幕才能的适当位子;地址变换通常是装入时一次完成的,以后不再改变,所以是静态重定位。

特点:无需硬件支持;程序不能在内存中移动;要求程序的存储空间是连续的,不能把程序放在若干不连续区域

绝对装入方式:
环境:使用单批道程序环境
绝对装入需要实现知道程序驻留在内存的位置,程序按照装入模块中的地址,将程序和数据装入内存。所以程序中的逻辑地址与实际地址完全相同,当操作系统吧程序装入内存时,不需要对程序和数据进行地址修改;

特点:是CPU执行目标代码块,由于内存大小的限制,能装入内存冰法执行的进程数大大减少。

5  创建进程所必需的步骤

1,申请空白PCB(进程控制块);
2,为新进程分派资源;
3,初始化PCB;
4,将新进程插入就绪队列;

6
页表项(页描述子)中各个位的作用:
1. 页号
2. 块号(页框号)
3. 中断位: 用于判断该页是不是在内存中,如果是0,表示该页不在内存中,会引起一个缺页中断。
4. 保护位( 存取控制位): 用于指出该页允许什么类型的访问,如果用一位来标识的话,1表示只读,0表示读写
5. 修改位(脏位): 用于页面的换出,如果某个页面被修改过(即为脏),在淘汰该页面时,必须将其返回写回磁盘,反之,可以直接丢弃该页面
6. 访问位:不管是读还是写(read or set),系统都会设置该页面的访问位。他的值会帮助操作系统在发生缺页中断时,选择要被淘汰的页,即用于页面置换
7. 高速缓存禁止位(辅存地址位):对于映射到设备寄存器而不是常规内存的页面来说,这个位很重要;
 例如: 操作系统正在循环等待着某个I/O设备对他的指令做出响应,保证硬件是不断的从设备中读取数据而不是访问一个旧的被高速缓存的副本是非常重要的,
通过这一位就可以禁止高速缓存。

7将分区管理发展为分页管理的主要目的是

提高系统的吞吐量
提高内存的利用率


8 线程函数

调用线程的sleep()方法,可以使比其低的优先线程运行;

调用线程的yeild()方法,只让给同优先级运行;

具有相同优先级的多个线程的调度可能是分时的,也可能是线程逐个运行,由具体JVM而定

分时调度模型是让所有线程轮流使用CPU
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: