回忆版
1
- 什么是操作系统
- 什么是文件描述符
- 为什么说linux的管道是一种进程间通信的机制?
- 为什么要避免数据竞争?
- 什么是设备驱动程序
2
- 简述mmap的作用(无须写出定义)
- 有人说1号进程是/usr/bin/systemd, 有人认为是/usr/bin/init, 怎么判断1号进程到底是哪一个二进制文件?
- 除了用户定义的全局变量,libc维护了哪些全局变量?
- System V ABI规定进程的初始栈中有一些auxiliary vector entries. 根据你对操作系统的理解,可以有哪些辅助数据,又有什么作用?
3
readelf -a filename如下
rela.text:
记不得offset R_X86_64_PC32 x-8
记不得offset R_X86_64_PLT32 foo-4
- 这个文件是什么ELF文件? R_X86_64_PC32和R_X86_64_PLT32各自是什么意思?
- 写出main三参数的函数。解释每个参数的含义.
- 动态链接的a.out执行到main函数之间的过程?
- LD_PRELOAD可以指定预先加载的动态链接库,你可以想到一个用它做什么有意思的应用?
4 并发编程
有字符串a,b,并行地做Longest Common Sequence
void Tlcs(int i, int j){
if(i==0 || j==0) return;
dp[i][j] = max3(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]+(a[i]==b[j]))
}
int main(){
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
spawn(Tlcs,i,j);
}
}
join();
printf("%d\n",dp[n][m]);
return 0;
}
添加代码,使得可以正确同步. 允许添加初始化代码
5
- 什么是RAID技术? 有什么应用
- 如果要对一个文件进行保存,并希望在系统崩溃(断电等)之后数据仍然正确。进行的系统调用的顺序应该是怎样的?
- Linux的inode存放着用户的uid,如果硬盘被偷走,则可以读取所有文件。如何保护高度机密的文件?
- readdir函数可以遍历一个目录,在面对有上百万个文件的目录时,会遇到性能瓶颈。你觉得该如何添加新的API?