摘要: 深入Phtread(三):线程的同步-Condition Variables继续昨天的线程同步,条件变量(Condition Variables)是用于线程间,通信共享数据状态改变的机制。简介 条件变量的创建和销毁 等待条件变量 唤醒等待条件变量的线程简介当线程互斥地访问一些共享的状态时,往往会有些线程需要等到这些状态改变后才应该继续执行。如:有一个共享的队列,一个线程往队列里面插入数据,另一个线程从队列中取数据,当队列为空的时候,后者应该等待队列里面有值才能取数据。而共享数据(队列)应该用mutex来保护,为了检查共享数据的状态(队列是否为空),线程必须先锁定mutex,然后检查,最后解锁m 阅读全文
posted @ 2009-02-12 20:28 david++ 阅读(2069) 评论(0) 推荐(0) 编辑
摘要: 深入Phtread(二):线程的同步-Mutex并行的世界,没有同步,就失去了秩序,就会乱作一团!试想,交通没有红绿灯,生产线产品装配没有一定的顺序... 结果是显而易见的。多个线程也需要同步,否则程序运行起来结果不可预测,这是我们最不能容忍的。交通的同步机制就是红绿灯,Pthread提供了互斥量(mutex)和条件变量(Condition Variables)两种机制去同步线程。不变量,临界区和判定条件 互斥量(Mutex) 创建和销毁互斥量 锁定和解锁 调整mutex大小 使用多个mutex 锁定链不变量,临界区和判定条件不变量(Invariant):程序所做的一些假设,特别是指变量之间的 阅读全文
posted @ 2009-02-11 19:30 david++ 阅读(1860) 评论(0) 推荐(0) 编辑
摘要: 深入Phtread(一):线程的一生我们每个人都并行地活在这个世界上,每一天每个人都干着不同的事情。每个人的人生都是不同的,从出生 -> 活着 -> 死去, 个中滋味,只能自己体味了。我们的线程兄弟也一样,只不过它的环境没有人类社会这么复杂,它的一生,被操作系统控制,被我们程序员控制着!呵呵,想想都觉得这兄弟可怜啊!不过这哥们可不许小瞧了,功能大了去了!具体线程的定义和好处参考其它关于线程的资料。该篇主要讲线程兄弟的大体的一生(从被创建到销毁)。进入正题:线程的一生始终处于下面四种状态之一:StateMeaningReady就绪状态,等待处理器的调度。可能是刚新创建的,或阻塞状态, 阅读全文
posted @ 2009-02-10 19:41 david++ 阅读(1304) 评论(0) 推荐(0) 编辑
摘要: 磁盘1. 简介硬盘(英语:Hard Disk Drive,简称HDD)是电脑上使用坚硬的旋转盘片为基础的非挥发性(non-volatile)存储设备。它在平整的磁性表面存储和检索数字数据。信息通过离磁性表面很近的写头,由电磁流来改变极性方式被电磁流写到磁盘上。信息可以通过相反的方式回读,例如磁场导致线圈中电气的改变或读头经过它的上方。早期的硬盘储存媒介是可替换的,不过今日典型的硬盘是固定的储存媒介,被封在硬盘里 (除了一个过滤孔,用来平衡空气压力)。2. 存储原理盘片是由没有磁性的材料,通常是铝合金或玻璃,覆盖一层很薄的磁性材料(以前用氧化铁,现在一般用钴Co合金)。盘片在高速旋转,信息可以通 阅读全文
posted @ 2009-02-07 18:19 david++ 阅读(331) 评论(0) 推荐(0) 编辑
摘要: initramfs 简介,一个新的 initial RAM disks 模型译自: http://linuxdevices.com/articles/AT4017834659.html或点此查看原文 by Rob Landley, TimeSys (Mar. 15, 2005)问题当 Linux 内核启动系统时,它必须找到并执行第一个用户程序,通常是 init。用户程序存在于文件系统,故 Linux 内核必须找到并挂载上第一个(根)文件系统,方能成功开机。通常,可用的文件系统都列在 /etc/fstab,所以 mount 可以找到它们。但 /etc/fstab 它本身就是一个文件,存在于文件系 阅读全文
posted @ 2009-02-06 14:00 david++ 阅读(1342) 评论(1) 推荐(1) 编辑
摘要: Introducing initramfs, a new model for initial RAM disksThe problem. (Why "root=" doesn't scale.)When the Linux kernel boots the system, it must find and run the first user program, generally called "init". User programs live in filesystems, so the Linux kernel must find and 阅读全文
posted @ 2009-02-06 13:57 david++ 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 使用mkinitcpio简介mkinitcpio是一代的initramfs制作工具。相对于老的mkinitrd和mkinitramfs,它有以下很多优点。它使用Linux核心开发小组开发的klibc和kinit为早期(启动)的userspace提供一个小巧轻量级的基本系统。它在系统启动的时候使用udev来检测硬件,因此防止大量不必要的模块被加载。基于hook的init脚本使它很容易通过自定义hooks来进行扩展(/etc/mkinitcpio.conf),有很多hooks包含在源里的软件包里,可以很容易用pacman来安装,从而避免修改mkinitcpio自身。它早已经为legacy和luks 阅读全文
posted @ 2009-02-06 13:37 david++ 阅读(3777) 评论(0) 推荐(1) 编辑
摘要: POSIX 多线程程序设计Blaise Barney, Lawrence Livermore National Laboratory 目录表摘要 译者序Pthreads 概述 什么是线程? 什么是Pthreads? 为什么使用Pthreads? 使用线程设计程序 Pthreads API编译多线程程序 线程管理 创建和终止线程 向线程传递参数 连接(Joining)和分离( Detaching)线程 栈管理 其它函数 互斥量(Mutex Variables) 互斥量概述 创建和销毁互斥量 锁定(Locking)和解锁(Unlocking)互斥量 条件变量(Condition Variable) 阅读全文
posted @ 2009-02-05 21:27 david++ 阅读(29681) 评论(6) 推荐(6) 编辑
摘要: POSIX Threads Programming Blaise Barney, Lawrence Livermore National Laboratory 译文点此Table of Contents Abstract Pthreads Overview What is a Thread? What are Pthreads? Why Pthreads? Designing Threaded Programs The Pthreads API Compiling Threaded Programs Thread Management Creating and Terminating Thre 阅读全文
posted @ 2009-02-04 22:28 david++ 阅读(1738) 评论(0) 推荐(0) 编辑
摘要: lsmod功能:列出内核已载入模块的状态用法:lsmod描述:lsmod 以美观的方式列出/proc/modules的内容。输出为:Module(模块名)Size(模块大小) Used by(被...使用)eg.ne2k_pci 8928 0 8390 9472 1 ne2k_pci在/proc/modules中相应的是: (模块名,模块大小,被...使用,模块地址(猜的,以后确认)) ne2k_pci 8928 0 - Live 0x3086400 8390 94721 ne2k_pci , Live 0xe086000depmod功能:分析可加载模块的依赖性,生成modules.dep文件 阅读全文
posted @ 2009-02-04 18:06 david++ 阅读(1423) 评论(0) 推荐(0) 编辑