操作系统
multicoreware
这个作者很懒,什么都没留下…
展开
-
死锁问题
死锁的定义:两个或两个以上进程在执行过程中,因争夺资源而产生一种循环等待现象。 死锁出现的四个必要条件: 1)互斥,资源不能共享。2)不可抢占。3)占有并等待 4)环路等待 解决死锁几个方法: 1)无视它 2)阻止系统进入死锁状态 3)允许出现死锁状态,检测并恢复 4)破坏死锁出现的四种必要条件。 银行家算法就是避免系统进入死锁状态的一种算法原创 2012-09-21 09:32:41 · 275 阅读 · 0 评论 -
页面置换算法
1. 最优算法 希望将以后时间段内最少使用的页面换出。这是理想而几乎不可实现的。 2. FIFO 先进先出算法,算法不能反映出页面的使用状态,实际使用效率很差。 3. 最近最少使用算法 每一个页面都有一个变量t,每个时钟周期不断更新增加,如果在某时钟周期内使用则减少或者置零。当要换出时,找出t最大的页面。原创 2012-09-21 21:53:02 · 209 阅读 · 0 评论 -
互斥量和临界区
这两个功能相似,下面说三个主要区别。 1. 适用范围不同,互斥量可在进程和线程中使用,临界区很显然只能在线程间使用。 2. 实现方式不同,互斥量是内核实现,临界区是用户态实现。 3. Linux下没有临界区原创 2012-09-21 22:11:43 · 770 阅读 · 0 评论 -
线程同步
同步的意思就是排队,使得多个线程按照顺序访问资源。我们使用的方法有以下几种: 1)临界区 2)互斥量 3)信号量 4)事件 下面说java 线程同步的方法。 java中每一个对象都有一个内置的锁,当程序运行到synchronized方法或者代码块的时候,该对象的锁才起作用;当锁起作用时,其他想使用锁的线程会进入阻塞状态。需要注意的是静态同步方法使用是类锁,跟对象锁是不一样原创 2012-09-21 09:29:42 · 224 阅读 · 0 评论 -
线程和进程
标准的定义是:进程是线程的容器,一个进程可于一个或者多个线程,它是系统分配资源的基本单位;同一个进程下,线程共享地址空降、已经打开的文件、信号处理函数、报警信号和其他,线程自己只保留程序计数器和栈。 但是很遗憾的,这个只是教科书上的定义,实际情况是每个操作系统实现的操作系统特性不同,实现的方法也不同。就linux2.4内核版本来说,线程实质是一个轻量级进程,每个线程在内核态中对应于一个轻量级原创 2012-09-21 09:30:47 · 236 阅读 · 0 评论