Skip to content

Latest commit

 

History

History
86 lines (48 loc) · 10.2 KB

File metadata and controls

86 lines (48 loc) · 10.2 KB

学习操作系统理论对人生的指导意义

一、当我们学习操作系统时我就想如果我是操作系统,该怎样优化自己

我们每天开机关机,很多事载入内存很多又被主动释放也有些会被遗忘当作垃圾回收,我们不断开启前后台进程开启定时器开启轮询,监听各种事件输入,我们开始感到内存不足,感到疲惫,感到自己hold不住这信息爆炸的时代。

1、该怎样优化内存?

a、减少常驻内存

有哪些常驻内存的事情?每个人都有一个行为规则引擎这是常驻内存的,它时刻提醒我们哪些该做哪些不该做,那么如果你跟一个敏感且脾气暴躁的人相处的话,这个规则引擎势必会频繁运行反复递归推导,势必很累,那么这就要求我们选择跟简单的人相处共事,也教育我们降低规则引擎的复杂度不要过于敏感别人胡乱猜忌做一个简单的人,不要想太多

常驻内存的还有一些没必要的焦虑,不说忧国忧民,就说普通的担心会不会过不好自己,会不会注孤生,我是不是还不够瘦?我是不是脑子有问题?等等这些应该好好给自己一个内存清理,还有一些比如房价又涨了股票又跌了技术又变革了,不是说不用想只是担心没有用,要转化成点滴积累的行动之后不用去天天想,反正已经出发只顾风雨兼程即可,这样来释放常驻内存。

每个人都有一些常驻内存的烦心事,这里就抛砖引玉的一下,更多的还得自己思考

b、该释放的内存及时释放掉

玩安卓机的都有所体验,软件开多了就会卡,那我们人有没有开多了情况,从某一点来讲可能此时既要做新需求又要改bug还有支持线上问题还要配合联调测试但这不是由自己决定的,这里我就考虑一下一段时间内的,比如有些事情差一点点就做完了那就干脆做完以直接释放内存,我转行学新东西的时候就会把上一行的全部忘掉,也不去关心,这样全部释放掉就会轻松很多,如果一个人不再可能了就要放下也不去打扰,这样释放了或者说释怀了就会轻松很多,上英语课就不要想着数学课的东西等等,该释放的释放

c、用消息通知模式代替轮询

当遇到需要等待的事情,比如等你忙好了我们去吃饭,轮询就是过一会就得去问一下你好没好我们去吃饭,过一会又会去问你好没好,或者合代码打包都一样,合代码了吗,过一会儿继续问打包好了吗,这就比较累了,如果是消息通知模式你好了你告诉我我就可释放这部分内存去做别的事,这就要我们遇到需要等待的事情一定要提醒他你好了你告诉我,另一方面作为被监听者一定要及时给予通知,不浪费等待人的时间有情况也要说明,可能有人觉得这是很普通的事情,但往往现实中这种消耗屡见不鲜,甚至有人会猜算了都这个时候就不回了,还有自己觉得不重要就无意识的忽略。我们要避免自己成为这样的人,也要提防这些人原来是这样的

d、顽固内存的清理

我们经常遇到一些事情,比如生气那么整个人就会被愤怒笼罩,比如情感问题,整天茶不思饭不想夜不寐,比如被欺负整天想着报复,这种大内存消耗的搞得其他程序都启动不了,就像java IDE开多了就巨卡,这时候有时也丧失了思考能力,那么程序员大法就是关机重启,女孩子就有太累了脑子不够用了哭哭然后就睡着了,对这时候干脆睡一觉,睡不着吃安眠药,实在不行去运动分散注意力,身体疲惫了就会累总会睡着的,那么顽固内存就会慢慢释放

e、彻底重启

这都是遭受彻底打击的人,忘了过去吧,一切从0开始

2、说到操作系统,那还有CPU,那么我们人的CPU怎么优化?

CPU有多核和单核,我们人脑有个特殊的地方就是每次只能专注于一件事,没办法多核,程序有多线程的概念,但是人脑一旦专注于一点其他就会受到抑制,但是人的中枢神经系统可不都在颅内还有脊髓,主要控制人体运动肌肉记忆,所以我们能一边骑车一边聊天,这是可以并行的,还有一个神秘的潜意识,这就像后台进程默默整理运算时不时的还能冒出来让你不知不觉的完成了一系列动作,好 基于这些生物学原理也就是硬件基础我们思考一下我们CPU该怎样优化

a、多线程

因为人脑、脊髓、潜意识是可以并行的,所以为了达到效率最大化仍然要追求多线程,可以一边走路一边听英语或是任何知识服务音频,跑步洗澡时可以听音乐,一边刷牙就可一边看看镜子自己的面色发型思考要做哪些处理,同事间也可以边吃饭边讨论些有意思的东西

