摘要:
我们学习了操作系统,想必对生产消费者问题都不陌生。作为同步互斥问题的一个经典案例,生产消费者模型其实是解决实际问题的基础模型,解决很多的实际问题都会依赖于它。而此模型要解决最大的问题便是同步与互斥。而通常呢,在多进程的环境下我们一般是是用信号量来解决(可以戳这里看看);在多线程的情况,则会用到两个东 阅读全文
摘要:
线程 我们都知道一个程序的执行是由进程来完成的,而进程里真正执行代码却是由线程来完成,它是真正的执行流。通常将一个程序⾥里一个执行路线就叫做线程(thread)。对它更准确的定义是:线程是“一个进程内部的控制序列” 。而一切进程都至少有一个执行线程。 进程与线程关系: ①进程是资源竞争的基本单位 ② 阅读全文
摘要:
我们学习C++的时候,想必都会听说一个叫智能指针的东西,在初听这个词的时候,我们都难免不被“智能”两个字所吸引,感觉它会比较高级,让人有种忍不住想用一把的冲动。 但事实上,它可能并没有我们所想的那样“智能”、好用,它本质上其实就是一个对象,它去接管了原指针所管理的资源。但这里单单用一个对象就想有“智 阅读全文
摘要:
我们学习使用C++,肯定都要了解模板这个概念。就我自己的理解,模板其实就是为复用而生,模板就是实现代码复用机制的一种工具,它可以实现类型参数化,即把类型定义为参数;进而实现了真正的代码可重用性。模版可以分为两类:一个是函数模版,另外一个是类模版。 举个最简单的例子,当在编写好了一个进行int型交换的 阅读全文
摘要:
进程间通信的方式中,我们将多个进程共享同一块存储区来进行数据交换的方式称为共享内存通信。源于它直接将“内存”共享的特殊机制,它成为最快的一种IPC通信方式;然而它也不完美,它虽快,但是没有同步机制;通常在一个服务进程对共享存储区还未完成写操作之前,客户进程是不应当去取这些数据的,可没了同步,那可就乱 阅读全文
摘要:
信号及其处理 信号处理是Unix和LInux系统为了响应某些状况而产生的事件,通常内核产生信号,进程收到信号后采取相应的动作。 例如当我们想强制结束一个程序的时候,我们通常会给它发送一个信号,然后该进程会捕捉到信号,紧接着该进程执行一定操作后最终被终止掉。不仅仅如此,通常下面几种情况 ①键盘事件(c 阅读全文
摘要:
记得以前初次接触fork()函数的时候,一直被“printf”输出多少次的问题弄得比较晕乎。不过,“黄天不负留心人"。哈~ 终于在学习进程和进程创建fork相关知识后,总算是大致摸清了其中的来龙去脉。废话不多讲,下面来谈谈本人的一点小小积累 一个现有的进程可以调用fork函数创建一个新进程。原型如下 阅读全文
摘要:
共享内存是三个IPC机制中的一个。它允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在进行的进程之间传递数据的一种非常有效的方式。 大多数的共享内存的实现,都把由不同进程之间共享的内存安排为同一段物理内存. 首先我们都知道我们执行的每一个程序,它看到的内存其实都是虚拟内存,虚拟内存需要进行 阅读全文
摘要:
学习C++ 不可避免地会遇到虚函数的问题,下面几个问题在学习初期或多或少会存在一些疑惑,所以便将其总结了下来。 1.为什么静态成员函数、构造函数不能定义为虚函数? 因为静态成员函数是一个大家共享的一个资源,它其实就是一个“受类域限定符限制”的普通函数,没有this指针,不需要对象就可以调用;而虚函数 阅读全文
摘要:
进程间通信XSI IPC有3种:消息队列、共享内存、信号量。它们之间有很多相似之处,但也有各自的特殊的地方。消息队列作为其中比较简单的一种,它会有些什么东西呢,来一起探讨探讨。。 消息队列结构 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法. 每个数据块都被认为是一个类型,接受进程接收 阅读全文