文章分类 - 操作系统
摘要:原文地址这两天经常有同事在问我spinlock和semaphore的相关问题,什么时候该用spinlock?什么时候该用semaphore?什么时候该用spinlock_irq?什么时候该用spinlock_irqsave?的确,对于初涉内核开发的人员来说,spinlock和semaphore的应用是一个比较大的疑问。这里,我来谈谈我对这两个概念的想法吧。Spinlock的实现机制可以描述如下:CPU首先将内存总线lock住,然后检测内存中的lock数据,如果数据为真,那么表示资源被人占用,无法获取。然后CPU会自璇检测该lock数据,直到数据不为真之后,lock该数据返回。在Linux中sp
阅读全文
摘要:原文地址硬链接(hard link)和符号连接(symbolic link)的区别:通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。一、链接文件链接文件有两种方式,符号链接和硬链接。1、符号链接文件符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,也可以链接不同文件系统的文件。甚至可以链接不存在的文件,这就产生一般称为“断裂”的问题(现象),还可以不断的循环链接自己。用ln -s 命令可以生成一个符号链接,如下所示:#ln -s source_file softlink_file在对符
阅读全文
摘要:原文地址Copy On Write(写时复制)是在编程中比较常见的一个技术,面试中也会偶尔出现(好像Java中就经常有字符串写时复制的笔试题),今天在看《More Effective C++》的引用计数时就讲到了Copy On Write——写时复制。下面简单介绍下Copy On Write(写时复制),我们假设STL中的string支持写时复制(只是假设,具体未经考证,这里以Mircosoft Visual Studio 6.0为例,如果有兴趣,可以自己翻阅源码)Copy On Write(写时复制)的原理是什么?有一定经验的程序员应该都知道Copy On Write(写时复制)使用了“引用
阅读全文
摘要:原文地址COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢? 在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间,如果不是因为exec,
阅读全文
摘要:原文地址DefinitionDemand paging is a process which involves the copying and relocation of data from a secondary storage system to random access memory (RAM), a main memory storage system. Demand paging copies and relocates data to facilitate the fastest access to that data. Once the data is relocated, d
阅读全文
摘要:原文地址Page DefinitionPages are fixed units of computer memory allocated by the computer for storing and processing information. Pages are easier to place in computer memory since they are always the same size.Segment DefinitionSegments are divisions of computer memory of variable size that temporarily
阅读全文
摘要:转载自维基百科银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。目录[隐藏]1背景2处理程序[1]3安全和不安全的状态4伪代码(pseudo-code)[2]5参考文献5.1引用5.2书籍背景[编辑]在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量
阅读全文
摘要:原文地址Spinlock 與 Mutex 都是很常用的同步機制,今天來看看這兩者在 Windows 上有什麼樣的不同!(推薦 MSDN 上的Locks, Deadlocks, and Synchronization,寫得很不錯!)Spinlock我們可以簡單的從中文翻譯「自旋鎖」看出一點端倪,基本上就是個 Busy waiting 的動作,得一直等待指定的鎖被釋放之後,才可以繼續進行下一步動作。概念上非常簡單,實作上就不是如此了。例如:如果鎖還沒被釋放這個執行緒就被 swap-out 而進入 sleep 狀態怎麼辦?兩個執行緒同時要求取鎖的同步該怎麼處理?Mutex事實上 Mutex 是一種抽
阅读全文
摘要:转载自维基百科哲学家就餐问题(英语:Dining philosophers problem)是在计算机科学中的一个经典问题,用来演示在并行计算中多线程同步(Synchronization)时产生的问题。在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼·霍尔重新表述为哲学家就餐问题。这个问题可以用来解释死锁和资源耗尽。目录[隐藏]1问题描述2解法2.1服务生解法2.2资源分级解法2.3Chandy/Misra解法3延伸阅读问题描述[编辑]哲学家就餐问题可以这样表述,假设有五位哲学家围坐在
阅读全文
摘要:最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对一个共享资源的单独访问而设计的。3、信号量:为控制一个具有有限数量用户资源而设计。4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界
阅读全文

浙公网安备 33010602011771号