- 浏览: 517352 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
lin_kk:
最近正在学,请问LZ有源码事例吗,如果有能发一下我邮箱吗,万分 ...
使用libgdx及其中的box2d 2.1的注意事项 -
ahong520:
编译都通不过
ffmpeg对音频解码的一般步骤 -
辽东小小:
yajun_soft 写道XXX@XXX:~$ adb she ...
adb push的Permission denied -
cdtdx:
好文, 相当不错啊. 收了.
什么是app2sd,app2ext,data2ext?app移动到SD卡哪里去了? /mnt/asec /mnt/secure -
dickycat:
学习了,最近正在学这一块,年纪大了,学起来有点吃亏!
使用libgdx及其中的box2d 2.1的注意事项
http://blog.csdn.net/ostrichmyself/article/details/5333558
http://blog.csdn.net/liuhaobupt/article/details/5350950
http://linux.chinaunix.net/techdoc/beginner/2006/06/06/933913.shtml
Unix文化贯穿始终的一条设计主线, 被翻译为: 机制, 而不是策略(Mechanism, not policy), 这句话的英文解释如下:
The distinction between mechanism and policy is one of the best ideas behind the Unix design. Most programming problems can indeed be split into two parts: “what capabilities are to be provided” (the mechanism) and “how those capabilities can be used” (the policy). If the two issues are addressed by different parts of the program, or even by different programs altogether, the software package is much easier to develop and to adapt to particular needs.
翻译过来:机制和策略的区别, Unix设计中最棒的思想之一, 大多程序的问题, 可以分离为两个问题: 提供什么样的功能(即机制); 这些功能是怎么使用的(策略)。 如果在一个程序中的各个模块,甚至是不同程序间,突出强调这两个问题, 那么, 程序包将更容易开发并被特定的应用所采纳。
由此看来, Unix的设计偏重于程序提供什么样的功能, 并不注重程序是如何被用到的。 所谓提供什么样的功能,不仅仅指为User提供这样功能,还包括对其它模块或者其它程序提供这样的功能。 因此Unix注重功能设计,注重接口,但并不在乎这个功能会如何用到。所以,你用命令行,还是用GUI去调用, Unix设计者是不关心这个的。 他们在乎的是: OK, 我已经实现了这个功能了。
为什么用户觉得Unix不好用呢! Unix程序员给你的答案是: 我不关心这个, 功能我已经实现了,并且,我跟其它模块和程序的接口完全解耦,API接口都是文本或者数据流,或者是协议。 我觉得事情已经OK了。
对于还是小白的用户来说,这样几乎是灭顶之灾,他很快就迷失,然后崩溃,最后出离愤怒, 这是显然的。
但对于程序员而言, 设想一下, 通过软件查询了一个结果,把它显示成在GUI上,渐变,渲染,若隐若现,跟我直观的打到shell上,区别在哪里?
程序员更应该关注机制,关注和外界的接口。 这就是为什么《Unix 编程艺术》 受到那么多程序员的追捧,无论是Linux用户还是windows,无论是C-Programer还是Java-Coder。 因为它关注的重点是架构。
《Unix编程艺术》中也给作者的理解: 因为策略和机制是按照不同的时间尺度变化的, 策略的变化要源源快于机制。 GUI工具包的观感时尚来去匆匆, 而光栅操作和组合确是永恒的。 这点跟设计模式的基本原则“分离可变和不变部分” 有着异曲同工, 只不过将其更加细化成“变化快和变化慢”的部分。
--------------------------------------------------------------------------------------------------------------
去年(2005)9月2号就买了Linux Device
Drivers第三版,但一直没仔细拜读.最近决定仔细研读它以学习Linux设备驱动程序. 在这里归纳学习笔记.
不知道自己有没有恒心把它看完,总之better later than never. 就让这一系列的笔记伴随我学习ldd3的漫漫长路吧
ldd3介绍的是2.6.10版的内核
An Introduction to Devices Drivers
驱动扮演的角色
Driver is a software layer that lies between the applications and the actual device.
Mechanism & Policy
" the role of a device driver is providing mechanism, not policy".
mechanism和policy也是隐藏在unix设计背后的经典思想.
mechanism: What capabilities are provided.
policy : How these capabilities can be used.
e.g1: KDE or GNOME: 它们都的基础都是X server. KDE和GNOME属于policy.
它们所关注的是使用什么样的图形界面, 用户面板. 却无须考虑底层硬件. X server属于mechanism, 它与硬件交互,
并为用户程序提供接口. 所以不同的图形界面可以存在于同一台主机上.
e.g2: TCP/IP suite
OS提供socket接口, 应用程序则可以使用各种协议. socket就是mechanism, 应用程序则关注policy. 经典的OSI七层模型或TCP/IP四层模型也是这个思想.
Device Drivers: policy free, only provide mechanism!
but, sometimes, u may lay some policies on them.
和驱动一起发布的可能还会有一些库, 应用程序. 库和应用程序就要涉及到policies了. 开发者提供的库或应用程序中的policy即默认的policy.
Kernel可划分为下列功能单元
1, 进程管理: 进程调度, 资源分配, 进程间通信.
2, 内存管理: 其实也算是资源分配的一部分.
3, 文件系统: 管理, 组织物理媒介上数据的方法.
4, 设备控制: 设备驱动(ldd3所关注的)
5, 网络: 实质上是进程间通信. 但它不局限于一个特定的进程. 它关注收/发packets, 路由, 地址解析...
可加载模块(lodable modules)
module: 可实时加载到内核中的代码, 它可动态连接到内核(insmod, rmmod).
设备驱动就是module的代表, 但module还包括文件系统等等.
当然, 你也可以在开机后关闭模块的功能. 2.2版之后的内核支持在开机后关闭对加载module的支持.
设备, 模块的分类
针对不同的设备类型(实际上也就是文件类型, 可参考APUEv2, p88), 模块分为这些类型: character module, block module, network interface. 每种类型的模块驱动对应类型的设备.
字符设备: 以字节流的形式被访问的设备.
e.g: /dev/console : 文本控制台. /dev/ttyS0 : 串口
它通过文件系统节点被访问. e.g: /dev/tty1, /dev/lp0
字符设备与一般文件(regular file)的区别: 可以在一般文件中前后移动(lseek), 但只能顺序访问字符设备. 当然, 也有特例: frame grabbers.
块设备: 能支持文件系统的设备.
传统的UNIX: 只能以block(512B)为单位访问块设备.
Linux: 能以访问字符设备的方式访问块设备, 即以字节文单位访问块设备.
Linux中字符设备与块设备的区别:
1, 内核内部对数据的组织和管理不同, 但这对驱动开发者来说是透明的.
2, 它们与内核之间的接口不同: 使用两套不同的interface.
网络接口: 能与其他主机通信的设备.
它可以是硬件设备, 也可以是软件设备, 比如lo. (参考TCP/IP详解p26)
网络接口只管收发数据包, 而不管这些数据包被什么协议所使用.
不同于字符设备和块设备, 网络接口没有对应的文件系统节点. 虽然可以通过类似eth0这样的"文件名"来访问网络接口, 但文件系统节点中却没有针对网络接口的节点.
内核与网络接口之间的通信也不同于内核与字符/块设备之间的通信(read, write), 它们之间使用特定的传输数据包的函数调用.
另, 也有一些module不能严格地划分到上面的类型. 比如 USB module: 它工作在内核的USB子系统之上, 而实际的USB设备可以是字符设备, 块设备, 也可以是网络接口.
--------------------------------------------------------------------------------------------------
Unix有一个非常重要的文化,就是提供机制而不是策略。
Unix程序员更愿意相信用户自己更加清楚自己需要的是什么,所以他们更倾向于为用户提供的是用户实现自身所需的手段,而不简单是用户直接的必需品。因此,可能每一个真正的Unix用户,都需要对系统本身、以及自己所需有一个认识,用广大Unix程序员提供的工具,去完成自身的任务。
发表评论
-
睡眠和休眠有什么区别?
2012-12-08 01:01 1167到底用睡眠和休眠, ... -
什么是watchdog + 为何在要系统初始化的时候关闭watchdog
2012-12-06 17:09 1537什么是watchdog + 为何在要系统初始化的时候关闭wat ... -
MMU结构以及工作原理
2012-11-25 00:15 1367MMU的大名,早就听说了,可是一直不知道它是怎么工作的,前几月 ... -
Thread-Specific Data 注:相当于线程内的全局变量,可减少线程内调用其他函数的变量数
2012-11-18 01:20 1403Linux多线程编程中引入了Thread-Specific D ... -
linux下socket编程实例
2012-11-13 12:03 820一、基本socket函数Linux系统是通过提供套接字( ... -
简单的RPC编程实践——HelloWorld的实现
2012-11-13 01:39 1724近期课程的作业需要 ... -
Linux模块编程
2012-11-10 12:38 605Linux模块简介 首先这个module不同于m ... -
这场官司让BSD错过了机会,让linux在应用广泛度上超越了它
2012-11-10 00:50 120170年代末,在Unix发展到 ... -
printk与syslog(至少在Redhat中是这样的)+Ubuntu下用最简单的读到/proc/kmsg
2012-10-12 01:00 1431在头文件 <linux/kerne ... -
关于Linux的syslog
2012-10-12 00:59 1121内核中printk发出的消息是这样传递到用户空间的。 ... -
LINUX下三个内核文件详解
2012-10-11 23:45 751在网络中,不少服务器采用的是Linux系统。为了进一步提高服务 ... -
Linux 2.6.32的内核栈和用户空间栈关系
2012-10-01 00:26 1038.进程的堆栈 内核在 ... -
Linux 内核堆栈
2012-10-01 00:25 1096所有进程(包括内核进程和普通进程)都有一个内核栈,在x8 ... -
linux内核栈与用户栈
2012-10-01 00:24 1278http://19880512.blog.51cto.c ... -
Debian 6 驱动开发环境搭建
2012-09-29 15:33 1567Debian 6 驱动开发环境搭建1.安装相关工具apt-ge ... -
linux-kernel mail list订阅
2012-09-28 12:02 1440由于linux-kernel 的mail list中邮件 ... -
Linux 最简单的驱动程序hello world
2012-09-26 23:27 1431http://blog.sina.com.cn/s/bl ... -
编译linux驱动方法
2012-09-26 23:10 706最近在学习linux的驱动,之前做嵌入式实验的时候加载驱 ... -
Linux设备号,主设备号,次设备号
2012-09-26 22:48 1591Linux的设备管理是和文件系统紧密结合的,把设备和文件关联起 ... -
LINUX进程, 线程
2012-09-08 12:55 641http://shaohui.me/archives/256 ...
相关推荐
Attention Mechanism注意力机制介绍,文本识别、语音识别、机器翻译
2. **Laplace机制与高斯机制的对比**:虽然Laplace机制常用于差分隐私,但高斯机制在某些情况下(如当查询函数的梯度存在时)能提供更好的精度。 3. **敏感度计算**:在应用高斯机制前,需要计算查询函数的敏感度,...
### 注意力机制(Attention Mechanism) #### 引言 在当今信息时代,人工智能技术迅速发展,成为推动社会进步的关键力量之一。注意力机制作为人工智能领域的热门技术之一,模仿了人类大脑处理信息时的选择性关注...
注意力机制(Attention Mechanism)源于对人类视觉的研究,是人类信息处理过程中的一种重要机制。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。这种机制可以...
内容概要:本文详细介绍了注意力机制(Attention Mechanism)的概念及其在深度学习中的应用。首先解释了为何需要注意力机制以及其核心思想,接着描述了不同类型的注意力机制,包括加性注意力、乘性注意力和自注意力...
本项目"tensorflow_attention_mechanism_master"专注于利用Attention机制实现seq2seq(Sequence-to-Sequence)模型,该模型在诸如机器翻译、对话系统、文本摘要等任务中表现优秀。 Attention机制是2015年提出的一种...
注意力机制(Attention Mechanism)作为一项关键技术,在处理序列数据时,极大地提升了模型的表现力。本文将深入探讨注意力机制的工作原理、应用场景以及其在不同领域的应用案例。 #### 二、注意力机制的基本概念 ...
机制和策略(机制和策略) 客户策略(客户策略) 优惠券设计(Coupon Design) 。 沉伟然等。 AAMAS 2020年。 。 沉伟然等。 AAAI 2021。 广告投放策略(平台策略) 自动出价 由DiWu等人撰写。 CIKM2018。(阿里...
在唇读领域,时空注意机制(Spatio-Temporal Attention Mechanism)和知识蒸馏(Knowledge Distillation)是提高视觉语音识别(Visual Speech Recognition,VSR)系统性能的关键技术。本文将深入探讨这两个概念以及...
注意力机制
### Antikythera Mechanism:古代科技的奇迹与谜团 #### 一、引言 《Antikythera Mechanism1.pdf》是UCBerkeley(加州大学伯克利分校)一门课程的阅读材料,这门课程由Christos Papadimitriou教授开设,课程网址为...
日志错误error_log.log 提示: suEXEC mechanism enabled 日志nss_error_log.log 提示: [Sun Nov 27 16:46:38 2016] [error]Certificate not verified: 'Server-Cert' [Sun Nov 27 16:46:38 2016] [error] SSL ...
编程机制探析(Insight into Programming Mechanism) 1.1 《编程机制探析》初稿目录(已提供PDF下载) 4 1.2 《编程机制探析》第一章 写作初衷——若是当年早知道 . .10 1.3 《编程机制探析》第二章 计算机语言.....
"Management+Mechanism.rar"这个压缩包文件包含了对管理机制深入探讨的PDF文档,旨在帮助我们理解并优化组织内部的管理流程和技术系统。下面将详细阐述管理机制的重要性和其在IT环境中的应用。 一、管理机制的定义...
注意力机制(Attention Mechanism)是深度学习领域中的一个重要概念,特别是在机器学习和自然语言处理(NLP)的应用中,它极大地提升了模型的理解和预测能力。传统的序列模型,如循环神经网络(RNN)或长短期记忆...
在深度学习领域,尤其是计算机视觉任务中,注意力机制(Attention Mechanism)已经成为了一种非常重要的技术,它模拟了人类视觉系统处理信息的方式,使模型能够更有效地聚焦于图像中的关键部分,提高识别精度。...
这个机制在Intel的手册中被详细描述,尤其在“EPT Translation Mechanism”章节。以下是EPT转换机制的关键点: 1. **EPT层级结构**:EPT使用类似于Intel x86的四级页表结构,但只使用低47位(GPA的Bit 47:0)进行...
它是由地球、太阳和月球的相对位置决定的,而Antikythera Mechanism中似乎包含了这种周期的计算机制。 - **Callippic Cycle**(卡利皮克周期):这是一种大约为76年的周期,由天文学家Callippus提出,用于调整月相和...
本篇文件中提到的“Mechanism Design via Correlation Gap”即利用相关性差距进行机制设计的方法。所谓“相关性差距”(correlation gap),是一个衡量随机集合中元素相关性与独立性之间差异的量。在单维贝叶斯设置...