操作系统
liujianfei526
这个作者很懒,什么都没留下…
展开
-
死锁原因及解决、避免办法
死锁的条件 互斥条件(Mutual exclusion) :资源不能被共享,只能由一个进程使用。 请求与保持条件(Hold and wait):进程已获得了一些资源,但因请求其它资源被阻塞时,对已获得的资源保持不放。 不可抢占条件(No pre-emption) :有些系统资源是不可抢占的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使转载 2016-07-17 16:59:42 · 7155 阅读 · 0 评论 -
读写进程同步问题
std::atomic readers;std::mutex write;// One write, no reads.void write_fun(){ write.lock();// We lock the resource while(readers > 0){}// We wait till everyone finishes read. // DO WR转载 2016-07-12 19:11:12 · 846 阅读 · 0 评论 -
哲学家c++11代码
//-----------------------------------------------------------------------------// File: Program.h//// Desc: Dining Philosophers sample.// // Demonstrates how to use Monitor object (lock) to转载 2016-07-12 19:00:01 · 529 阅读 · 0 评论 -
哲学家进餐问题的算法与实现
(1) 在什么情况下5 个哲学家全部吃不上饭? 考虑两种实现的方式,如下: A. 算法描述: void philosopher(int i) /*i:哲学家编号,从0 到4*/ { while (TRUE) { think( ); /*哲学家正在思考*/ take_fork(i); /*取左侧的筷子*/ take_fork((i+1) % N); /*取左侧筷子;%为取模运算*/转载 2016-07-12 18:35:31 · 10518 阅读 · 0 评论 -
操作系统总结
操作系统复习 2014 08 261. 名词解释程序状态字PSW:计算机中一个重要的硬件寄存器 管程:代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个操作系统的资源管理模块,我们称之为管程。 SPOOLing (即外部设备联机并行操作),即Simult转载 2016-05-28 21:36:43 · 949 阅读 · 0 评论 -
操作系统面试题
1、线程与进程的区别联系2、进程通信方式有哪些?3、同步的方式有哪些?4、ThreadLocal与其它同步机制的比较5、进程死锁的条件 第一题:(1)线程是进程的一个实体,一个进程可以拥有多个线程,多个线程也可以并发执行。一个没有线程的进程也可以看做是单线程的,同样线程也经常被看做是一种轻量级的进程。并且进程可以不依赖于线程而单独存在,而线程转载 2016-05-28 22:12:18 · 286 阅读 · 0 评论 -
操作系统常见面试题总结
1、什么是进程(Process)和线程(Thread)?有何区别? 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的转载 2016-05-28 22:15:20 · 918 阅读 · 0 评论 -
那些不能遗忘的知识点回顾——操作系统系列(笔试面试高频题)
有那么一些零碎的小知识点,偶尔很迷惑,偶尔被忽略,偶然却发现它们很重要,也是各大笔试和面试高频出现考点。这段时间正好在温习这些,就整理在这里,一起学习一起提高!后面还会继续补充。——前言1.进程和线程 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间转载 2016-06-09 16:00:15 · 424 阅读 · 0 评论 -
select、poll、epoll之间的区别总结[整理]
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用转载 2016-01-27 22:25:13 · 338 阅读 · 0 评论 -
Linux多线程编程
线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。可以把线程看成是操作系统分配CPU时间的基本单元。一个进程可以拥有一个至多个线程。它线程在进程内部共享地址空间、打开的文件描述符等资源。同时线程也有其私有的数据信息,包括:线程号、寄存器(程序计数器和堆栈指针)、堆栈、信号掩码、优先级、线程私有存储空间。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统转载 2016-01-28 17:35:28 · 274 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消转载 2016-01-28 19:16:31 · 368 阅读 · 0 评论 -
Linux进程间通信——使用信号量
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码转载 2016-01-28 19:28:53 · 376 阅读 · 0 评论 -
多线程查找文件
主要是多线程的互斥 文件 的查找多线程互斥的框架[cpp] view plain copy print?//线程函数 UINT FinderEntry(LPVOID lpParam) { //CRapidFinder通过参数传递进来 CRapidFinder* pFinder = (CRapi转载 2017-08-16 08:19:41 · 1426 阅读 · 0 评论