趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
85459 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

31 | 输入与输出:如何建立售前售后生态体系?

文件系统接口屏蔽驱动程序的差异
驱动程序屏蔽设备控制器差异
设备控制器屏蔽设备差异
输入与输出设备的管理

该思维导图由 AI 生成,仅供参考

到这一节,操作系统作为一家外包公司,里面最核心的职能部门差不多都凑齐了。我们有了项目管理部门(进程管理),有为了维护项目执行期间数据的会议室管理部门(内存管理),有项目执行完毕后归档的档案库管理部门(文件系统)。
这一节,我们来规划一下这家公司的售前售后生态体系(输入输出系统)。这里你需要注意“生态”两个字,我们不仅仅是招聘一些售前和售后员工,而是应该建立一套体系让供应商,让渠道帮着我们卖,形成一个生态。
计算机系统的输入和输出系统都有哪些呢?我们能举出来的,例如键盘、鼠标、显示器、网卡、硬盘、打印机、CD/DVD 等等,多种多样。这样,当然方便用户使用了,但是对于操作系统来讲,却是一件复杂的事情,因为这么多设备,形状、用法、功能都不一样,怎么才能统一管理起来呢?

用设备控制器屏蔽设备差异

这有点像一家公司要做 To B 的生意,发现客户多种多样,众口难调,不同的地域不一样,不同的行业不一样。如果你不懂某个地方的规矩,根本卖不出去东西;如果你不懂某个具体行业的使用场景,也无法满足客户的需求。怎么办呢?一般公司采取的策略就是建立生态,设置很多代理商,让各个地区和各个行业的代理商帮你屏蔽这些差异化。你和代理商之间只要进行简单的标准产品交付就可以了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过生动的比喻和清晰的技术解释,帮助读者了解了计算机系统输入输出系统的工作原理和建立售前售后生态体系的重要性。文章首先将操作系统比喻为一家外包公司,各部门如项目管理、会议室管理、档案库管理等相当于计算机系统的输入输出系统。接着,讲解了设备控制器的作用,类比于公司的代理商,用于屏蔽设备差异。此外,介绍了块设备和字符设备的特点,以及CPU与控制器的通信方式。另外,提到了中断处理和DMA功能的作用,类比于代理商的新客户通知和自行处理任务的能力。文章还介绍了设备驱动程序的作用,以及文件系统接口屏蔽驱动程序的差异。总的来说,本文通过生动的比喻和清晰的技术解释,帮助读者了解了计算机系统输入输出系统的工作原理和建立售前售后生态体系的重要性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 刘強
    老师,可不可以这么理解。假设硬盘被格式化为ext 文件系统。如果我们直接读写裸设备,相当于绕过ext文件系统的这部分代码直接让驱动程序指挥硬盘。当然这种指挥由于没有一定的规则,没有什么意义。而把文件系统挂载到某个目录下后,我们访问这个目录,相当于特定于ext文件系统的这部分代码代替我们刚才的“瞎指挥”,还是通过驱动程序操作裸设备,现在由于有了特定文件系统的规则,所以就能读写文件了。 这么理解文件系统 驱动程序 裸设备之间的关系,对吗?

    作者回复: 是的,裸写肯定会写坏

    2019-06-19
    18
  • 安排
    直接读写操作/dev/sdb是操作的裸设备吗?也就是这时候的读入和写出的数据都不经过文件系统? 直接读写/dev/sdb1具有相同的效果吧,只不过sdb代表整块硬盘,sdb1只代表一个分区,但是他们都是裸设备? 只有操作文件才会经过文件系统层吗?

    作者回复: 是的,读写操作/dev/sdb是操作的裸设备,所以读写他没啥意义。也不经过文件系统。只有mount之后,才走文件系统层

    2019-06-08
    17
  • 大龄小学生
    买了个新机,安官网下的centos,安不起,查网上说要改几个配置,毛用没有,好吧,ubuntu,安装十分畅快,想从另一个机子登,ssh,远程桌面,按网上的改了十几个配置,重装系统四次,然而毛用没有,ssh远程桌面能给用一个我就很好了,现在只能说windows万岁。

    作者回复: windows单机好用,集群难管理,越大的集群越难管理。因为业内很多开源工具都是用于linux的。当然微软会推出工具,但是可能就贵了。

    2019-06-09
    3
    3
  • alexgzh
    /dev 下的文件和设备驱动程序关联,通过对/dev 下的文件进行api操作可以和设备互动

    作者回复: 是的

    2019-06-11
    2
  • 石维康
    在Linux正常运行的过程中,如果用 int 0x80来调用系统条用,是否要走文中所画的通用中断处理流程?

    作者回复: 要的

    2019-06-07
    2
    2
  • 靠人品去赢
    ls -all 命令用的好多,这个块设备和字符设备之前只是一个概念。现在其实可以理解块设备就是类似于硬盘这种存储类的,而字符流类似于我们用的触屏,鼠标等更面向用户的输入输出设备。

    作者回复: 对的

    2019-07-01
    1
  • 安排
    /dev/sdb这个设备文件是在devtmpfs文件系统上的,假设将这个设备挂载到/mnt/sdb目录下,这个时候读写这个硬盘上的文件时,最终是否还会通过/dev/sdb设备文件来找到设备驱动程序?毕竟读写文件最底层也是操作具体的磁盘。

    作者回复: 对的,这比较绕,后面会讲,这里涉及到三个文件系统,倒腾过来倒腾过去

    2019-06-08
    1
  • why
    - 用设备控制器屏蔽设备差异 - I/O 设备多种多样, 通过设备控制器范文设备( 类似代理商 ) - 控制器像小电脑, 有芯片和寄存器, CPU 可通过读写寄存器访问设备 - I/O 设备可分为两类: 块设备, 信息存于块中, 有自己的地址, 例如硬盘; 字符设备, 信息为字节流, 无法寻址, 例如鼠标. - 块设备控制器有缓冲区, 数据缓冲区即内存映射 I/O; 控制器寄存器有 I/O 端口, 可通过汇编指令操作. - 如何通知设备操作已完成: - 轮询检测控制器寄存器的状态标志位 - 中断通知, 通过硬件中断控制器通知 CPU; ( 而软中断是在代码中调用 INT, 可触发系统调用 ) - DMA 功能, 设备在 CPU 不参与下, 自行完成内存读写; 由 DMA 协调控制磁盘控制器, 并发送中断通知 CPU 操作完成 - 驱动程序屏蔽设备控制器差异 - 设备控制器不属于操作系统的一部分; 而驱动程序属于, 可以被内核代码调用. - 驱动程序应有统一的接口, 中断处理也在驱动里完成 - 驱动初始化时, 注册中断处理函数; 中断统一出发 do_IRQ, 其找到注册的中断处理函数并执行 - 对于块设备, 驱动与文件系统之间需要通用设备层; 通用设备层实现与块设备相关的通用逻辑, 位于与设备无关的操作 - 用文件系统接口屏蔽驱动程序的差异 - 统一设备名称, 设备在 /dev/ 下有特殊设备文件, 其有 inode 但不关联存储介质数据, 只建立与驱动的连接; /dev/ 是在 devtmpfs 文件系统下, c→字符设备文件, b→块设备文件; 设备号: 主设备号(驱动程序), 次设备号(相应的单元); 可对设备文件使用文件的操作命令 - 添加新设备, 需要安装驱动( Linux 中即加载一个内核模块 ), 用 lsmod 查看加载的内核模块, 可通过 insmod 安装; 有了驱动, 可用 mkmod 在 /dev/ 下创建设备文件. - 或 /sys/sysfs 中是实际设备数的反映 - /sys/devices 所有设备层次结构 - /sys/dev char block 中用设备号链接到 /sys/devices 中 - /sys/block 所有块设备 - 守护进程 udev - 内核检测到新设备插入, 或创建 kobject 对象, 通过 sysfs 展现给用户, 并发送热插拔消息, udev 监听到消息并在 /dev/ 中创建设备文件 - ioctl 可用于配置和修改设备信息.
    2019-06-13
    36
  • 许童童
    这篇文章讲得很好,深入浅出,给老师点赞!
    2019-06-07
    6
  • 陌兮
    打卡,难得听懂的几章
    2021-03-13
    2
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部