Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Linux字符设备驱动框架详解

Linux字符设备驱动框架详解

所谓驱动程序,本质上讲是硬件接口,因为操作系统不可能实现每种硬件的接口,所以只对厂商提供接口,只要厂商实现这些接口,就可被操作系统调用,Linux系统驱动程序分为字符设备驱动和块设备驱动,所谓字符设备驱动就是例如键盘驱动,只能顺次读取数据,块设备驱动入硬盘等,可以随机分块读取。而有些程序虽然符合驱动程序规范,但却不真正驱动硬件,而是对操作系统功能的扩充,也称作内核模块。所以驱动程序和内核模块本质上讲属于同一种类别。操作系统对字符设备驱动提供 file_op...
Linux 内核调试1-UML

Linux 内核调试1-UML

最近看了些Linux内核源码,之前认为最好的调试内核源码最好的方式使用Qemu虚拟机,结合GDB调试,虽然在网上也看到一些这种调试方式的弊端,但感觉虚拟机支持调试是最完美的事情,虽然Bochs更为灵活甚至内置调试器,但速度太慢。之前一直觉得KGDB这种双机调试的方式很不完美,还必须使用一个调试机,不过在Windows下使用WinDbg调试虚拟机多了,感觉这种方式很合理,起 码被调试机当机的情况下,调试机还是活的。而且这样看上去很酷,而且比SoftICE这样...
Linux 内核调试2-UML调试内核

Linux 内核调试2-UML调试内核

今天的特别汗,首先,之前UML在64位系统下没有编译通过,编译器和内核源码都应该不会犯这样低级的错误,那最有可能的原因就是gcc版本和 linux内核版本不匹配,gcc 4.4.4版本算是高版本了,而内核版本2.6.34已非最新,抱着侥幸心里下载了2.6.36版本编译,居然顺利通过,看来64位与32位编译并没什么 区别。另外一个问题是昨天启动UML失败的问题,原来是我的命令行写错了,ubda指定根文件系统,我错写成了udba,以至无法加载文件系统,经过纠正...
Linux 内核调试3-UML网络配置

Linux 内核调试3-UML网络配置

UML支持多种方式的网络,一般使用tap/tun模拟UML虚拟机中的eth0驱动,仅仅这种方式也能分为桥接和NAT等等,手工配置网络也有助于理解网络的运行方式。根据官方文档 Simple UML Networking 下载 uml_utilities ,其实也就使用了一个工具 tunctl,这个工具很简单,就是启动 tun 驱动,首先得先查看是否加载 tun 驱动,当然首先需要有root权限:# 查看用户 ID (tunctl 使用)[cpp@dark t...
病毒木马借“闫凤娇327M不雅照”BT下载在非Linux系统下大肆传播

病毒木马借“闫凤娇327M不雅照”BT下载在非Linux系统下大肆传播

近日,《非诚勿扰》嘉宾闫凤娇爆出“艳照门”,其不雅照在网上疯传。国内某杀毒软件安全中心发现,不法分子利用“闫凤娇不雅照” “闫凤娇艳照327M”等热词的挂马网站出现,甚至有些木马直接被伪装成了“闫凤娇裸照”,诱骗用户下载,给非Linux系统网民(Windows用户)带来了极大的安全风险。据报道,《非诚勿扰》上的闫凤娇清纯、可爱,是广大婚男心中的女神。可近日,却爆出一组浴室不雅照,后来又传出327M高清版本,一时间网络搜索“闫凤娇”“闫凤娇不雅照”“327M...
Linux 内核调试4-Qemu调试Linux内核

Linux 内核调试4-Qemu调试Linux内核

通过UML可以方便的在本机调试Linux内核,UML是一种特殊的虚拟机,另外一种更为灵活的虚拟机是Qemu,Qemu是一种完全仿真虚拟机, 可以在i386平台仿真任意其他处理器构架,而且支持GDB调试,这里尝试一下使用Qemu调试Linux内核,Qemu参数-kernel可以直接指定 内核启动,这与UML有相似之处。首先需要编译安装Qemu,这里并没有什么疑惑之处,直接从官方网站下载源码,使用Linux最常用的编译命令即可:# 默认选项会编译所有处理器构架...
Linux 内核调试5-UML和Qemu调试模块

Linux 内核调试5-UML和Qemu调试模块

这次来看如何调试内核模块,也就是驱动程序,模块的调试跟普通程序略有不同,不论是内核还是普通应用程序,在连接之后便以得知代码将要加载的位置,用户态程序有虚拟地址映射机制,而内核独占物理内存。内核运行与共享的内核地址空间,所以不能使用相同的线性地址,只能由内核加载模块时指定起始地址,模块中都以此为偏移运行。所以内核的调试不能使用普通的方式,需要知道模块的加载地址。而且Qemu的调试原理与UML相似,也可用相同的方法进行模块的调试,这里仅以UML模块调试举例首先...
Linux 内核调试6-使用KGDB双机调试

Linux 内核调试6-使用KGDB双机调试

虽然使用UML或者Qemu可以调试Linux内核,但UML和Qemu毕竟是一个模拟,调试硬件驱动总是用虚拟硬件总不成事,而且Qemu据传闻 对于时钟和中断的处理也有问题,所以对于处理真实硬件的问题,最完美的调试方式就是双机调试,被调试内核在完全真实的环境中运行,排除虚拟机制的不稳定因素,而且使用内核自带的KGDB机制,更具有可靠性,类似Windows下的WinDbg调试方式。这里使用VirtualBox虚拟机进行调试,但所提 及的方法完全适用于诸如VMWa...
Objective-C语法之KVO的使用

Objective-C语法之KVO的使用

简介:上篇我们讲到了KVC(见 http://www.linuxidc.com/Linux/2012-07/66456.htm),这篇我们学习KVO,全名为:Key Value Observing,直译为:基于键值的观察者。那它有什么用呢?KVO主要用于视图交互方面,比如界面的某些数据变化了,界面的显示也跟着需要变化,那就要建立数据和界面的关联。ObjC中提供的KVO就是解决这种问题的。以下用显示页面观察学生的课程名称变化的例子来说明KVO的使用。学生类命...
<< 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 >>