当然我们也知道有人确实达到了一心多用,那就得把很多事情熟练到肌肉记忆和刻到潜意识里形成意识流形成条件反射形成习惯性动作,比如快捷键这种东西如果还要经过大脑回忆去决策那肯定是没有效率的,熟能生巧其实是个最短路径算法但到一定程度之后就能成为人脑的多线程基础不用去想它

上面看上去都是些小优化,当我们遇到很多大型任务时怎么处理?

我们知道单线程的js通过事件循环实现了异步,CPU通过时间片轮转算法实现多进程调度,那么人同样可以运用这种轮转的方式达到大脑利用率的最大化,也就是多任务轮转,我们知道大脑长时间专注于一点就会疲劳而专注于一点其他被抑制的目的是为了休息恢复,那么多任务轮转切换大脑使用不同部位就能达到使用和休息并行,比如文理科交叉学习,看书和编程和看视频交叉,当然越丰富越好比如加入学弹琴学唱歌学游泳健身练英雄等等,单看书就可以同时看多本,半天切换一本,因为记忆的增强来自于回忆提取,轮转促进了提取的过程

b、同步改成异步

同步是极其占据资源的,这就是我们讨厌各种会议的原因,能发邮件解决的就发邮件能微信QQ解决的就微信QQ,能打电话解决的就打电话,你叫我过来一下那这成本就高了,你必须把当前工作进程挂起,切换回来再唤醒然后很多临时存储脑中的信息都丢失了得重新建立,所以我们要有意引导别人把同步改成异步,你发我微信吧发我邮件吧我有空处理,同时自己也要评估自己的任务的重要性免得同样打断了别人

c、任务优先级

我们知道CPU进程是有优先级的,这样能确保整个系统的流畅运行,比如iPhone手机响应触摸事件的优先级是非常高的,那么为了大脑运转的高效肯定是优先运算最重要的任务,另外是最重要里面耗时特别短的优先处理掉,这样能有效释放进程降低切换成本,一天就24小时相当于手机是有电量的,在有电时将重要的优先做完避免突然关机,另外手机快没电时系统为了节省电量会降低CPU频率,也就是人到困了的时候效率是不高的只能处理不重要的琐事

二、作为程序员整天写程序时,我就想如果把人比做操作系统那么必然需要编程来指导进程,那么人生必定也是一个算法优化的过程

1、我们怎么给自己写程序?我们每天基于怎样的算法在运转?

我们知道:程序=数据结构+算法

对应于现实,数据结构就是我们拥有的资源,算法就是通过一定逻辑合理利用资源去做想做的事,程序里算法的基本结构就是流程控制语句,对应于现实就是一些行为准则一些道理什么是对的什么是错的,我该循环着坚持什么,我该continue还是break,goto一个说走就走的旅行,还是一日三省吾身高否?富否?帅否?滚去看书。

所有判断都基于个人的认知判断、价值判断、道德判断等等,所以该怎样给自己编程时,那么这些必要的写死的逻辑判断是必不可少的,如果全靠自己去试一辈子这些元判断必定有限,而历史的数据库里这些元判断已经积累了大量数据,这就是我们多读书的原因甚至是看励志鸡汤的原因,因为我们自己处世有限只能复制别人的小方法小函数来指导自己前行,有了这些智慧结晶我们就能给编程写一个好的人生。

我们知道锻炼身体是好的所以在上面套了一个for循环去坚持,我们知道早睡早起是必要的,所以我们设置了定时器去唤醒自己,当我们用程序员思维去思考自己每天的行为时就会发现原来我就活在一个自我编程的世界里,把自己最大的资源时间和注意力花费出去,我们不断去迭代优化自己,去发现更好的算法来指导自己,一旦发现一个真理欣喜若狂,便基于种种这些资源算法我们过完了我们的一生。

2、知道了我们一生就是程序的一生时,我们就很容易想到

  • a、程序是可以优化的
  • b、程序是会有bug的
  • c、程序是基于当前运行环境的
  • d、程序是存在残留和冗余的

当到这一步时就会明白命由天定是不对的只能说初始可利用的资源是命中注定的,但后来的一生算法都是人写的,什么道德经、汉莫拉比法典、圣经、未来五年规划纲要都是人写的算法而已 所以对照以上得出

  • a、人可以变得越来越好
  • b、人生遇到点意外在所难免
  • c、每个人的处境都不一样每个人都有自己需要解决的bug,别人成功后的算法也不一定能跨平台移植到你身上
  • d、道理是会过时的,需要不断适应时代找到更好的算法

但是程序还是会提炼抽象出最基础类库,这些相对是不怎么变得,这些道理还是值得自己去发掘和调用的,比如有些人一辈子的座右铭

逻辑思维的罗振宇在跨年演讲中提到 成就=核心算法*重复动作^2

也就是说我们一生都要不断学习提升认知构建自己的核心算法然后不断重复的坚持下去