- 1、进程和线程的区别:
- 调度(进程是资源的最小单位,线程是程序执行的基本单位);切换(线程切换快);拥有资源(线程不拥有资源);系统开销
- 2、并发和并行有什么区别:
- 并发是一段时间内,多个任务都会被处理,但是某一时刻,只有一个任务在执行,单核处理器就能做到并发;并行是在同一时刻多个任务在同时执行,需要多核处理器进行完成。
- 3、进程和线程的切换流程:
- 进程需要首先切换页表然后切换内核栈和硬件;线程只需要第二步。
- 4、为什么虚拟地址空间切换比较费时:
- 进程都有自己的虚拟地址空间,把虚拟地址空间转换成物理地址空间需要查找页表,查页表是一个很慢的过程。,由此引入了快表机制,利用高速寄存器存储经常使用的页表项,但是切换虚拟地址空间之后,块表就失效了。
- 5、进程之间的通信:
- 管道通信是半双工通信并且只能在有亲缘关系的进程使用。
- 信号通信是一种复杂的通信,可以在任何时候发给某一进程,而无需知道进程的状态。
- SOCKET、共享内存区、消息队列
- 6、进程同步的方式、线程同步的方式:
- 临界区(通过对多线程的串行化来访问公共资源),互斥量,信号量(限制同一时刻访问该资源的最大线程数目);
- 7、线程的分类:
- 内核级线程(创建撤销都有操作系统内核控制),用户级线程(OS感受不到线程)
- 8、什么是临界区?
- 临界区是访问临界资源的代码;解决冲突:一次只允许一个进入,有限时间退出,若不能进入临界区,则放弃CPU
- 9、什么死锁?产生条件
- 两个或者两个以上进程由于相互制约而相互等待的现象。条件:互斥条件、不剥夺、请求和保持,循环等待
- 10、进程调度的策略:
- 先来先服务;短作业优先;时间片轮转;高响应比;优先级
- 11、进程有哪些状态?
- 运行、阻塞、创建、就绪、挂起、终止
- 12、什么是分页:
- 内存分页是OS将内存分成大小相同的页面,通过创建页表完成逻辑地址到物理地址之间的映射。提高了内存的利用率。
- 13、什么是分段:
- 为了满足用户的需求,将内存划分为大小不同的段,创建段表来完成......地址是二维的(段号和段内地址)便于共享和保护
- 14、分段和分页的区别
- 目的不同;一维二维;对程序员是否透明
- 15、什么是交换空间:
- 不常用的页交换出去
- 16、页面置换算法:
- 先进先出、最近最久未被使用、时钟算法
- 17、什么是缓冲区溢出
- 缓冲区的数据超过了其容量大小;可能覆盖正常数据,导致程序崩溃;或者执行恶意代码
- 18、什么是虚拟内存
- 为了解决内存容量问题,虚拟出来的逻辑内存。利用程序的局部性把进程的部分内容加载到内存中,甚至可以加载比物理内存大的进程。
- 19、硬链接和软连接
- 硬链接:当两个或者多个用户共享一个文件的时候,必须将两个或者多个文件连接到不同用户的目录中。文件目录只记录文件名以及指向相应索引节点的指针。软链接:创建一个LINK类型的新文件,包含着链接文件F的路径,根据文件的路径找到该文件实现共享,类似快捷方式。
- 20、中断处理的过程:
- 关中断、保护现场,保存断点、执行、恢复现场,开中断
- 21、中断和轮询的IO方式