Tips

  1. Develop, test, debug and bugfix as much code outside the OS being written as possible. Make this code working under the OS in which you normally work on your PC (DOS, Windows, Linux, whatever). It will make your life much more easier.
  2. For every module you do, make at least a small test program. Run tests to ensure correct work of your code.
  3. Split big pieces of code and big tasks/problems into smaller ones. I mean it! Attack them separately from each other. First, make these smaller parts work. Then put everything together and correct any remaining interoperability problems. If you do not do so, you’ll fail because of being unable to locate a bug, isolate the erroneous portion of the code from the rest.
  4. If the code being developed is still big and complicated by numerous condition checks (if-then-elses, switches, etc), make use of the state machine concept. It often helps. It will help you to do practically any kind of parsing and implement various data/control protocols.
  5. In the code, check error conditions, don’t let the errors accumulate and propagate further than allowed, catch them and report of them by say logging. If you don’t do it, your system will most likely have hidden holes bigger and severer than in famous commercial OSes.
  6. Don’t underestimate the power of such tools as a pen(cil) and paper. Don’t rush into coding something complicated. First, analyze it on paper. Draw pictures, diagrams, solve equations (you’ll need surely to solve equations in OS dev), etc. Make the solution to your complicated problem clear with all the illustrative means you can have. Keep these papers along with the other project documentation. If you have an idea, you can always implement it in code and have a product. If you only have some unfamiliar/forgotten, unreadable and probably incorrect code, you won’t make a product out of it. Keep the solutions. You can even photograph your papers and put it under source control! :)
  7. Structure and comment your code to make it possible to maintain in future by you and others. Even the primary developer can forget what and why (s)he did in the code. Don’t make it happen. Document the code by outlining the algorithm behind it and keeping this document along with the code.
  8. Read documentation (on hardware, on algorithms, on everything) carefully. Reread it, if you don’t get it. Really do it. Don’t give up. Try finding docs that explain the same things but easier. Discuss things on the Internet. But don’t expect anybody doing your work (especially homework assignment :) as nobody is obligated to help you with everything and in unlimited amount.
  9. Use some version control software (like CVS, MS Visual Source Safe, etc) to keep track of the previous versions and development history. This will help you to roll back or find a new bug that wasn’t there in some of the previous versions of the code.
  10. Use PC emulators (such as Bochs, VMWare, Virtual PC, etc) to avoid unnecessary hard disk data damages and simplify testing (if you run your code on a real PC, the PC is hardly useful when it’s busy running your code, whereas with emulated PC you can do some additional work in parallel to booting and running your OS).
  11. Make use of the map files generated by the linker. It will help you to see incorrect code/data placement, wrong addresses, right addresses, function addresses, etc. It will also help you to find a place of exception inside your OS by the address of offending CPU instruction.
  12. Make use of disassemblers to check that the addresses used in the instructions (in the OS image file) are OK. Many newbies have problems with addresses when setting up protected mode. I’m happily using HIEW and BIEW as file viewers with built-in hex editor and x86 disassembler.
  13. Don’t burn the bridges! E.g. don’t put the code that switches the x86 CPU to the protected mode inside a small boot sector. Don’t or you will loose all disk I/O and won’t be able to load the OS or kernel (disk I/O isn’t possible in the x86 protected mode, this mode is not supported by the BIOS that offers disk and other I/O functions). The same applies to the file system. If you don’t want to waste too much time, don’t reinvent the wheel. Make a driver for the existing commercial file system (like MS FAT12/16/32) and avoid all problems of transferring data to and from your OS.

 

There’s rationale for each and every item on the above list. Try to understand it. It all will only help you to get done.

 

 

From :Alexei A. Frounze

(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法和数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值