面试之操作系统
介绍一些操作系统的笔试面试经历。
1.线程与进程的关系:
进程有独立存储,线程共享进程地址空间。
线程是进程的执行单元
一个程序至少有一个进程,一个进程至少有一个线程。
二者均可并发执行
2.线程同步的方式
多线程通过特定的东西来控制线程之间的执行顺序(同步)。临界区,互斥量,信号量,事件四种方式。
临界区:共享资源,只允许单个进程,单个线程访问,打印机;
互斥量(Mutex):只能用于一个资源的互斥访问。解锁0,0可使用,1不可使用。
信号量(Semaphore):多个资源访问。(>0系统中可用资源数目)(<0因请求该资源而阻塞的数目) 进线程 -,释放+。
事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
3.线程间通信方式
锁机制:互斥锁,条件变量,读写锁
信号量机制:包括无名线程信号量和命名线程信号量
信号机制:类似进程间的信号处理
4.线程死锁条件
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个资源因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成以种头尾相接的循环等待资源关系。
5.进程间通信
管道(只能用于具有亲缘关系的进程间通信),有名管道,信号量,信号,消息队列,共享内存,套接字。
6.预编译作用
把一部分代码(.h),预先编译好(.pch)放在文件夹里,提高编译速度,不必编译不需要改变的代码。
预处理:生成二进制代码的过程。
define、typedef、const区别
7.SendMessage 和 PostMessage区别
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理,马上返回,异步
SendMessage要等到受到消息处理的返回码后才继续,消息处理后返回,同步
8、内存问题:
内存泄露,越界访问,野指针,空指针,多线程共享变量没有用valotile修饰
9、冯诺依曼和哈佛结构
冯诺依曼
指令存储器和数据存储器合并在一起
存储器,控制器,运算器,输入输出设备。
哈佛
指令存储和数据存储分开
两个独立的存储模块
独立地址总线和独立数据总线
浙公网安备 33010602011771号