Sep.5 2018 intel 笔试记录

1.GFM (Github Flavored Markdown) github上写 README.md文件的语言

2.salting password

3.linux chmod命令 rwx-  r = 4,w = 2, x = 1,- 代表0

4.cd - 等价于 cd ..即当前目录的上一级目录

5.gcc –E hello.c –o hello.i 
选项”-o”是指目标文件,”.i”文件为已经过预处理的C原始程序。gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果

6.能够装入内存任何位置的代码程序必须是可动态链接的

7.

#include<iostream>
 
using namespace std;
int main() {
	char st[20] = "hello\0\t";
	int arr[6];

	cout << strlen(st) <<" "<<sizeof(arr)<<" "<<sizeof(st)<<endl;
	system("pause");
}
//输出5 24 20
//strlen()遇到空字符'\0'结束

8.实现lower函数

#include<iostream>

using namespace std;

void lower(char* str) {
	if (str == NULL)
		return;
	for (int i = 0; str[i] != '\0'; ++i) {
		if (str[i] >= 'A' && str[i] <= 'Z')
			str[i] += 32;//32 = 'a' - 'A'
	}

	//return str;
}
int main() {
	
	char str[] = "HELLO";
	lower(str);
	for (auto s : str)
		cout << s << " ";
	 
	system("pause");
}

 9.程序中的逻辑地址/相对地址/虚地址与内存中物理地址/绝对地址/实际地址不一致,为了保证CPU执行程序指令时能正确访问存储单元,需要将用户程序中的逻辑地址转换为可由机器直接寻址的物理地址,这一过程称为地址映射/地址转换/地址重定位。

物理地址范围用十六进制格式书写如: 0x0000000~0x4000000,十进制表示为4  X 16^6 =2 X 2^24 = 2^26Byte = 64MB

1)静态重定位

在装入作业时,由装入程序把用户程序中的指令地址和数据地址全部转换成存储空间的绝对地址。这种地址转换工作是在程序执行前集中一次完成的,程序执行时就无需要再进行地址转换工作。

主要优点是无需增加硬件地址变换机构,主要缺点是要求给每个程序分配一片连续的存储空间。

2)动态重定位

动态重定位是靠硬件的地址转换机构来实现的,通常使用一个重定位寄存器。在存储管理为程序分配一个主存区域后,装入程序直接把程序和数据装入到分配的存储区中,然后把这个存储区的起始地址送入重定位寄存器中。在程序执行时,对于每一个存储器的访问,都要将相对地址转化成主存的绝对地址。

主要优点是使用更加灵活有效,不用给程序分配一大片连续的空间,能够给用户提供一个比主存大的多的地址空间。

地址转换结构
 

页表存放在内存中,属于进程的现场信息。
用途:1.记录进程的内存分配情况 2.实现进程运行时的动态重定位。
访问一个数据需访问内存 2 次 (页表一次,内存一次)。

一次是访问页表,确定所存取的数据或指令的物理地址,第二次才根据该地址存取数据或指令。显然,这种方法比通常执行指令的速度慢了一半。为此,在地址变换机构中增设了一个具有并行查找能力的高速缓冲存储器——快表,又称联想寄存器(TLB),用来存放当前访问的若干页表项,以加速地址变换的过程

具有快表的地址转换机制

地址变换例题 

例:若在一分页存储管理系统中,某作业的页表如下表所示,已知页面大小为 1024B,试将十进制逻辑地址 1011,2148,5012 转化为相应的物理地址。

设页号为 P,页内位移为 W,逻辑地址为 A,内存地址为 M,页面大小为 L,则
P = int ( A / L )
W = A mod L
对于逻辑地址 1011
P=int(1011/1024)=0
W=1011 mod 1024=1011
A=1011=(0,1011)
查页表第 0 页在第 2 块,所以物理地址为 M=1024*2+1011= 3059。

对于逻辑地址为 2148
P= int (2148/1024)=2
W=2148 mod 1024=100
A=2148=(2,100)
查页表第 2 页在第 1 块,所以物理地
址为 M=1024*1+100=1124。
对于逻辑地址 5012
P= int ( 5012/1024)=4
W=5012 mod 1024=916
页号超过页表长度,该逻辑地址非法。

例:存储器的用户空间共有 32 个页面,每页 1KB,内存16KB。假定某时刻系统为用户的第 0、1、2、3 页分别分配的物理块号为 5、10、4、7,试将逻辑地址 0A5C 和093C 变换为物理地址。

10.下面哪一个方法可以判断出一个有向图中是否有环(回路)(B)多选的话为(ABD)

A.深度优先遍历 B.拓扑排序 C.求最短路径 D.广度优先遍历

11.使用NAT,让内网主机可以使用内网IP与互联网主机通信。

12.

为什么要有CPU Cache

随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前计算机的内存主要是DRAM并且在访问速度上没有质的突破。因此,CPU的处理速度和内存的访问速度差距越来越大,甚至可以达到上万倍。这种情况下传统的CPU通过FSB直连内存的方式显然就会因为内存访问的等待,导致计算资源大量闲置,降低CPU整体吞吐量。同时又由于内存数据访问的热点集中性,在CPU和内存之间用较为快速而成本较高的SDRAM做一层缓存,就显得性价比极高了。

为什么要有多级CPU Cache

随着科技发展,热点数据的体积越来越大,单纯的增加一级缓存大小的性价比已经很低了。因此,就慢慢出现了在一级缓存(L1 Cache)和内存之间又增加一层访问速度和成本都介于两者之间的二级缓存(L2 Cache)。

什么是Cache Line 

Cache Line可以简单的理解为CPU Cache中的最小缓存单位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假设我们有一个512字节的一级缓存,那么按照64B的缓存单位大小来算,这个一级缓存所能存放的缓存个数就是512/64 = 8个。

猜你喜欢

转载自blog.csdn.net/weixin_40804971/article/details/82453667