zoukankan      html  css  js  c++  java
  • Linux编程学习笔记Devices

    Linux编程学习笔记--Devices
    2012-6-24

    在Linux平台上,设备驱动程序是内核的一部分,用户进程不能直接访问。
    Linux提供了file-like 对象,通过这种机制,用户进程通过类似文件操作的方式访问设备驱动,进而访问设备。

    user process --> file-like object --> device driver --> device
    user process --> file-like object --> linux kernal

    # device types
    设备文件有两种类型:
    1) character device:按照字节流进行读写操作。
    2) block device:按照固定大小字节的块进行读写操作。

    典型的应用程序不会用到块设备。对硬盘的访问,应该通过文件系统进行。

    # device number
    Linux使用两个数字标识设备:
    major device number:标识设备对应的驱动,一个驱动可以应用于多个设备。
    minor device number:子设备,标识一个驱动控制的设备或部件,一个驱动可能控制了多个设备,通过minor进行区分。

    主设备号是内核代码的一部分,可以从/usr/src/linux/Documentation/devices.txt 查看。

    # device entry
    在很多方面和普通的文件类似,可以执行mv, rm, cp, write等操作。

    mknod -- 在文件系统中创建 device entry。创建一个文件,代表设备。

    /dev 目录包含了完整的字符、块设备entry。大多数情况下,用户应该使用已有的device entry,而不是创建。

    对设备的访问:将device entry作为文件打开,对该文件进行读写操作。

    # 特殊设备
    Linux提供了一些特殊的设备,没有和硬件设备关联。它们的主设备号为1,和linux内核的内存设备关联。

    /dev/null -- 写入该设备的数据会被丢弃;从该设备读取数据,会得到文件结束。
    /dev/zero -- 无限长文件,内容是0。
    /dev/full -- 模拟一个满的文件。

    /dev/random 和 /dev/urandom -- 访问linux内核内建的随机数生成功能。rand函数生成的随机数是可以复制的,不可靠。

    环回设备 /dev/loop0 -- 用普通的磁盘文件模拟块设备。
    创建虚拟文件系统的方法:
    1)创建一个空文件;
    2)在空文件上创建文件系统;
    3)用环回设备挂接文件系统;

    # PTYs
    /dev/pts -- 该目录下的条目对应于伪终端(PTY)。

    # ioctl
    是控制硬件设备的全功能接口。

    man ioctl_list -- 获取请求码

  • 相关阅读:
    vi命令大全
    理解proc文件系统
    读目录
    取得系统资源信息
    qtempinc
    我实现的一个正则表达式代码
    oracle内置函数大全
    STL算法
    unix基础教程
    两日期间的天数
  • 原文地址:https://www.cnblogs.com/weichsel/p/2560479.html
Copyright © 2011-2022 走看看