自己动手写操作系统自己动手编写操作系统 现代操作系统两本书哪个好

自己动手写操作系统  时间:2021-08-18  阅读:()

怎样写操作系统

额,你的问题很吓人,Linux就是操作系统,Windows也是操作系统,是管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石,平时我们需要的程序比如qq、杀毒软件、游戏等都是运行在操作系统之上的,也就是说必须有操作系统我们才能进行其他操作。

所以你还没有理解操作系统这个概念。

你说的编译运行,指的是编程语言设计。

如何从零开始写一个简单的操作系统

早先写过一个玩具内核,现在正做操作系统课助教,带一伙学弟学妹做这个事情。

假定题主对操作系统有一定的认识(被丢去裸考期末考试不会挂科)。

总体路线图大约是这样的: *以下内容全是干货,试图在不干预题主自己的设计的条件下尽可能指出所有的大坑,此方案不能代替看书/读论文/上课/看手册等* 第一阶段:早期规划 1. 搞清楚自己打算写一个内核干啥:试着设计?练习实现?拿来实用的话打算跑什么呢?打不打算跨平台?打算跨哪些平台,兼容到什么程度? 2. interface大概会长什么样?给用户空间提供哪些服务?(并不一定要和现有系统兼容或者怎么样) 3. 想怎么样boot?兼容一个现有bootloader还是自己写一个?内核被load的时候是什么格式? 第二阶段:方案设计 4. 选个架构吧,推荐IA32或者ARMv7A之类的 5. 找到各种手册翻看一下,脑内构思一下内核里各种机制该用什么方案实现 6. 选个目标设备吧,qemu可以玩玩但是内核都写了,还是上个设备跑一跑比较好。

(如果你打算在树莓派上做的话下一步你会比较郁闷) 7. 这个设备的启动流程怎么样,和之前的想法有没有冲突? 8. 找到各种手册看一下,之前想好的实现方案有没有坑?时钟、中断、DMA之类的,大概怎么搞,心里要有数了。

9. 想不想要JTAG之类的调试方案?有没有?方不方便? 10. 提前组织一下模块划分、代码结构、编译管理方案等。

第三阶段:初步实施 11. 选好之后就把设备买下吧,需要的SD卡啦电源啦都买下,按照noobs' kit之类的东西试试好不好用 12. 准备工具链。

在linux上你需要和binutils。

要不要加?不加的话有什么坑?(CortexA9没有硬件整数除法我说的就是你)怎么处理? 13. 编写字符输出驱动,不管是UART还是IA32的默认控制台或者是什么的。

14. 编写Hello world并作为最简单的内核或者bootloader运行。

15. (如果自己写bootloader)读启动介质的驱动和你想load的内核格式的支持代码应该写出来了。

内核load到哪里去?内核想要load到非常奇怪的地址(比如设备区或者和bootloader重叠)怎么办? 16. 平台初始化要做一做了吧?页表准备一下该开MMU了吧?说道MMU就要说缓存,目标架构上缓存需要内核做哪些维护?如何启用?设备区怎么处理?(MIPS没有硬件table walker这种事情也要在这里处理掉) 17. 要不要跳虚拟地址?虚拟地址空间怎么划分? 第四阶段:各种内核组件 18. 一套完整的线性映射能不能容纳?不能的话怎么办?类似vmalloc和ioremap的机制,要实现的话需要提前规划好。

19. 物理内存怎么管理?连续页的分配和回收使用怎样的算法? 20. 任意大小内存块的分配和释放要怎么处理?有没有什么会要求非常大块的对齐(ARM的一级页表你别跑),怎么办? 21. 虚拟地址空间怎么管理?用户空间的和内核自己的虚拟地址空间管理方案可不一样的。

22. 中断和出错该怎么处理?向量表怎么搞?中断路由怎么设置? 23. 系统调用使用怎样的格式?中断信息获取之类的杂务该怎么做? 24. 上下文保存和恢复应该怎么做?保存哪些内容? 25. 各种驱动程序怎样部署和运行?静态携带还是动态注册?有没有打算做内核模块机制?怎么做?驱动的特权级要不要低于内核?怎么实现?驱动要不要参与未来的调度?和用户空间比有什么特别的? 26. 进程和线程打算怎样实现?依靠用户空间的库来调度还是像linux这样做线程和线程组?进程描述符长什么样? 27. 时钟怎么用?时钟比较器是共享的还是独享的? 28. 调度算法是怎样的?有没有什么好处坏处? 29. 自旋锁该怎么实现?有哪些使用要求? 30. 内核提供哪些同步机制?怎么实现? 31. 超过一个CPU的话,其他核心怎样唤醒?唤醒之后哪些初始化需要另做? 32. 各种系统调用内部该如何实现? 第五阶段:和用户态的配合 33. 怎样把提供的系统调用包成一个C库一类的东西? 34. 做哪些文件系统支持?内核要不要导出虚拟文件系统?控制台输入输出算不算文件? 第六阶段:可选内核组件 35. 管道、共享内存等IPC方案? 36. 动态挂载和卸载文件系统? 37. 前面提到过的内核模块? 38. kexec和kdump一类的机制? 39. ASLR?运行禁止?其他一些被动安全机制? 40. 随机数生成器? 41. 安全内存?处理器的加密解密部件? 42. 缺页和换页? 43. 区分一下用户?组?密码?shadow? 44. 文件权限?SUID/SGID? 45. 用户态的init差不多应该负担一些责任了? 46. 管理一下电源和频率?idle的时候做点节能? 47. 用文件/文件系统的方式和内核做一些交互? 48. 网络?路由?名称服务?防火墙? 49. 动态的设备管理?热插拔? 50. (我想不出更多了)来点图形界面?

