许式伟的架构课
许式伟
七牛云CEO
立即订阅
19888 人已学习
课程目录
已更新 71 讲 / 共 77 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 怎样成长为优秀的软件架构师?
免费
基础平台篇 (21讲)
01 | 架构设计的宏观视角
02 | 大厦基石:无生有,有生万物
03 | 汇编:编程语言的诞生
04 | 编程语言的进化
05 | 思考题解读:如何实现可自我迭代的计算机?
06 | 操作系统进场
07 | 软件运行机制及内存管理
08 | 操作系统内核与编程接口
09 | 外存管理与文件系统
10 | 输入和输出设备:交互的演进
11 | 多任务:进程、线程与协程
12 | 进程内协同:同步、互斥与通讯
13 | 进程间的同步互斥、资源共享与通讯
14 | IP 网络:连接世界的桥梁
15 | 可编程的互联网世界
16 | 安全管理:数字世界的守护
17 | 架构:需求分析 (上)
18 | 架构:需求分析 (下) · 实战案例
19 | 基础平台篇:回顾与总结
加餐 | 我看Facebook发币(上):区块链、比特币与Libra币
加餐 | 我看Facebook发币(下):深入浅出理解 Libra 币
桌面开发篇 (16讲)
20 | 桌面开发的宏观视角
21 | 图形界面程序的框架
22 | 桌面程序的架构建议
23 | Web开发:浏览器、小程序与PWA
24 | 跨平台与 Web 开发的建议
25 | 桌面开发的未来
26 | 实战(一):怎么设计一个“画图”程序?
27 | 实战(二):怎么设计一个“画图”程序?
28 | 实战(三):怎么设计一个“画图”程序?
29 | 实战(四):怎么设计一个“画图”程序?
30 | 实战(五):怎么设计一个“画图”程序?
31 | 辅助界面元素的架构设计
课外阅读 | 从《孙子兵法》看底层的自然法则
加餐 | 想当架构师,我需要成为“全才”吗?
32 | 架构:系统的概要设计
33 | 桌面开发篇:回顾与总结
服务端开发篇 (14讲)
34 | 服务端开发的宏观视角
35 | 流量调度与负载均衡
36 | 业务状态与存储中间件
37 | 键值存储与数据库
38 | 文件系统与对象存储
39 | 存储与缓存
40 | 服务端的业务架构建议
41 | 实战(一):“画图”程序后端实战
42 | 实战(二):“画图”程序后端实战
43 | 实战(三):“画图”程序后端实战
44 | 实战(四):“画图”程序后端实战
45 | 架构:怎么做详细设计?
46 | 服务端开发篇:回顾与总结
加餐 | 如何做HTTP服务的测试?
服务治理篇 (11讲)
47 | 服务治理的宏观视角
48 | 事务与工程:什么是工程师思维?
49 | 发布、升级与版本管理
50 | 日志、监控与报警
加餐 | 怎么保障发布的效率与质量?
51 | 故障域与故障预案
52 | 故障排查与根因分析
53 | 过载保护与容量规划
54 | 业务的可支持性与持续运营
55 | 云计算、容器革命与服务端的未来
56 | 服务治理篇:回顾与总结
架构思维篇 (8讲)
57 | 心性:架构师的修炼之道
用户故事 | 站在更高的视角看架构
58 | 如何判断架构设计的优劣?
59 | 少谈点框架,多谈点业务
60 | 架构分解:边界,不断重新审视边界
加餐 | 实战:“画图程序” 的整体架构
61 | 全局性功能的架构设计
62 | 重新认识开闭原则 (OCP)
许式伟的架构课
登录|注册

10 | 输入和输出设备:交互的演进

许式伟 2019-05-17
你好,我是七牛云许式伟。
前面我们已经介绍了操作系统的存储管理:内存和外存。今天,让我们来聊一聊操作系统是如何管理输入和输出设备的。
输入和输出设备有非常非常多。例如输入设备除了你常见的键盘、鼠标、触摸屏外,还有一些采集信息的传感器,如 GPS 位置、脉搏、心电图、温度、湿度等。我们会把关注点收敛在人机交互相关的设备管理上。

交互的演进

在计算机外部设备的演进上,人机交互设备的演进毫无疑问是最为剧烈的部分。
计算机刚出现的时候,人们使用“打孔卡 + 打印机”作为人机交互方式。这个时期还没有操作系统,表达意图非常痛苦,只能在打孔卡上打孔来发送指令。
但很快,人们找到了 “键盘 + 显示器”, 这对最为经典的人机交互设备。而随着计算机使用人群越来越多,以及使用场景的变化,人机交互的方式也相应地发生了一次又一次的改变。
总结这些改变,我们会发现,人机交互在往越来越自然的方向发展。所谓自然,就是越来越接近于两个人直接的面对面沟通。
那么,这些人机交互的改变,对于操作系统来说又意味着什么呢?

输入设备

我们先看输入设备:键盘、鼠标、麦克风、摄像头。

键盘

