
操作系统
Phoenix_FuliMa
这个作者很懒,什么都没留下…
展开
-
死锁详解
死锁的定义:多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们将无法再向前推进。产生死锁的原因:(1)竞争资源;(2)进程间推进顺序非法死锁的必要条件:(1) 互斥条件,一段时间内某资源只能由一个进程占用。(2) 请求和保持条件,请求资源时,不是放已占有的资源(3) 不剥夺条件,使用的资源不能被剥夺原创 2012-02-05 10:46:59 · 982 阅读 · 1 评论 -
系统抖动
在请求分页存储管理中,从主存中刚刚移走某一页面后,根据请求马上又调进该页,这种反复调进调出的现象,称为系统颠簸,也叫系统抖动。原因是调度的算法不科学。系统抖动大大降低系统效率。原创 2012-02-03 16:40:38 · 876 阅读 · 0 评论 -
LINUX中断机制
中断使得硬件得以发出通知给处理器,例如,当你敲击键盘的时候,键盘控制器会发送一个中断,通知操作系统有一个按键按下。中断的本质就是一种特殊的电信号,有硬件设备发向处理器。处理器接收到中断后,会马上向操作系统反映此信号的到来,然后由操作系统负责处理这个新来的数目。异常与中断不同,它在产生时必须考虑与处理器时钟同步,因此也称为同步中断。例如处理执行到忧郁编程失误而导致的错误指令时,必须靠内核来处理的原创 2012-02-04 22:59:33 · 1150 阅读 · 0 评论 -
信号量,互斥体,自旋锁
(1)除非Mutex的某个约束妨碍你的使用,否则相比信号量要优先使用Mutex,当你写新代码时,只有碰到特殊场合(一般是很底层的代码)才会使用信号量,因此建议首选mutex。(2)中断上下文中只能使用自旋锁,而在任务睡眠时只能使用互斥体。需求建议的加锁方式低开销加锁优先使用自旋锁短期锁定优先使用自旋锁长期加锁优先使用互斥体原创 2012-02-05 10:19:38 · 710 阅读 · 0 评论 -
各种数据类型的取值范围
速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == intlong转载 2012-03-06 16:46:57 · 50481 阅读 · 3 评论 -
大端模式与小端模式的区别小解
union{ int a; char x[2];}A; A.x[0]=10;A.x[1]=1; cout 那么运算结果在little-endian模式中的结果为266,那么原因是什么呢我个人的理解 由于是小端模式,那么char x[0]肯定是指向最低的地址的,那么我们假设低地原创 2012-03-11 14:01:51 · 1571 阅读 · 1 评论 -
获得文件存在的时间
windows/*return legal on true, false on illegal */bool LockFileStatusLegal(const char *filename){ assert(filename != NULL); int len = strlen(filename); char *tmpname = (char*) malloc(len+7);原创 2012-03-21 22:32:26 · 623 阅读 · 0 评论 -
利用创建临时文件实现共享存储锁
实现的是读写锁,很垃圾,但是也保留着,以后鄙视自己用。#include "bson_rw.h"//return true if count file exist,bool CheckReadLock(const char *filename){ assert(filename != NULL); int len = strlen(filename); char *tmpname原创 2012-03-21 22:35:07 · 766 阅读 · 0 评论 -
多进程文件共享
一种方法是使用文件锁,利用fcntl函数对于文件进行加锁解锁操作,以达到互斥访问的目的,但是在控制时需要注意进程之间的关系,在有多个进程和共享资源时,应注意死锁的避免。上一个最开始写的程序吧,简单,就是两个进程互斥访问文件。#include #include #include #include void readfile(FILE*fd);void writ转载 2012-04-12 23:16:58 · 1236 阅读 · 0 评论