操作系统和linux编程常考题目

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进程内存空间分为哪几个段?作用分别是什么?

操作系统和linux编程常考题目_第1张图片

3、使用mmap读写文件为什么比普通读写函数要快?

参考答案:
mmap函数:可以将文件映射到内存中的一段区域,普通函数读写文件:用户空间buffer内核空间buffer磁盘;mmap映射之后:用户空间buffer进程内存空间,省掉了拷贝到内核空间的时间

4、Linux中如何实现Signal?

参考答案:
基于软中断,不同Signal对应不同中断处理函数

九章算法

你可能感兴趣的:(笔记面试中的基础知识)