
开发
zacklin
这个作者很懒,什么都没留下…
展开
-
Linux下用信号量实现对共享内存的访问保护(一)
最近一直在研究多进程间通过共享内存来实现通信的事情,以便高效率地实现对同一数据的访问。本文中对共享内存的实现采用了系统V的机制,我们的重点在于通过信号量来完成对不同进程间共享内存资源的一致性访问,共享内存的具体方法请参见相关资料,这里不再赘述。首先我们先实现最简单的共享内存,一个进程对其更新,另一个进程从中读出数据。同时,通过信号量的PV操作来达到对共享内存资源的保护。思路如下:1.s转载 2012-02-07 11:17:52 · 7558 阅读 · 1 评论 -
Linux设备模型--总线、驱动、设备、设备类
前面的文章分析设备模型中的最基础部分,下面就要更跨入现实,看看如何在这些基础之上构建整个设备驱动子系统。谈到设备驱动,总会涉及到三个概念:总线、驱动、设备。而在Linux中,为了便于用户管理一些功能不同但是使用方式却很接近的设备,开发者们定义了一个设备类的概念。总线?structbus_type { constchar原创 2012-02-15 13:39:55 · 861 阅读 · 0 评论 -
linux 设备模型 补充
Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:http://blog.chinaunix.net/u1/34474/showart_404278.html在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但原创 2012-02-14 14:21:49 · 943 阅读 · 0 评论 -
Linux设备模型之tty驱动架构分析
一:前言Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制 终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题.二:tty驱动概貌Tty架构如下所示:如上图所示,用户空间主要是通过设备文件同tty_c原创 2012-02-15 16:16:15 · 618 阅读 · 0 评论 -
Linux设备驱动模型 sysfs
2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l 代码重复最小化。l 提供诸如引用计数这样的统一机制。l 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l 可以将系统中的全部转载 2012-02-16 09:52:50 · 1754 阅读 · 0 评论 -
Linux设备模型(总线、设备、驱动程序和类) (个人认为网上写的层次最清楚的资料)
之一:bus_type 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟"platform"总线。可以通过ls -l /sys/bus看到系统加载的所有总线。drwxr-xr-x root root 1970-01-01 00:02 platformdrwxr-xr-x root root转载 2012-02-17 11:37:00 · 1121 阅读 · 0 评论 -
Linux编程make命令
摘要:在开发一个系统时,一般是将一个系统分成几个模块,这样做提高了系统的可维护性,但由于各个模块间不可避免存在关联,所以当一个模块改动后,其他模块也许会有所更新,当然对小系统来说,手工编译连接是没问题,但是如果是一个大系统,存在很多个模块,那么手工编译的方法就不适用了。为此,在Linux系统中,专门提供了一个make命令来自动维护目标文件,与手工编译和连接相比,make命令的优点在于他只更新修改过转载 2012-02-20 15:22:42 · 608 阅读 · 0 评论 -
浅谈Base64编码
我打赌当你见到Base64这个词的时候你会觉得在哪里见过,因为在你能够上网看到这篇文章的时候你已经在后台使用它了。如果您对二进制数有所了解,你就可以开始读它了。打开一封Email,查看其原始信息(您可以通过收取、导出该邮件用文本编辑器查看)。你会看到类似这样的一个效果: Date: Thu, 25 Dec 2003 06:33:07 +0800 From: "eSX?!" sn原创 2012-03-08 11:48:43 · 470 阅读 · 0 评论 -
Eclipse使用
说起java的IDE,朗朗上口的无非是Eclipse了,假若能熟练Eclipse,对于我们编写java程序会起到事半功倍的效果,大大提高我们工作效率。因此本篇博文,笔者只是针对刚刚入门java的新手,以便他们能尽快掌握Eclipse的使用。1. 常用快捷键这是使用工具的第一步,熟练使用快捷键对于我们编写程序会起到相当大帮助,所以这里笔者列出的快捷键建议大家必须都掌握。Ctrl + 鼠标原创 2012-11-25 21:53:35 · 1941 阅读 · 0 评论 -
JAVA&CORBA详解
Java IDL技术在Java平台上添加了CORBA(Common Object Request Broker Architecture)功能,提供了基于标准的互操作能力和连接性。Java IDL技术使得分布式的Java Web应用能够通过使用工业标准的IDL和IIOP(Internet Inter-ORB Protocol)来透明地调用远程网络服务的操作。运行时组件(Runtime Compon原创 2012-11-21 13:38:59 · 5780 阅读 · 0 评论 -
Linux设备模型第二篇之kobject与kset之间的关系
首先,先看一下kobject与kset的定义:struct kobject {const char *name; //名字struct list_head entry; //作为父对象的链表节点struct kobject *parent; //父对象struct kset *kset; //属于哪个对象集合struct kobj_type *ktype; //对象类型原创 2012-02-13 16:08:48 · 3170 阅读 · 0 评论 -
关于linux设备模型kobject,kset,ktype
一、sysfs文件系统下的每个目录对应于一个kobj,kset是kobj的封装,内嵌了一个kobj,其代表kset自身,ktype代表属性操作集,但由于通用性,因此把ktype单独剥离出来,kobj,kset,ktype成为了各个驱动模型最底层的关联元素,并由此形成了sys下的各种拓扑结构。二、关于kobject 首先看一下kobject的原型转载 2012-02-13 16:01:29 · 1586 阅读 · 0 评论 -
信号量与线程互斥锁的区别
援引CU上一篇帖子的内容:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同原创 2012-02-07 15:15:09 · 884 阅读 · 0 评论 -
Linux内核的同步机制:completion
在Linux内核中,completion是一种简单的同步机制,标志"thingsmayproceed"。要使用completion,必须在文件中包含,同时创建一个类型为structcompletion的变量。这个变量可以静态地声明和初始化:DECLARE_COMPLETION(my_comp);或者动态初始化:struct completion my_comp;init_compl原创 2012-02-07 17:23:19 · 1225 阅读 · 0 评论 -
信号量的应用场景
1、信号量的定义:struct semaphore {spinlock_t lock;unsigned int count;struct list_head wait_list;};在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。2、信号量的初始化:可用void sema_init(struct semaphore *sem, int v原创 2012-02-07 18:11:41 · 6325 阅读 · 2 评论 -
Linux 读写自旋锁原理
简介: 读写自旋锁是一种特殊的自旋锁,它将访问共享资源的线程区分为读者和写者,多个读者可以同时持有锁,因而提高 了线程的并发性。本系列由三篇文章组成,本文是系列文章的第一部分,以自动机的观点阐述读写自旋锁的原理。后续两篇文章论述如何设计和实现基于简单共享变 量的读写自旋锁,以及针对大规模多核系统讨论如何提高读写自旋锁的可扩展性。读写自旋锁简介什么是读写自旋锁自旋锁(Spinlock转载 2012-02-08 15:30:35 · 3349 阅读 · 0 评论 -
Linux下PCI设备驱动程序开发
一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不转载 2012-02-09 18:08:27 · 874 阅读 · 0 评论 -
再补充一篇 浅谈 Linux 内核开发之 PCI 设备驱动
本文介绍了 PCI 的基本概念,并从 Linux 内核的角度出发,介绍了 PCI 设备的初始化以及配置。PCI 介绍随着计算机应用的不断更新和发展(比如百兆网卡、视屏流等),计算机内数据传输的带宽要求越来越高,传统内部总线带宽已经远远不能满足这些应用的需要,因此人们推出了 PCI 总线标准PCI 是 Peripheral Component Interconnect 的缩写,它因为高性转载 2012-02-10 09:56:45 · 947 阅读 · 0 评论 -
http://code.google.com/p/nginxsrp/wiki/NginxCodeReview
概述Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集转载 2012-02-21 14:24:06 · 1918 阅读 · 0 评论 -
Linux Yum安装配置与安装命令应用
Linux Yum安装已被广泛应用但是也在不断的更新,这里介绍Linux Yum安装设置使用,帮助大家安装更新Linux Yum安装系统。Linux本身是这个操作系统的核心部分,也就是操作系统的内核。内核是完成那些最基本操作的程序,它负责其他程序(如文本编辑器程序)的启动与终止、内存申请处理硬盘访问、网络连接管理等方面的工作。Linux Yum命令一. Linux Yum是什么yum =转载 2012-02-21 14:46:48 · 1194 阅读 · 0 评论 -
中间件小结——几个概念
学习了两天中间件,虽然对于中间件这个概念还是比较模糊,但也不算白学。中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑原创 2012-11-21 15:23:03 · 21315 阅读 · 3 评论