查看原文
其他

同事自研了一款操作系统—「编程杂感」第 2 期

Guide哥 JavaGuide 2022-03-15

这是我编程杂感第二期的内容,上期传送门:《请不要对大龄程序员有偏见!—「编程杂感」第 1 期》

技术

这部分内容都和操作系统有关系:

  1. 推荐一位朋友开发的物联网操作系统
  2. 一个从零实现一个操作系统内核的开源项目
  3. 学好操作系统有啥用?怎么学?

朋友开发的一款物联网操作系统

耗费了很多精力与业余时间,我的朋友和他的一群小伙伴,开发了一款面向物联网设备的基于标准的开源操作系统-SynestiaOS

这里必须强烈推荐一下!

SynestiaOS 采用微内核架构,内核态中仅维护进程管理子系统和内存管理子系统,SynestiaOS 采用 CFS 调度算法,目前实现了内核线程的主调度器和周期性调度器;内存管理部分在 ARM32 上开启 LPAE 模式,采用虚拟内存管理,目前实现了HeapStackPage 的管理以及MMU的驱动。

更多关于 SynestiaOS 的介绍,请看:《面向物联网的微内核 SynestiaOS》

这个系统的作者们都是真技术大佬,我就不一一介绍了。我是真的非常非常佩服,所以朋友找到我的时候,我是非常乐意帮忙宣传一下!

如果不是对技术热爱,谁特么去做这些事情呢? 打心底希望这个系统会越来越好,也非常欢迎小伙伴们多关注一下这个项目。

下面是项目和文档的地址(觉得不错,欢迎 star 啊!):

  • 项目地址https://github.com/SynestiaOS
  • 文档地址https://github.com/SynestiaOS/Documentation

从零实现一个操作系统内核

实际上,写一个 Demo 级别的操作系统内核并不难,关键还是看你有没有兴趣和耐心。

单纯从找工作角度来说,如果你能够自己独立写一个操作系统内核的话,即使是玩具级别的那种。绝对也能够为自己的简历加分不少。

从个人能力来说,讲句心里话,「写一个操作系统内核对于你的编程能力提高是非常非常大的!」

所以,我这里再来推荐一个大二学弟手手写的操作系统内核。属实后浪啊!

这个项目是一个用来练手的简单内核,作者提供了各个阶段完成度不同的内核,你可以从自己喜欢的地方开始。

项目地址:https://github.com/Simple-XX/SimpleKernel

效果图如下:

学好操作系统有啥用?怎么学?

操作系统中的很多思想、很多经典的算法,你都可以在我们日常开发使用的各种工具或者框架中找到它们的影子。

比如说我们开发的系统使用的缓存(比如 Redis)和操作系统的高速缓存就很像。CPU 中的高速缓存有很多种,不过大部分都是为了解决 CPU 处理速度和内存处理速度不对等的问题。我们还可以把内存可以看作外存的高速缓存,程序运行的时候我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。同样地,我们使用的 Redis 缓存就是为了解决程序处理速度和访问常规关系型数据库速度不对等的问题。

高速缓存一般会按照局部性原理(2-8 原则)根据相应的淘汰算法保证缓存中的数据是经常会被访问的。我们平常使用的 Redis 缓存很多时候也会按照 2-8 原则去做,很多淘汰算法都和操作系统中的类似。

既说了 2-8 原则,那就不得不提命中率了,这是所有缓存概念都通用的。简单来说也就是你要访问的数据有多少能直接在缓存中直接找到。命中率高的话,一般表明你的缓存设计比较合理,系统处理速度也相对较快。

总结来说,我觉得学好操作系统除了能够加深自己对于操作系统的了解/程序运行的底层机制,还能够提高自己思考的深度以及对技术的理解力。

关于 如何学习操作系统? 请看这篇原创:《如何学习操作系统?看哪本书好?有没有相关的公开课呢?》

技术之外

一款 Typora 主题推荐

我日常记录学习笔记、个人思考、撰写原创文章都是使用的 Typora。同时,也会使用语雀记录一些用于在网络分享的内容。

8

为啥使用 Typora? 说实话,我尝试了很多很多类型的笔记软件比如有道云笔记、Notion,最终还是觉得 Typora 最合适自己。

我比较偏向于对于简单设计的产品,把核心聚焦在写作这件事情上就好。

并且,我会把笔记同步到 Github 上的一个私有仓库,以保证修改可追溯以及内容的安全性。

实际上,Typora 有很多比较美观的主题供我们选择。你可以在这里:http://theme.typora.io/ 找到很多美观的 Typora 主题。

我目前的话是将 Markdown 的样式更换为了 Gitbook ,整体阅读体验大幅提升。

