1.如何减少换页错误?

A.进程倾向于占用CPU。

B.访问局部性(locality of reference)满足进程要求。

C.进程倾向于占用I/O。

D.使用基于最短剩余时间(shortest remaining time)的调度机制。

E.减少页大小。

解析:

  操作系统换页机制:

  在物理内存比虚拟内存小得多的系统中,操作系统必须提高物理内存的使用效率。操作系统将磁盘的一部分划出来,作为虚拟内存,由于内存的速度要比磁盘快得多,所以操作系统要按照某种换页机制将不需要的页面换到磁盘中,将需要的页面调到内存中,这就是换页。
当发生缺页中断时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调入的页面腾出空间。所以就存在一些页面置换算法,比如:最优页面置换算法、最近未使用页面置换算法、先进先出页面置换算法、第二次机会页面置换算法、时钟页面置换算法、最近最少使用页面置换算法等。

  换页错误也叫缺页错误,当一个程序试图访问到没有映射到内存中的某个地址时,就会出现缺页错误,这是操作系统就要去虚拟内存中加载这块内存页。减少换页错误的方法有:

  1.内存页框数:增加作业分得的内存块数。

  2.页面大小:页面划分越大,中断率越低。

  3.替换算法的优略。

  4.程序局部性好可以减少中断:局部性原理是一个经典的原理,分为时间局部性和空间局部性,意思是应用一旦访问了一个空间的数据,则这个空间中的相邻区域的内容也很可能被访问,一旦访问了某一段代码,则其周围的代码也很可能被访问。局部性原理的运用就是根据这个,把可能访问的数据和代码都加在到内存中,以后访问就不用加载了(因为主要的消耗在IO端)。这也是迪杰斯特拉提出的goto语句有害的依据,应为goto语句能打破局部性原理,造成计算机的延迟加剧。

  综上,正确答案:B

2.宏定义

问题:用一个宏定义FIND来求一个结构体struc里面某个变量相对struc的偏移量。

{
int a;
char b[];
double ccc;
}
则:
FIND(student, a); //等于0
FIND(student, b); //等于4 FIND(student, ccc); //24

解析:

#define FIND(struc, e) (size_t)&(((struc*)0)->e)

(struc*)0表示把常量0强制转化成struc*型指针所指向的地址; &((struc*)0 -> e)表示所取结构体指针(struc*)0的成员e的地址。

3.const关键字

const 放在函数后表示这个函数是常成员函数, 常成员函数是不能改变成员变量值的函数。

const是用来声明一个常量的,当你不想让一个值被改变时就用const, const int max && int const max 是没有区别的,都可以。 不涉及到指针const很好理解。 涉及到指针的情况:

int b=100;

const  int * a=&b  [1];

int   const   *a=&b;      [2]

int*   const   a=&b;      [3]

const   int*   const   a =&b;      [4]

  如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a   =   3   ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常量。

4.sizeof

    char *ss1 = "";
char ss2[] = "";
char ss3[] = "";
int ss4[];
char q1[] = "abc";
char q2[] = "a\n";
char *q3 = "a\n";
char *str1 = (char *)malloc();
void *str2 = (void *)malloc();
//ss1是一个字符串指针,大小定值4
cout<<sizeof(ss1)<<" "; //4
//ss2是一个字符数组。开始大小未定,数组大小由填充确定。10字符+'\0'共11个字符
cout<<sizeof(ss2)<<" ";//11
//ss3是一个字符数组,开始就分配了100长、
cout<<sizeof(ss3)<<" ";//
cout<<sizeof(ss4)<<" ";//
cout<<sizeof(q1)<<" ";//
cout<<sizeof(q2)<<" ";//
cout<<sizeof(q3)<<" ";//
cout<<sizeof(str1)<<" ";//
cout<<sizeof(str2)<<" ";//

