操作系统基础知识
1
请问死锁的条件是什么?以及如何处理死锁问题?
解答:互斥条件(Mutual exclusion):
1、资源不能被共享,只能由一个进程使用。
2、请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
3、非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
4、循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
如何处理死锁问题:
1、忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像。
2、检测死锁并且恢复。
3、仔细地对资源进行动态分配,以避免死锁。
4、通过破除死锁四个必要条件之一,来防止死锁产生。
2
请阐述动态链接库与静态链接库的区别。
解答:静态链接库是.lib格式的文件,一般在工程的设置界面加入工程中,程序编译时会把lib文件的代码加入你的程序中因此会增加代码大小,你的程序一运行lib代码强制被装入你程序的运行空间,不能手动移除lib代码。
动态链接库是程序运行时动态装入内存的模块,格式*.dll,在程序运行时可以随意加载和移除,节省内存空间。
在大型的软件项目中一般要实现很多功能,如果把所有单独的功能写成一个个lib文件的话,程序运行的时候要占用很大的内存空间,导致运行缓慢;但是如果将功能写成dll文件,就可以在用到该功能的时候调用功能对应的dll文件,不用这个功能时将dll文件移除内存,这样可以节省内存空间。
3
请阐述进程与线程的区别。
解答:
①从概念上:
②从执行过程中来看:
③从逻辑角度来看(重要区别):
4
用户进程间通信主要哪几种方式?
解答:主要有以下6种:
1、管道:管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。写进程在管道的尾端写入数据,读进程在管道的道端读出数据。数据读出后将从管道中移走,其它读进程都不能再读到这些数据。管道提供了简单的流控制机制。进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。同样地,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。
2、信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其它进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
3、消息队列:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
4、信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
5、共享内存:共享内存就是映射一段能被其它进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对其它进程间通信方式运行效率低而专门设计的。它往往与其它通信机制(如信号量)配合使用,来实现进程间的同步和通信。
6、套接字:套接字也是一种进程间通信机制,与其它通信机制不同的是,它可用于不同机器间的进程通信。
作者:July
来源:《程序员编程艺术:面试和算法心得》
建议继续学习:
- Linux内存点滴 用户进程内存空间 (阅读:11422)
- Oracle MTS模式下 进程地址与会话信息 (阅读:10244)
- 深入理解Nginx之调试优化技巧 (阅读:6776)
- Linux上进程的表示以及入门 (阅读:6376)
- Linux下进程绑定多CPU运行 (阅读:5764)
- 读高性能Mysql-操作系统和硬件优化 (阅读:5437)
- websocket 通信协议 (阅读:5398)
- 分析进程内存分配情况,解决程序性能问题 (阅读:5351)
- 从load data引发的死锁说起 (阅读:5150)
- Linux下如何知道文件被那个进程写 (阅读:4994)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:智足者富 来源: 陈鹏个人博客
- 标签: 操作系统 死锁 线程 进程 通信 链接库
- 发布时间:2016-03-18 17:01:41
- [55] Oracle MTS模式下 进程地址与会话信
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [54] 如何拿下简短的域名
- [53] android 开发入门
- [52] Go Reflect 性能
- [52] 图书馆的世界纪录
- [49] 【社会化设计】自我(self)部分――欢迎区
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [38] 程序员技术练级攻略
- [32] 视觉调整-设计师 vs. 逻辑