封面设计

推荐两个非常适合程序员的页面设计网站,可以满足绝大部分需求。

  1. 创客贴:我的公众号首页封面图就是通过这个网站制作的。通过这个网站你可以制作好看的海报、简历、新媒体文章的首页图等等,这个网站甚至还有很多免费且好看的 PPT 插件,简直是神器。
  2. Canva :国外的一个网站!帮你制作美观简洁大方!简历、海报、信息图!

文件压缩

我会经常有压缩图片、PDF 文档等文件类型的需求。

这里的话,我比较常用的是 docsmall 这个网站。网站地址 :https://docsmall.com/ 

img

并且,这个网站还支持 PDF 合并和分割。

最后,不得不说这个网站做的简直不要太美观,体验感和好感 Max!!!

读书

《腾讯产品启示录》

最近看了拉勾的一个名为 《腾讯产品启示录》 专栏。简单聊聊读后感。

小伙伴们都知道:小龙哥成就了 QQ 邮箱,打造了自己的巅峰之作—微信。

实际上,微信一开始就一枝独秀,占领市场。初期的竞争者非常多,光是腾讯内部就有 3 款竞品。

为什么微信能够杀出重围呢?

微信能够杀出重围的很大一部分原因是微信这款产品的使用简单、功能简单纯粹,不整一些花里胡哨的,把核心都放在了社交产品最底层的本质上!也正是因为这些才导致微信的目标用户群体非常大,一些老年人甚至都能快速上手使用。

关于产品有一个囚徒悖论的说法:每一款产品的诞生都会面临自身定位困难以及外部强烈竞争等一系列问题。

腾讯产品团队做了什么打破了产品的囚徒悖论? 答案是“一切以用户价值为依归”。

两个技巧满足目标用户:

  1. 发掘用户的刚需 :挖掘用户真正需要的东西!
  2. 更人性化的用户体验 :让产品更易用!

另外,KISS 原则 在几乎所有的领域都是适用的。

“KISS 原则是用户体验的高层境界,简单地理解这句话,就是要把一个产品做得连白痴都会用,因而也被称为“懒人原则”。换句话说来,“简单就是美”。KISS 原则源于 David Mamet(大卫马梅)的电影理论,后来被逐渐延伸扩展到其他领域。”

张小龙 :“极简主义是互联网最好的审美观”。

最后,做产品一定要回归用户!!!用户的反馈非常重要!做产品最忌讳的不是做了无用需求(用户反馈能够让你知道自己做的东西有没有解决用户痛点),而是在不正确的路上一直错误地走下去。

《富爸爸,穷爸爸》

最近在看理财方面的书籍,是时候再次立起之前的 flag 了。

平时也看过很多理财方面的文章,但是,总感觉还是缺点什么。

《富爸爸,穷爸爸》 是我认真看的第一本理财类的书籍,目标是在年底精读 3 本理财类书籍。目前已经开始看 《小狗钱钱》 这本书了。

确实,当代的学校教育只专注于学术知识和专业技能的教育和培养,并没有所谓的“理财知识”相关的课程。即使是金融、经济相关的专业的学生掌握的也不过是一些空洞的理论罢了!

《富爸爸,穷爸爸》 这本书中的穷爸爸更像是我们大多数人。

我们大部分人都和穷爸爸那样,一路认真刻苦地学习,只为考上一个好一点的大学,然后找一个比较好的工作。

刚毕业,那会我的目标是自己一年能赚 8w 就不错了,这个还不包括平时生活的开支。毕业之后,才发现当初自己是多么地天真。

我们辛辛苦苦读书的最终目的可能是为了实现人生价值,但对于大多数普通人来说就是为了赚钱过上更好的生活!

《富爸爸,穷爸爸》 这本书没有太多理财方面的理论知识,但是可以让你对“金钱”有进一步的认识,对于“财富自由”有进一步的思考。

最近写的一些干货,每篇都很用心,欢迎各位小伙伴阅读/点赞/分享:

  1.  一份热乎的 SpringBoot 前后端分离后台管理系统分析!分模块开发、RBAC权限控制...

  2.  朋友结束了自己3年的码农生涯,过上了梦想的乡村田园生活

  3.  请不要对大龄程序员有偏见!—「编程杂感」第1期

  4.  就一篇读者面经被疯狂diss谈谈:校招/社招技术面试那些事

  5.  这几款 IDEA 主题也太好看了吧!!

  6.  读者秋招上岸百度客户端开发经验分享(下)


我是Guide哥,Java后端开发,会一点前端知识,喜欢烹饪,自由的少年。一个三观比主角还正的技术人。我们下期再见!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存