
Sign up to save your podcasts
Or
自从有了计算机以来,不论男女老少阿猫阿狗都知道一件事——死机,死机是不管日常生活中我们的电脑手机电子表还是火箭飞机大炮都避免不了的千古难题,今天就给你讲讲死机背后的原理及故事吧。大家都听过一个问题,我和你妈同时掉进水里,你先救谁?虽然这是个千古难题,但假设你必须要救而且可以把两个人都救起来的话,相信聪明的你有各种解决方案,首先你会说,当然是谁离我距离近我先救谁,这样最公平,这个说法没错,但是其中有三个问题,首先,如果恰好你妈特别肥,救妈的时间花太多,就浪费了时间,造成老婆等待时间太长。其次,谁离你近就先救谁实际有个假设前提,就是你老婆可以自己往前游一段距离的,假设你老婆以百米女子自由泳的姿势迅速游到了你妈前面,而你这时候又要游更远的距离去救你妈,显然浪费了体力,又把你老婆上岸的时间卡住了。还有个终极难题,假设你妈和你老婆离你的距离相同,两个人又都静止不动,那你该怎么办。不正经的说完了,当然,计算机在资源管理上,很多原则和我们日常生活和工作的原则相似,比如什么时候才有先进先出,先来先服务,或是反过来。但是在两个方面,它的思维方式和我们人完全不同。其一,它并不追求公平、平等这样道德层面的目标,而是追求运行的整体效率。比如在资源紧张时,它通常不采用先来先服务这种公平的方式。很多时候,效率和公平性是矛盾的,计算机的好处在于,它不需要为公平发愁。而在我们人的社会里,却不能这样想。其二,由于它的资源调度和使用策略是事先规划好的,尽管计算机科学家事先总是要把各种情况考虑完整,但是总是有一些事先无法预知的情况无法处理,以至于出现拥堵和死锁,而计算机本身是无法解决这些问题的,于是就出现死机,一切必须重新开始。但是人遇到这种情况则不同,人可以不按照事先设定的规则行事,因此可以解开死局。在计算机系统里和我们日常生活中简单的事情一样,在具体操作室会有意想不到的困难,为了解决这种争议,计算机科学家们干脆设计了一种先进后出,或者先来后服务的的数据结构,叫做堆栈。先进后出的策略在现实生活中是否有可以对应的真实场景?不仅有,其实还不少。比如很多火车站都在铁路的一个尽头,火车到那里要调头出发,这就是先进后出。大家坐电梯,坐飞机,进电影院也是如此。在计算机中,堆栈这种先进后出的数据结构和处理任务的策略也被称为FILO(First In Last Out)或者FILS(First In Last Serve)。你可以想象一堆东西,放的时候先放底下的,拿的时候先拿上面的。和它对应的先进先出的数据结构被称为队列(Queue),你可以想象出我们排队的场景,先来先服务,它也被称为FIFO(First In First Out)或者FIFS(First In First Serve)。无论用堆栈还是队列,其实都还没有解决上面第一个问题,也就是如果计算机遇到了一个需要特别长时间才能完成的任务怎么办。这就涉及到操作系统里面一个资源调度的问题了。通常,计算机在同时需要执行几个程序时,会根据下面几种策略来决定先运行哪一个,后运行哪一个,这些策略大致如下:第一种,先来的先服务。第二种,执行起来最省时间的先服务。第三种,最少占用资源的先服务。第四种,释放资源最多的先服务。第五种,优先级高的先服务。当然上述每一种都有它的道理,也有它的缺点。如果我们采用第二种,总是执行那些最省时间的事情,那么一个很早就来排队,但是要很长时间才能完成的程序,就永远没有机会被执行了。为了解决这些矛盾,计算机操作系统的设计者,通常会把上述几种方案混合使用。比如同时设定,等待时间越长的任务优先级越高,任务越小优先级越高,这样如果一个任务虽然很大,但是等待时间已经很长了,还会让它有机会运行。一种计算机如果运行各种程序的次序安排不合理,使用者就会感觉计算机特别慢。更糟糕的是,计算机里面的很多程序并非彼此独立的,而是有一些依赖性,比如程序C的运行必须等到程序B的完成,程序B的运行必须等待程序A的完成。如果调度不合理,会有一大堆程序堆在队列中,在用户看来计算机似乎不动了,感觉上就像死机了一样。这是我们见到的死机的第一个原因。更糟糕的情况是,如果程序A依赖于程序B,程序B依赖于程序C,程序C又反过来依赖于程序A,这就形成死循环了,计算机就真的“死翘翘”了,除了重启没有更好的解决方法。再有第三种情况,计算机软件有一些Bug,各种程序进入队列或者堆栈,在离开时次序搞乱了,也会出现死机。总之,计算机本身并不具有智能的特性,它表现的好坏,完全取决于管理和调度资源的操作系统,所以我们买电脑和手机的时候,看似大家的硬件配置相同,而实际操作体验完全不同,尤其是操作系统大boss微软,实在是做的不够好,也正是因为这种原因,微软在手机操作系统的市场份额几乎为零。曾经的曾经,死机只不过是蓝屏,让我们丢失一些编辑的文档而已,在移动互联网和人工智能时代,软件可以帮助人类做更多更多的事情,但是也有着更多更多的矛盾和BUG会出现,死机,也将给我们带来更大的困扰和损失,面对这些死机,你是否有故事说给我听,欢迎给我留言。
自从有了计算机以来,不论男女老少阿猫阿狗都知道一件事——死机,死机是不管日常生活中我们的电脑手机电子表还是火箭飞机大炮都避免不了的千古难题,今天就给你讲讲死机背后的原理及故事吧。大家都听过一个问题,我和你妈同时掉进水里,你先救谁?虽然这是个千古难题,但假设你必须要救而且可以把两个人都救起来的话,相信聪明的你有各种解决方案,首先你会说,当然是谁离我距离近我先救谁,这样最公平,这个说法没错,但是其中有三个问题,首先,如果恰好你妈特别肥,救妈的时间花太多,就浪费了时间,造成老婆等待时间太长。其次,谁离你近就先救谁实际有个假设前提,就是你老婆可以自己往前游一段距离的,假设你老婆以百米女子自由泳的姿势迅速游到了你妈前面,而你这时候又要游更远的距离去救你妈,显然浪费了体力,又把你老婆上岸的时间卡住了。还有个终极难题,假设你妈和你老婆离你的距离相同,两个人又都静止不动,那你该怎么办。不正经的说完了,当然,计算机在资源管理上,很多原则和我们日常生活和工作的原则相似,比如什么时候才有先进先出,先来先服务,或是反过来。但是在两个方面,它的思维方式和我们人完全不同。其一,它并不追求公平、平等这样道德层面的目标,而是追求运行的整体效率。比如在资源紧张时,它通常不采用先来先服务这种公平的方式。很多时候,效率和公平性是矛盾的,计算机的好处在于,它不需要为公平发愁。而在我们人的社会里,却不能这样想。其二,由于它的资源调度和使用策略是事先规划好的,尽管计算机科学家事先总是要把各种情况考虑完整,但是总是有一些事先无法预知的情况无法处理,以至于出现拥堵和死锁,而计算机本身是无法解决这些问题的,于是就出现死机,一切必须重新开始。但是人遇到这种情况则不同,人可以不按照事先设定的规则行事,因此可以解开死局。在计算机系统里和我们日常生活中简单的事情一样,在具体操作室会有意想不到的困难,为了解决这种争议,计算机科学家们干脆设计了一种先进后出,或者先来后服务的的数据结构,叫做堆栈。先进后出的策略在现实生活中是否有可以对应的真实场景?不仅有,其实还不少。比如很多火车站都在铁路的一个尽头,火车到那里要调头出发,这就是先进后出。大家坐电梯,坐飞机,进电影院也是如此。在计算机中,堆栈这种先进后出的数据结构和处理任务的策略也被称为FILO(First In Last Out)或者FILS(First In Last Serve)。你可以想象一堆东西,放的时候先放底下的,拿的时候先拿上面的。和它对应的先进先出的数据结构被称为队列(Queue),你可以想象出我们排队的场景,先来先服务,它也被称为FIFO(First In First Out)或者FIFS(First In First Serve)。无论用堆栈还是队列,其实都还没有解决上面第一个问题,也就是如果计算机遇到了一个需要特别长时间才能完成的任务怎么办。这就涉及到操作系统里面一个资源调度的问题了。通常,计算机在同时需要执行几个程序时,会根据下面几种策略来决定先运行哪一个,后运行哪一个,这些策略大致如下:第一种,先来的先服务。第二种,执行起来最省时间的先服务。第三种,最少占用资源的先服务。第四种,释放资源最多的先服务。第五种,优先级高的先服务。当然上述每一种都有它的道理,也有它的缺点。如果我们采用第二种,总是执行那些最省时间的事情,那么一个很早就来排队,但是要很长时间才能完成的程序,就永远没有机会被执行了。为了解决这些矛盾,计算机操作系统的设计者,通常会把上述几种方案混合使用。比如同时设定,等待时间越长的任务优先级越高,任务越小优先级越高,这样如果一个任务虽然很大,但是等待时间已经很长了,还会让它有机会运行。一种计算机如果运行各种程序的次序安排不合理,使用者就会感觉计算机特别慢。更糟糕的是,计算机里面的很多程序并非彼此独立的,而是有一些依赖性,比如程序C的运行必须等到程序B的完成,程序B的运行必须等待程序A的完成。如果调度不合理,会有一大堆程序堆在队列中,在用户看来计算机似乎不动了,感觉上就像死机了一样。这是我们见到的死机的第一个原因。更糟糕的情况是,如果程序A依赖于程序B,程序B依赖于程序C,程序C又反过来依赖于程序A,这就形成死循环了,计算机就真的“死翘翘”了,除了重启没有更好的解决方法。再有第三种情况,计算机软件有一些Bug,各种程序进入队列或者堆栈,在离开时次序搞乱了,也会出现死机。总之,计算机本身并不具有智能的特性,它表现的好坏,完全取决于管理和调度资源的操作系统,所以我们买电脑和手机的时候,看似大家的硬件配置相同,而实际操作体验完全不同,尤其是操作系统大boss微软,实在是做的不够好,也正是因为这种原因,微软在手机操作系统的市场份额几乎为零。曾经的曾经,死机只不过是蓝屏,让我们丢失一些编辑的文档而已,在移动互联网和人工智能时代,软件可以帮助人类做更多更多的事情,但是也有着更多更多的矛盾和BUG会出现,死机,也将给我们带来更大的困扰和损失,面对这些死机,你是否有故事说给我听,欢迎给我留言。