1、请用普通的互斥锁编程实现一个读写锁
参考答案:
下面是可参考的伪代码:
count_mutex = mutex_init();
write_mutex = mutex_init();
read_count = 0;
void read_lock {
lock(count_mutex);
read_count++;
if (read_count == 1) {
lock(write_mutex);
}
unlock(count_mutex);
}
void read_unlock {
lock(count_mutex);
read_count--;
if (read_count == 0) {
unlock(write_mutex);
}
unlock(count_mutex);
}
void write_lock {
lock(write_mutex);
}
void write_unlock {
unlock(write_mutex);
}
2、简述Linux进程内存空间分为哪几个段?作用分别是什么?
3、使用mmap读写文件为什么比普通读写函数要快?
参考答案:
mmap函数:可以将文件映射到内存中的一段区域,普通函数读写文件:用户空间buffer内核空间buffer磁盘;mmap映射之后:用户空间buffer进程内存空间,省掉了拷贝到内核空间的时间
4、Linux中如何实现Signal?
参考答案:
基于软中断,不同Signal对应不同中断处理函数
本文涵盖了四个操作系统和Linux编程的常见面试问题:如何用互斥锁实现读写锁、Linux进程内存空间的划分及作用、mmap读写文件的优势,以及Linux中的Signal实现原理。解答详细解释了mmap在性能上的提升以及Signal基于软中断的工作机制。
3万+

被折叠的 条评论
为什么被折叠?



