操作系统
心向暖
去奋斗,去追求,去发现,但不要放弃。
展开
-
进程间通信
Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)Linux线程间通信:互斥量(mutex),信号量,条件变量Windows进程间通信:管道、消息队列、共享内存、信号量(semaphore)、套接字(socket)Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(...原创 2019-03-31 10:37:30 · 96 阅读 · 0 评论 -
缺页
一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,5, 1,3,会发生多少缺页?1 缺页 , , 1 2 缺页 ,1,2 3 缺页 123 5 缺页 235 1 缺页 351 3 不缺页 351 ...原创 2019-03-31 10:56:40 · 1492 阅读 · 0 评论 -
存储管理之页式、段式、段页式存储
首先看一下“基本的存储分配方式”种类:1.离散分配方式的出现 由于连续分配方式会形成许多内存碎片,虽可通过“紧凑”功能将碎片合并,但会付出很大开销。(比如当malloc申请的空间小于128KB时调用brk()就会产生内存碎片http://blog.csdn.net/rock_joker/article/details/66975981)于是出现...转载 2019-03-27 21:45:39 · 1279 阅读 · 1 评论 -
死锁
当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁。死锁是指多个进程在运行过程中,因为争夺资源而造成的一种僵局,如果没有外力推进,处于僵局中的进程就无法继续执行。死锁原因:1. 竞争资源:请求同一有限资源的进程数多于可用资源数。2. 进程推进顺序非法:进程执行中,请求和释放资源顺序不合理,如资源等待链。死锁产生的必要条...原创 2019-03-27 22:02:01 · 142 阅读 · 0 评论 -
自旋锁和互斥锁区别
互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒。在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( u...原创 2019-05-09 22:01:01 · 10414 阅读 · 0 评论 -
各种锁
重量级锁获取不到锁,马上进入阻塞状态。自旋锁线程从运行态到阻塞态,需要保存运行状态、上下文、从用户态转换到内核态。愿意等待一段时间的锁。自适应自旋锁自己会判断线程循环等待的次数,如果一个线程最近拿到过这个锁,认为他接下来一段时间再次拿到锁的概率很大,所以设置多一点循环次数。轻量级锁轻量级锁认为当你执行时,恰好有人也想执行的情况很少。加锁需要操作系统...原创 2019-05-23 21:17:20 · 129 阅读 · 0 评论