如何编写操作系统?

操作系统使用C语言和汇编编写的,Windows,UNIX,Linux都是这样的。

绝大部分是C,极少情况使用汇编。

操作系统的编写需要与硬件厂商紧密配合,两者相辅相成。

操作系统的实现要对硬件作出假设,硬件的设计要对操作系统的使用做出假设。

所以开发操作系统很大的难度就是要和众多硬件设备供应商保持紧密的合作。

编写操作系统,和开发应用程序很大的不同是,他没有平台的库函数使用,很多时候是直接面向硬件,而且不是像应用程序是靠事件来驱动,而是靠中端机制来促使操作系统运行希望采纳

自己动手编写操作系统 现代操作系统两本书哪个好

后者编写得更有现实意义,能叫好叫坐的。

一方面内容应该涉及传统的操作系统诸如进程,线程,存储管理,文件系统,I/O死锁,接口设计,多媒体,性能权衡等;另一方面应该涉及有关操作系统设计的最新趋势,要突出关注比如Linux操作系统,Windows Vista操作系统、嵌入式操作系统、实时操作系统以及多媒体操作系统等。

祝你成功!

JustHost,最新高性价比超便宜俄罗斯CN2 VPS云服务器终身8折优惠,最低仅8元/月起,200Mbps带宽不限流量,五大机房自助自由切换,免费更换IP,俄罗斯cn2vps怎么样,justhost云服务器速度及综合性能详细测评报告

主机参考最新消息:JustHost怎么样?JustHost服务器好不好?JustHost好不好?JustHost是一家成立于2006年的俄罗斯服务器提供商,支持支付宝付款,服务器价格便宜,200Mbps大带宽不限流量,支持免费更换5次IP,支持控制面板自由切换机房,目前JustHost有俄罗斯5个机房可以自由切换选择,最重要的还是价格真的特别便宜,最低只需要87卢布/月,约8.5元/月起!just...

港云网络(¥1/月活动机器),香港CN2 4核4G 1元/月 美国CN2

港云网络官方网站商家简介港云网络成立于2016年,拥有IDC/ISP/云计算资质,是正规的IDC公司,我们采用优质硬件和网络,为客户提供高速、稳定的云计算服务。公司拥有一流的技术团队,提供7*24小时1对1售后服务,让您无后顾之忧。我们目前提供高防空间、云服务器、物理服务器,高防IP等众多产品,为您提供轻松上云、安全防护。点击进入港云网络官方网站港云网络中秋福利1元领【每人限量1台】,售完下架,活...

老薛主机VPS年付345元,活动进行时。

老薛主机,虽然是第一次分享这个商家的信息,但是这个商家实际上也有存在有一些年头。看到商家有在进行夏季促销,比如我们很多网友可能有需要的香港VPS主机季度及以上可以半价优惠,如果有在选择不同主机商的香港机房的可以看看老薛主机商家的香港VPS。如果没有记错的话,早年这个商家是主营个人网站虚拟主机业务的,还算不错在异常激烈的市场中生存到现在,应该算是在众多商家中早期积累到一定的用户群的,主打小众个人网站...

自己动手写操作系统为你推荐
错误代码王者荣耀出现错误代码怎么解决 错误代码解决方法介绍开发管理什么是项目管理组或资源的状态不是执行请求操作的正确状态提示 HTTP 错误 404 -文件或目录未找到。文件保护文件被写保护,怎么解除/查杀木马如何手动查杀木马java教程pdf谁能提供几本JAVA初级入门的电子书2g内存条电脑里面的2G内存是做什么用的无线存储手机wifi无线摄像头可以储存吗软件更新不可用我的手机系统更新时候出现您的设备已修改,软件更新不可用S3(sch-939d)ldap统一用户认证介绍H3CTE的H3CTE认证介绍
美国主机租用 双线主机租用 vps优惠码cnyvps 新秒杀 bandwagonhost pccw koss 香港新世界电讯 空间服务商 福建天翼加速 天互数据 有益网络 789电视网 lol台服官网 adroit 最好的qq空间 卡巴斯基免费试用 免费mysql数据库 ssl加速 小夜博客 更多