毕业设计选择做操作系统的话,不太建议做的规模太大,你可以参考一下Linux内核的代码量,完全从头写的工作量还是挺大的。如果是一行一行从头写,学生期间,一学期写10000-20000行有效代码就很强了,而且还要学习硬件基础知识了,比如各种系统寄存器,中断控制,分页,一切都从头开始做是有点难的。
在开始前我有一些资料,是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!
做底层开发,最好是在虚拟机或者另外找一个测试机,开发用的电脑和测试机最好分开的,因为硬件没办法自己调试自己。如果是想做ARM方向的开发,最好买一个开发板,如果是x86开发,找一台旧的PC机就行。
不管是你做一个完整的发行版,还是做一个内核,或者是一个简单的操作系统,工作量都不小,而且这三个方向的区别也比较大。
制作一个发行版,大部分工作都是在做各种软件包的适配,你需要了解各种包的用途、依赖性,比如前几天爆出的liblzma/xz被植入漏洞的新闻,你要了解这个注入的过程,以及如何回滚或者修复。
写一个内核,要学习的主要是操作系统的启动过程,硬件如何初始化:时钟、中断、内存如何配置,如果涉及到多任务,还要考虑调度器的设计。
写一个简单的操作系统,除了内核以外,更多的工作是在驱动和应用环境上面,比如屏幕如何输出,系统调用如何设计,你的用户态代码如何编译,编译器选什么等等。
网上有很多关于操作系统的资料(或者书),大部分都是介绍如何写一个简单的内核,一般是时钟+中断,然后循环打印一个时钟信号,学生时代吃透这部分知识,作为一个爱好者来说,大概就需要一个学期的时间,内容已经足够丰富了。如果真的很喜欢,并且天赋很好,那么再加点驱动和用户态切换的功能,大概也就非常完整了,时间需要半年到一年。
底层开发跟操作系统开发不完全是一回事,底层开发大多数都是写驱动,操作系统开发,更重要的是架构的设计。底层开发跟跟渗透技术也不太一样,都是偏底层,可是方向不同,渗透技术也可以在用户态实现,只不过有点麻烦。
我猜你可能只是想写一个简单的操作系统,概括来说就是一个内核,那么去买一本书,一个开发板,一学期应该足够了。如果用别人的SDK,开发一个内核应该很快的,如果想理解每一行代码的含义,从头写,需要一个学期或者更长的时间。