在工作中实现高效的上下文切换
novakon2016/01/04科学技术学 IP:广东
上下文切换这个概念,源于英文的context switching。在多线程操作系统中,每个线程可以看做一个顺序执行的程序;所谓上下文,指的就是程序执行到了哪里、各个寄存器的值是什么。简而言之,上下文就是一个线程的“工作状态”,只要CPU知道目前的工作状态,就能决定下一步要做什么。在现代微型计算机系统中,每个CPU核心往往同时承载着成千上万的线程,它们通过不断地进行上下文切换实现互不干扰的顺序执行,使得计算机可以用单个核心同时运行多个任务。


虽然人脑和计算机是完全不同的,但在工作中,我们人类也需要上下文。当我们用键盘输入一篇文章的时候,我们需要随时查看之前输入的内容;当我们用PS绘制一张画作的时候,我们需要随时查看之前完成的面积;当我们用matlab对数组进行变换的时候,我们也需要看到之前输入的命令历史。这些例子无不说明:我们需要计算机(或者其他工作媒介)为我们保存和呈现上下文,因为人脑的上下文资源实在是太宝贵了。如果我们把例子从计算机中扩展到现实生活中,这个结论仍然是成立的:为了拍摄产品照片,需要搭建摄影棚;为了进行化学试验,需要搭建实验室。基本上,我们需要为几乎每一种工作(以及其他人类活动)指定上下文,然后不断切换之。


进行上下文切换是需要消耗时间和能量的。在最简单的嵌入式操作系统中,上下文切换意味着将当前线程的所有寄存器内容存入内存,然后从内存载入下一个线程所有寄存器的内容,整个过程通常是纳秒或者微秒级的。相比之下,人类活动的上下文切换问题严重的多:在北上广,上千万的人每天花费1-2小时在上班路上,因为他们工作和生活的上下文,在地理距离上过于遥远。上班族们往往很少参加运动(除了赶车),因为切换到体育运动的成本同样很高(上下文包括球场、服装、器材等)。但他们没有更好的选择,因为大城市已经是降低各项活动上下文切换成本的局部最优解了。

如果我们不能为不同的工作指定现实生活中不同的上下文,我们就需要将这些上下文缓存在大脑中。而大脑并不擅长做这个:我们和冯诺依曼机一样,只适合单线程地思考问题。现实生活中的上下文可以帮助我们省去大部分对上下文的记忆,以避免大脑犯浑。如果我同时进行一个物理实验和一个化学实验,我肯定会把它们摆在不同的桌子上,和配套的仪器设备堆在一起——不然我肯定会在过程中搞错步骤。

由此可以看到,上下文切换的效率,决定了我们进行各类活动的效率。
这里我想谈的,是面对计算机进行工作时的上下文切换。我目前的工作95%的时间要对着显示器,而且往往涉及多种不同的上下文(代码,脚本,文档,网页,命令行),如何在众多上下文之间高效切换,成了我最关心的问题。
来自:科创总论 / 科学技术学
6
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
novakon 作者
8年4个月前 IP:广东
802982
常见应对方式如下。

1. 增加工作区域面积
  目前我使用两个相同大小的1920x1080显示器,这样我便有足够的空间将不同的上下文摊开,避免手动切换。
2. 使用高效的上下文切换技巧
  对于win7系统而言,Alt-Tab 和 Win-Tab都是很糟糕的设计,因为它们并不便于在多于两种上下文之间进行切换。双屏时只在一个屏幕上显示任务栏也是败笔。相比之下,Macbook Pro的触摸板多指扫动切换桌面,就是非常优秀的设计,它以人脑容易接受的方式(左右侧滑动对应左右侧的桌面,如同真实的桌面一样)呈现上下文,可惜微软一辈子都没学会。

正因如此,Macbook Pro目前已经成为Web程序员以及所有非Windows栈程序员的标配。在此提出一个评价操作系统用户界面的新标准:界面上下文切换效率。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年4个月前 IP:广东
802983
未来,一个人从事多种工作,利用机器存储工作上下文以减少脑力开销,将是绝对趋势。我的电脑除非需要更新,一般一个月不会关一次机,因为我需要它为我保持上下文,睡醒之后可以马上开始继续昨天的工作。然而我仍然需要从大脑中载入大量上下文以对前一天的问题进行下一步思考;相信在未来,这样的脑力开销将有一部分被机器学习分担。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
SamZLim燹灵
8年4个月前 IP:广东
803397
楼主如此思考,嗯,学习了。语文中的上下文之间有过渡,对比,照应....之说,却真没听说过有什么切换之说。而英文中的context switching让我最先想到的是考试中英文和中文的切换,文综中政史地和理综中物化生知识的切换,以及由switching直接反应得来的开关“断开”与 “闭合”,它们都有一个很明显的共同点:紧密联系且对比很明显或者区分度较大,而楼主开篇所言电脑运行到哪的区分度有多大就不太清楚了。而且所谓的上下文,它不仅有时间上的逻辑关系,还有空间上的逻辑关系,就像“床前明月光,疑是地上霜”只有有“疑是地上霜”这么一句的时候才能说“床前明月光”是上文,另一句是下文。也就是说,如果我要写一个5000行的软件代码,今天我在电脑里敲了3000行代码,晚上睡觉时不关电脑,此时不能说电脑是为我保存上下文,只有当第二天我敲完剩下的代码保存才能说电脑为我保存上下文,而之后我的脑海里已经不需要载入大量的上下文了,我只需要用的时候记得软件代码保存在哪就可以了。而且用上下文切换来形容这件事似乎就不太合适,因为内容不太好区分。当然忽略内容区分度和紧密性,硬要说是上下文切换,那就只能站在上下文都有的时间和空间角度上了。(以上仅属本人偏见,说错了大神大仙大侠们莫怪罪[s::sleepy:])
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
20!Dopaminor
8年4个月前 IP:广东
803437
一个竖屏一个横屏
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
熊猫阿Bo
8年3个月前 IP:德国
803664
楼主可以换Linux试试看,自己定制工作桌面即可,在和别的Linux用户交流的过程中不少人经常将屏幕一分为二甚至一分为四,随时改变随时切换。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
novakon
学者 机友 笔友
文章
1256
回复
8385
学术分
16
2008/03/29注册,2年2个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}