嵌入式Linux工程师笔试记录 -- 2020.8.5 (五) (汇编代码还没看懂)

安凯微电子软件工程师入职笔试试题(Linux)

一、基础题

1.Linux 内核分为____、、____等四个子系统。

进程管理、进程间通信、内存管理、虚拟文件、网络接口

2.在windows环境下共享Linux中的用户目录的一个工具是?

Samba服务器

3. Linux系统下的软链接和硬链接的异同

相同点:

  1. 都能通过它找到另一个文件。
  2. 都是通过ln命令创建。

不同点:

  1. 软链接跟源文件是不同文件,就像windows的快捷方式,保存源文件的路径。硬链接与源文件是同个文件,只是文件名可以不同。
  2. 不可以对目录进行硬链接,可以对目录软链接。
  3. 软链接可以跨文件系统链接,硬链接不行。

4. Linux内核的多线程同步机制有哪些?

互斥锁、读写锁、条件变量、信号量等

5.Linux指令实现当前目录下查找文件以lib开头的文件。

find ./ lib*

6.简述DMA操作的认识和理解。

参考: 百度百科

一个设备接口试图通过总线直接向另一个设备发送数据(一般是大批量的数据),它会先向CPU发送DMA请求信号。外设通过DMA的一种专门接口电路――DMA控制器(DMAC),向CPU提出接管总线控制权的总线请求,CPU收到该信号后,在当前的总线周期结束后,会按DMA信号的优先级和提出DMA请求的先后顺序响应DMA信号。CPU对某个设备接口响应DMA请求时,会让出总线控制权。于是在DMA控制器的管理下,外设和存储器直接进行数据交换,而不需CPU干预。数据传送完毕后,设备接口会向CPU发送DMA结束信号,交还总线控制权。

实现DMA传送的基本操作如下:

  1. 外设通过DMA控制器向CPU发出DMA请求;
  2. CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器;
  3. 由DMA控制器发送存储器地址,并决定传送数据块的长度;
  4. 执行DMA传送;
  5. DMA操作结束,把总线控制权交还CPU。

7.写出Linux指令实现在当前目录中递归查找包含字符串“string”的文件,但不搜索“.svn”目录

grep --exclude-dir .svn -r “string” ./*

二、语言题

1.编写strcpy函数

char * strcpy( char * dst , char * src ){
	assert( dst != NULL && src != NULL );
	char * tmp = dst;
	while( (*dst++ = *src++) != '\0');
	return tmp;
}

三、内核相关题目

1. 阅读以下linux内核从系统调用返回到用户态的arm汇编代码。简要描述这种情况下,linux从内核态返回到用户态所做的工作。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 实现list_entry宏代码

在这里插入图片描述

#define  list_entry(ptr,type,member)  ( (type*) ( ptr - &( ((type *)0)->member ) ) )

3. 简述Linux MMU的工作原理,或者简述Linux内核虚拟地址转换成物理地址的过程(可以按照32位体系结构来描述)

(基于个人所学及理解)

首先讲一下一些概念:
MMU:主要作用是将虚拟地址转化为物理地址,当然还有在硬件上内存访问权限控制的功能。
页和页框:Linux的4g虚拟地址按照4k~16k分页处理,一般是4k,每一份称为页。页映射到同样大小的物理地址,称为页框。
页表项和页表:页与页框的映射关系,称为页表项(PTE),而页表项的集合,称为页表。
快表TLB:分页可能会生成很多页表项,并且页表是存在物理地址空间中的,当mmu收到一个虚拟地址时,如果直接在页表中查找,频繁对片外存储器读写很浪费时间资源(物理地址空间属于片外),所以出现了快表TLB,这是mmu专用的片上cache,将使用到的或者经常用的页表项存到TLB中,加快速度。

所以整个流程就是CPU运行到一个虚拟地址时,将该虚拟地址发送到MMU,MMU将其分为页和页内offset;首先在TLB中匹配页,如果找到对应页框,则补上偏移直接访问该物理地址,否则访问物理内存中的页表,找到对应的物理地址进行访问,同时保存到TLB中。
如果页表中发现该虚拟页没有对应的页框?这时候会发生一个缺页中断,交给OS处理,如果还有可以被映射的页框就直接分配,如果物理页框已经分配完了,那就会将某块较少使用的页框写回外部存储器,再重新把这个虚拟页映射到该页框中。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值