操作系统面试题总结

来源:互联网 发布:tensorflow 对象关系 编辑:程序博客网 时间:2024/06/03 19:37

一、线程和进程的区别
(1)进程是程序运行的一个实例,进程是操作系统进行分配资源的基本单位。线程是进程的一个实体,是CPU调度和分派的基本单位。同一进程内的多个线程共享该进程的资源,但线程不拥有资源,只是使用它们。创建或撤销进程时,系统要为进程分配或回收资源,如:内存空间、i/o设备等,因此操作系统所付出的开销要显著大于创建或撤销线程时的开销。
参考:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
二、线程同步的方式
互斥量:采用互斥对象机制,只有拥有互斥对象 的线程才拥有访问工控资源的权限。
信号量:允许同一时刻多个线程访问同一个资源,但是,需要控制同一时间内访问资源的最大线程数量。
事件(信号):通过通知操作系统的方式保持多线程同步。
临界区:拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止。
三、进程间通信方式
管道、系统IPC、信号量、消息队列、信号、共享内存、套接字
套接字:用于不同机器间的进程通信
共享内存:映射一段能被其他进程访问的内存,由一个进程创建,其他进程可以访问。
消息队列:消息的链表,存在内核中饼由消息队列标识符标识
信号量:信号量是一个计数器,可以控制多个进程对共享资源的访问,作为一种锁机制。主要用于进程间以及同一进程内不同线程之间的同步手段。
四、进程间通信和线程间通信的区别
因为Windows运行的实体是线程,狭义上的进程间的通信是指分属于不同进程之间的通讯,而单个进程之间的线程同步问题可归并为一直特殊的进程通信,它要用到内核支持的系统调用来保持线程同步。
参考:http://blog.csdn.net/yufaw/article/details/7409596
五、缓冲区溢出、危害、原因、措施
缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害:程序崩溃,导致拒绝服务;跳转且执行一段恶意代码
原因:

原创粉丝点击