键盘输入的管理机制和窗口系统的设计密切相关。为了让用户清楚键盘输入的目的地,窗口系统往往会有一个焦点窗口。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(25)

  • jueyoq
    交互即人机交流。
    对于交流,人们更趋向于使用更自然更本能的方式。
    人做为中心,我们就更加注重输入设备的优化。
    从使用上来说,本质上输入设备要解决的问题就是文本的输入与命令的解析 命令的解释 是离散化的,而未来 会逐渐过度到连续化的意图的识别。
    输出设备 要解决的问题是 如何保证多个程序共享或互斥的使用输出设备资源。对于显示器我们通过虚拟化窗口的设计来解决多个程序的共享,设计焦点窗口实现用户目的的识别。


    最终 其设计原则就是 对于计算机要让其理解什么是输入的数据 什么是命令。对于人 要让其理解 输出的信息,并知道下一步该做什么。

    作者回复: 👍

    2019-05-17
    20
  • 老师好,现在输入设备越来越多样化,意图理解越来越复杂,甚至需要专用的芯片,而如果人机交互意图理解放在操作系统层,会否每一种输入设备都需要一套操作系统?如果是这样,那么会否人机交互意图理解的架构下沉到硬件也就是芯片层,例如人脸识别?谢谢。

    作者回复: 人机交互肯定需要统一的交互范式设计。从这个角度来说,把意图理解放到芯片层并不划算,因为迭代反而慢了。

    2019-05-17
    7
  • 我在你的视线里
    越来越nature,意味着越来越artifiacl。估计设备最好的交互就是类人,而不是代替人。

    作者回复: 嗯

    2019-05-18
    6
  • 苟范儿
    老师今天讲的输入、输出设备交互的变化也是针对终端设备的。而对于开发者而言,一般理解的架构更多的是服务端架构、后台架构,掌握这些人机交互对我们这些后台开发人员所理解的架构设计有什么影响呢?

    作者回复: > 对于开发者而言,一般理解的架构更多的是服务端架构、后台架构

    这个是错误的理解。桌面端软件也是需要架构的。如果你定位自己是后台开发人员,那么理解交互确实意义不大,但是如果希望自己是一个优秀的架构师,还是需要关注交互对我们架构的影响的。

    2019-05-17
    4
  • Adoy
    让我想到了罗永浩的TNT(狗头护体)
    2019-05-18
    2
  • 有铭
    我认为人机交互其实就是所谓的大前端
    2019-05-17
    2
  • Tesla
    老师好。人机交互智能化,更趋近于人与人的交流。但是就算人类面对面沟通,也有很多的理解歧义 还会受限于表达能力。这样是不是意味着,除非有其他学科领悟的理论算法支持,如心理学这类,否则智能交互很难在交互效率和交互准确性上做到平衡取舍?

    作者回复: 这有一定的可能性。人机交互范式目前是确定性交互,但是越来越模糊是趋势,最终如何我觉得还不太好判断。

    2019-05-17
    2
  • Being
    老师,您说的由操作系统来实现智能交互的基础架构,可不可以理解为,对于智能处理,在操作系统抽象出一套标准作为一大模块,为以智能为核心的交互提供统一处理,让交互则更聚焦于场景。

    作者回复: 是的

    2019-05-28
    1
  • williamcai
    许老师,操作系统层面支持智能交互,当前现状是咋样的

    作者回复: 现在还只是萌芽阶段

    2019-05-27
    1
  • Geek_9102
    在未来,必然将由操作系统来实现智能交互的基础架构。未来是这样,是不是也意味着,如果只能交互的应用,会逐渐被系统公司所吞并,商业模式也会有问题
    2019-05-21
    1
  • Aaron Cheung
    补打卡10 交互是非常重要的一环
    2019-05-18
    1
  • 感恩大佬分享 随喜大佬
    2019-05-17
    1
  • Gopher
    关于键盘输入需要请教一下。键盘自身是不带缓冲区的吧?当编程时,我们所说的键盘输入缓冲区是指什么(在哪里,大小,行模式?)?它由OS统一管理(猜测只能由OS管理)还是当前程序自己维护缓冲区?在CLI编程中,当我们需要无缓冲输入时要怎样操作(机制)?(例如在C语言中可以调用getch()函数)—— 特别的,在Go语言里该怎样实现这样的功能?此外,键盘功能键又是怎样的机制呢?(例如方向键)

    总之,请教许老师键盘⌨的原理是什么,有没有比较好的资料可以推荐一下呢?十分感谢!

    作者回复: 缓冲区是os维护的。
    关于资料,你可以看看这个:https://github.com/gizak/termui

    2019-08-19
  • Eric
    iot发音lot字体的重要性

    作者回复: sorry

    2019-07-31
  • Jaising
    许sir上一节所说unix“一切皆文件”是过度设计的原因是不是一方面就有输入输出设备管理的巨大差异性

    作者回复: 是这样

    2019-07-26
  • Eternal
    “在未来,必然将由操作系统来实现智能交互的基础架构”,按照这样的思路,以后的信息科技发展更加头部集中了,操作系统负责接受用户的输入数据并做处理,分析出用户的本质意图,然后将 需求分发给具体的软件去执行。人与人之间相互理解对方已经很难了,计算机理解成千上万的用户需求是一个多么难的事情。

    作者回复: 不一定,边界现在还不好说

    2019-07-21
  • 陈华应
    想请教下老师,对于 头号玩家 这种科幻电影中构造出来的人的思想可以置身其中的虚拟网络世界,像但是又不局限于现实世界一样的交互方式在未来真的有可能实现吗?
    2019-07-02
  • zero
    “我们不可能让每一个软件都自己去做输入意图的理解。在未来,必然将由操作系统来实现智能交互的基础架构。”
    一句话说清楚未来操作系统的模样,许多人的描述像画饼,而许老师已经知道饼是啥馅的。
    2019-07-02
  • wucx
    通用能力在未来会下沉来提高上层的效率及建立标准。
    多样的输入处理能力、标准范式会在未来操作系统上,这个和微服务中的service mesh是一样的感觉,让软件/应用更关注提供的服务,而非基础的能力需要,这个找底层拿来用就好了。
    2019-05-31
  • Mr_杨
    操作系统识别语音,动作还是有一定难度,毕竟不像文字等有标准的字符集,应该还是有专业的软件做这些解析。
    2019-05-31
收起评论
25
返回
顶部