块设备与字符设备

是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来(先)存放暂时的数据,待条件成熟后,从缓存一次性写入设备或从设备中一次性读出放入到缓冲区,如磁盘和文件系统等。

字符设备(Character device):这是一个顺序的数据流设备(没有结构),对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。他不具备缓冲区,所以对这种设备的读写是实时的,如终端、磁带机等。

系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。

另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。

linux 快设备这两种类型的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入“fox”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“f”,然后是“o”,最后是“x”,最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容,而被读取的块在磁盘上位置不一定要连续,所以说硬盘可以被随机访问,而不是以流的方式被访问,显然它是一个块设备。

内核管理块设备要比管理字符设备细致得多,需要考虑的问题和完成的工作相比字符设备来说要复杂许多。这是因为字符设备仅仅需要控制一个位置—当前位置—而块设备访问的位置必须能够在介质的不同区间前后移动。所以事实上内核不必提供一个专门的子系统来管理字符设备,但是对块设备的管理却必须要有一个专门的提供服务的子系统。不仅仅是因为块设备的复杂性远远高于字符设备,更重要的原因是块设备对执行性能的要求很高;对硬盘每多一分利用都会对整个系统的性能带来提升,其效果要远远比键盘吞吐速度成倍的提高大得多。

linux系统之linux块设备的详解

cron 和 crontab

cron 是 Linux 下的定时执行工具(相当于 windows 下的 scheduled task),可在无需人工干预的情况下定时地运行任务 task。

crond 位于:

/etc/rc.d/init.d/crond
# or
/etc/init.d
# or
/etc/init.d
# or
/etc/rc.d/rc5.d/S90crond

最终引用:

/var/lock/subsys/crond

由于 cron 是 Linux 的 service(daemon),可用以下的方法启动、关闭这个服务:

/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload  # 重新载入配置

也可以将这个服务在系统启动的时候自动启动:
/etc/rc.d/rc.local 这个脚本的末尾加上:

/sbin/service crond start

crontab 位于 /usr/bin/crontab。

cron 服务提供 crontab 命令来设定 cron 服务的,以下是这个命令的一些参数与说明:

  • crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  • crontab -l //列出某个用户cron服务的详细内容
  • crontab -r //删除某个用户的cron服务
  • crontab -e //编辑某个用户的cron服务

References

[1] Linux的cron和crontab

【笔试/面试】—— Linux(块设备与字符设备/cron 和 crontab)相关推荐

  1. I/O输入输出——I/O设备(块设备与字符设备)

    无论是块设备还是字符设备,都是属于IO硬件,在整个硬件到软件层之前的了解,有助于我们理解. I/O设备 块设备 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的 ...

  2. 你知道什么是 块设备 和 字符设备 吗?以及如何查看 块设备文件 和 字符设备文件 ?

    关于块设备 和 字符设备 介绍: 系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块.                 最常见的块设备是硬盘,除此以 ...

  3. 十四、linux 静态/动态申请字符设备号

    一.静态申请 • 所在目录:include/linux/fs.h – int register_chrdev_region(dev_t from, unsigned count, const char ...

  4. linux PCI驱动调用字符设备驱动方式

    上一篇文章写了字符设备驱动的基本结构及访问方式,在实际应用时首先需要绑定自己的硬件设备.本篇主要描述字符设备驱动与PCI接口类型的设备访问方式(内核为2.6.24及以上的方法,测试内核为2.6.32) ...

  5. Linux内核学习-字符设备驱动学习(二)

    在Linux内核学习-字符设备驱动学习(一)中编写字符设备驱动的一种方法,但是需要手动创建设备节点. 有没有能够自动的创建设备节点的呢? 有!使用class_create()和device_creat ...

  6. linux设备驱动--字符设备模型

    linux设备驱动--字符设备模型 最近正在学习设备驱动开发,因此打算写一个系列博客,即是对自己学习的一个总结,也是对自己的一个督促,有不对,不足,需要改正的地方还望大家指出,而且希望结识志同道合的朋 ...

  7. Linux驱动开发:字符设备驱动开发实战

    Linux驱动开发:字符设备驱动开发实战 一.工程创建 VSCode 创建工程,设置 C/C++ 配置,导入 linux kernel 源码目录,方便 vscode 写代码自动补全,vscode 配置 ...

  8. 一起分析Linux系统设计思想——05字符设备驱动框架剖析(四)

    在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习.我的使命就是过滤掉大量的垃圾信息,将知识体系化,以短平快的方式直 ...

  9. 《Linux内核剖析》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+Makefile+块设备驱动+字符设备驱动+数学协处理器+文件系统+内存管理+GDB+立钻哥哥+==)

    <Linux内核剖析> <Linux内核剖析> 版本 作者 参与者 完成日期 备注 YanlzLinux_Kernel0.12_V01_1.0 严立钻 2020.02.06 # ...

最新文章

  1. thymeleaf 的常见属性
  2. 2017 多校3 hdu 6061 RXD and functions
  3. 【ArcGIS微课1000例】0012:ArcGIS创建及连接ArcSDE企业级地理数据库实例
  4. oracle 尚未从池中获取连接,解决一个问题的思路 之“解决已经写满con.close() 仍然出现但是尚未从池中获取连接的连接池耗尽问题”...
  5. Excel快速选择区域
  6. Mysql中慢查询Sql的记录查看
  7. select 中添加option的注意
  8. mysql表损坏及修复
  9. java直白解释,关于java的static和final关键字的直白、简单解释
  10. JAVA UrlRewrite 使用教程与注意点,JAVA 实现伪静态,URLRewrite实现url地址伪静态化,springboot中url地址重写(urlwrite),jeesite4伪静态
  11. 自回归滑动平均(ARMA)模型
  12. DCDC电源中同步与异步的区别
  13. excle2010 一张图上画两种类型的图:折线图+柱形图
  14. redis基础数据结构(一)可变长字符串sds
  15. Android集成友盟推送服务
  16. 云南鲁甸县附近发生6.5级地震 震源深度12千米
  17. Python——打开文件
  18. java bufferedread_java中关于bufferedreader类中read方法
  19. 图片免费转pdf图片、图片免费转成word、图片免费转excel表格
  20. 三相电 三相 插座 插头 线缆 颜色 详解 图解

热门文章

  1. SQL对某个字段分组并加序号
  2. plsql打开sql窗口快捷键_可以提升3倍开发效率的 Intellij IDEA快捷键大全汇总(2019)...
  3. python决策树多分类代码_绘制决策树分类的多类ROC曲线
  4. IntelliJ IDEA 激活
  5. 剑指offer面试题24. 反转链表(双指针)
  6. Qt总结之十八:总结
  7. c++ 数据类型转换: static_cast、dynamic_cast、reinterpret_cast和const_cast
  8. Flask 发布 1.0 稳定版
  9. Zabbix Agent端配置文件说明
  10. [Django]我的第一个网页,报错啦~(自己实现过程中遇到问题以及解决办法)