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对应不同中断处理函数