涨知识---IV的更多相关文章

  1. 涨知识 --- VI

    1.空类所占空间大小 空类所占空间为1,单一继承的空类空间也为1,多继承的空类空间还是1.但是虚继承涉及虚表(虚指针),所以sizeof(C)的大小为4. 2.内联函数与宏定义 Ans:内联函数和普通 ...

  2. 涨知识Style

    1.用Access作为后台数据库支撑,书写一个C#写入记录的案例 示例1: using System.Data.OleDb; string sql = "insert into 表 (列1, ...

  3. Camel——涨知识了,骆驼命名法

    骆驼式命名法(Camel-Case)又称驼峰命名法,是电脑程式编写时的一套命名规则(惯例).正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字.程序员们为了自己的 ...

  4. 涨知识:equals 和 == 你真的了解吗?

    基本概念 ==是运算符,比较的是两个变量是否相等: equals()是Object方法,用于比较两个对象是否相等 看一下源码: public boolean equals(Object anObjec ...

  5. 涨知识,涨知识 :ThinkPHP框架下Where条件查询Mysql数据库某字段是否为空

    代码虐我千百遍,我对代码如初恋~ 问题: 查询某字段app_date数据是否为NULL,正常我们实现的办法是: $map['app_data'] = array('eq','null'); $data ...

  6. main方法原来只要放在public static类中就能跑,涨知识了

    接口中可以装在嵌套类对象. public interface ClassInterface { void howdy(); class Test implements ClassInterface { ...

  7. 你可能不知道的 10 条 SQL 技巧,涨知识了!

    转自:http://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&mid=2650076293&idx=1&sn=38f6acc759df ...

  8. 涨知识-VI 基于TCP/UDP的应用层协议

    基于TCP/UDP的应用层协议: 基于TCP: Telnet(Teletype over the Network, 网络电传),通过一个终端(terminal)登陆到网络 FTP(File Trans ...

  9. 涨知识---V

    1.内存对齐 在解释内存对齐的作用前,先来看下内存对齐的规则: 1).  对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是min(#pragma pack()指定的数, ...

随机推荐

  1. Cmake的介绍和使用 Cmake实践

    Cmake的介绍和使用 Cmake实践http://www.cppblog.com/Roger/archive/2011/11/17/160368.html

  2. 【Codeforces 1073D】Berland Fair

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 我们可以从左到右枚举一轮. 定义一个cost表示这一轮花费的钱数 如果cost+a[i]<=T那么就可以买它,并且买下它(模拟题目要求) ...

  3. HUD——1286 找新朋友

    思路: 裸的欧拉函数 代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<io ...

  4. FreeMarker与Servlet结合示例

    一.最原始示例 1.引入POM依赖 <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --> <de ...

  5. 递归删除目录下.svn文件

    原文:http://imysqldba.blog.51cto.com/1222376/1104901 ------------------------------------------------- ...

  6. 1.7-BGP①

    IGP:   包括RIP/EIGRP/OSPF/ISIS/ODR等动态路由协议   运行在同一个AS中,   通过Cost/Metirc来判断路由的优劣(越小越好):   AS:自治系统(小)   A ...

  7. FTPClientUtil FTPclient工具

    package com.ctl.util; //须要commons-net-3.0.1.jar import java.io.*; import java.net.*; import java.uti ...

  8. 【基础练习】【高速幂】codevs3285 转圈游戏题解

    转载请注明出处 来自CSDN用户ametake 题目来自NOIP2013TGD1T1 题目描写叙述 Description n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.依照顺时针方向给 n ...

  9. 线段树专题 POJ3468 A Simple Problem with Integers

    题意:n个点.m个操作.两种操作类型.C X Y K 表示区间[x,y]上每一个点值加k.Q X Y 求区间[x,y]的和 分析:线段树区间求和,裸模板 注意:结果会超int,要用long long ...

  10. LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)

    题目标签:HashMap 题目给了我们两个句子,让我们找出不常见单词,只出现过一次的单词就是不常见单词. 把A 和 B 里的word 都存入 map,记录它们出现的次数.之后遍历map,把只出现过一次 ...