![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
学仙只为看看天
这个作者很懒,什么都没留下…
展开
-
进程同步问题(1)——生产者,消费者 & 读者,写者问题
今天看操作系统的时候,在进程管理一章又看到了经典的进程同步问题。进程同步问题确实比较复杂,因为要保证进程推进顺序合法,可能会使用到多个信号量,而且很多p,v操作的顺序也不 可颠倒。好在进程同步有几个经典问题,如果搞清楚了,对其他问题也可以举一反三。 生产者消费者问题: 分析:1.生产者消费者共用一个缓冲区,生产者向其中投入产品,消费者从中取出产品,并消费。所以需要定义一个缓冲区,这里原创 2013-09-30 12:42:34 · 3342 阅读 · 0 评论 -
链接相关知识
前几天,在百度笔试题上遇到“动态链接库”与“静态链接库”两个概念。由于对编译、加载、链接这几个概念没有彻底弄清楚,所以当时写的答案现在看来距离正确的理解有比较大的偏差。这两天翻了下CSAPP,重新看了下“链接”的相关知识,这里做个总结,希望能借此进一步了解计算机程序运行的工作情况。 首先,计算机的编译系统由五个阶段,以C语言为例: 预处理阶段:主要根据以字符#开头的命令,修改原始的C程序。比如原创 2013-10-08 10:45:10 · 760 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2013-10-29 12:42:20 · 606 阅读 · 0 评论