首页 > 编程知识 正文

linux用户空间和内核空间区别,linux用户空间

时间:2023-05-06 11:14:37 阅读:260153 作者:3248

sd驱动呈现的最高层分别是几个 apisd_initsd_multi_readsd_multi_writesd_single_readsd_single_write但是我们读写磁盘,并不直接使用这几个 api 来操作sd卡.(因为我们读写的不是磁盘,而是文件,所以可以说在磁盘的ops上封装出了一层,就是文件层,更大方面说是文件系统层)其实除了文件系统层,还封装了块层. 下面先借一张图说事

除了 read 等 系统调用接口及普通文件,还呈现给用户空间的包括一些 与磁盘相关的节点 和 实用工具. 节点 wit@vexpress:/ # ls /dev/mmcblk0 /dev/mmcblk0mmc_blk_allocmmc_blk_alloc_reqsnprintf(md->disk->disk_name, sizeof(md->disk->disk_name), "mmcblk%u%s", md->name_idx, subname ? subname : ""); 实用工具 wit@vexpress:/ # fdisk -lDisk /dev/mmcblk0: 25 MB, 26214400 bytes, 51200 sectors800 cylinders, 4 heads, 16 sectors/trackUnits: sectors of 1 * 512 = 512 bytesDisk /dev/mmcblk0 doesn't contain a valid partition tableopen("/dev/mmcblk0", O_RDONLY|O_LARGEFILE) = 5ioctl(5, HDIO_GETGEO, {heads=4, sectors=16, cylinders=800, start=0}) = 0close(5) = 0open("/dev/mmcblk0", O_RDONLY|O_LARGEFILE) = 5dup2(5, 3) = 3close(5) = 0read(3, ""..., 512) = 512ioctl(3, BLKSSZGET, [512]) = 0ioctl(3, HDIO_GETGEO, {heads=4, sectors=16, cylinders=800, start=0}) = 0ioctl(3, BLKGETSIZE64, [26214400]) = 0write(1, "Disk /dev/mmcblk0: 25 MB, 262144"..., 56Disk /dev/mmcblk0: 25 MB, 26214400 bytes, 51200 sectors) = 56write(1, "800 cylinders, 4 heads, 16 secto"..., 41800 cylinders, 4 heads, 16 sectors/track) = 41write(1, "Units: sectors of 1 * 512 = 512 "..., 39Units: sectors of 1 * 512 = 512 bytes) = 39write(1, "Disk /dev/mmcblk0 doesn't contai"..., 58Disk /dev/mmcblk0 doesn't contain a valid partition table) = 58core/debugfs.c:177:static const struct file_operations mmc_ios_fops = {core/debugfs.c:329:static const struct file_operations mmc_dbg_ext_csd_fops = {

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。