《自己动手写操作系统》开发环境配置心得
自己动手写一个简易操作系统(基于51单片机)

自己动手写一个简易操作系统(基于51单片机)背景介绍大一学了51单片机,对于单片机的一些常用外设有了一定的了解。
之后,大家都在说当前最流行的单片机是stm32,所以我抽出了暑假的时间的时间学习了stm32单片机,刚开始学的时候真的很痛苦,在坚持了一个星期之后,我慢慢找到了自信,stm32单片机实际上和51是一样的,只是需要配置的寄存器多了一点。
在刚开始学的时候,经常在配置的时候无法配置完全,导致无法得到预期的实验效果,但是实际上,大家没必要过分纠结于配置,完全可以直接参考别人使用该功能的配置方式。
我们应该将心思放在功能的开发上,而不是纠结于前期简单的配置。
在熟悉使用stm32之后,开始接触操作系统ucos,过程中一直觉得自己似懂非懂,所以我在想为什么我自己不利用51写一个简易操作系统,来加深自己的理解。
初期写出的操作系统不用考虑通信等高级功能,只需要写出可以调度多个任务的操作系统即可,下面给大家介绍一下我自己写的操作系统(写的不太好,仅供大家参考)。
系统实现实现简易操作系统,主要需要实现三个函数:1.创建任务函数(将定义的任务的执行入口保存起来,供调度使用)2.任务延时函数(每一个任务执行后,都需要加入延时函数,否则低优先级的任务没有机会执行)3.中断调度函数(提供时间片调度)1 创建任务函数介绍int OSTaskCreate(unsigned int Task, unsigned char* pStack, unsigned char TaskID){unsigned char i = 0, j = 0;*pStack++ = Task & 0xFF; //低八位地址(51单片机入栈向上,出栈向下)*pStack = Task >> 8; //高八位地址os_enter_critical();TaskCB[TaskID].OSTaskStackButtom = (unsigned char)pStack + 13;TaskCB[TaskID].OSWaitTick = 0;TASK_READY(TaskID); //将该优先级的任务在全局变量中标记为就绪os_exit_critical();return 0;}入口参数:unsigned int Task ---- 任务函数的入口地址unsigned char* pStack ---- 任务函数的堆栈,主要用来保存现场参数unsigned char TaskID ----- 任务优先级2 任务延时函数void OSTimeDly(unsigned int time){TaskCB[CurrentTaskID].OSWaitTick = time; //将任务的延时时间赋值给任务控制块task_sw(); //任务调度}static void task_sw(){os_enter_critical();TASK_BLOCK(CurrentTaskID); //将当前任务的就绪状态取消#pragma asm //将现场的关键参数存入堆栈PUSH ACCPUSH BPUSH DPHPUSH DPLPUSH PSWMOV PSW,#00HPUSH AR0PUSH AR1PUSH AR2PUSH AR3PUSH AR4PUSH AR5PUSH AR6PUSH AR7#pragma endasmTaskCB[CurrentTaskID].OSTaskStackButtom = SP ; //将当前任务的堆栈位置保存,用于下次恢复该任务CurrentTaskID = Task_High(); //找出处于就绪态的最高优先级的任务SP = TaskCB[CurrentTaskID].OSTaskStackButtom;#pragma asmPOP AR7POP AR6POP AR5POP AR4POP AR3POP AR2POP AR1POP AR0POP PSWPOP DPLPOP DPHPOP ACC#pragma endasmos_exit_critical(); //离开时会把SP的当前位置的值送入PC指针,所以最高优先级的任务得以运行}3 中断调度函数void TF0_isr() interrupt 1{TH0 = 56320/256;TL0 = 56320%256;TaskCB[CurrentTaskID].OSTaskStackButtom = SP; //被中断的任务的现场已经压入堆栈,所以只需保存SPCurrentTaskID = T ask_Ready_High(); //取出就绪中优先级最高的任务SP = TaskCB[CurrentTaskID].OSTaskStackButtom;#pragma asmPOP AR7POP AR6POP AR5POP AR4POP AR3POP AR2POP AR1POP AR0POP PSWPOP DPLPOP DPHPOP BPOP ACC#pragma endasm}总结:以上三个函数就是一个简易操作系统的关键函数,大家可以自己动手实现一下。
操作系统实验心得体会

操作系统实验心得体会操作系统是计算机科学专业中一门极其重要的课程,涉及到如何管理计算机中的资源和运行进程,是计算机系统的核心技术之一。
而操作系统实验则是该课程中最基础的实践环节,本文将介绍我在学习操作系统实验中所得到的一些体会和经验教训。
一、正确的实验态度操作系统实验中的每一个任务都需要花费大量的时间和精力去思考和实践。
在这个过程中,我发现一个正确的实验态度是非常关键的。
首先,我们需要保持谦虚和耐心。
尽管我们有一定的编程经验和计算机知识,但操作系统实验中需要面对的问题往往十分复杂,需要耐心分析和解决。
其次,我们还需要有刨根问底的精神和崇尚真理的态度。
不要因为一个小问题就草率作出结论,应该深入探究问题本质。
最后,我们需要开放和求知,纵观大局并且学会思考。
对于实验中的一个问题,我们需要梳理思路,理清思维线路,从整个系统的角度去考虑,才能获得更深层次的理解和感悟。
二、代码优化与调试技巧操作系统实验中需要我们动手实现各种算法和机制。
如何编写高效的代码和有效的调试技巧是我们需要掌握的关键技能。
在编写代码时,我们需要注重代码的优化,避免无效操作和不必要的计算,提高代码运行效率。
在调试过程中,我们需要使用各种调试器和工具,如gdb、strace、valgrind等,帮助我们定位错误和发现潜在问题。
同时,我们也需要学会阅读代码和调试信息,深入理解程序执行过程,才能找到问题的根源。
三、经验积累与知识扩展操作系统实验是一门实践性很强的课程,需要我们在实践中不断积累经验和知识。
首先,我们需要尽可能多地进行实验,尽量从不同的方面去思考问题,寻找解决方案。
其次,我们需要多阅读相关技术文档和书籍,如《操作系统实现》、《Unix环境高级编程》等,扩展我们的知识面和理解深度。
最后,我们也需要积极参加相关技术讨论和交流活动,如技术论坛、技术大会等,与同行交流和学习,共同进步。
四、团队合作与沟通技能在操作系统实验中,有很多任务需要团队合作完成。
心得体会-操作系统实验心得 精品

心得体味-操作系统实验心得精品操作系统实验是计算机专业学生必修课程之一,通过实验学习操作系统的原理和基本操作,提高学生对操作系统的理解和应用能力。
在进行操作系统实验的过程中,我积累了一些珍贵的心得体味,现在分享给大家。
一、实验准备1.1 熟悉实验内容:在进行操作系统实验之前,首先要子细阅读实验指导书,了解实验的内容和要求,明确实验的目标和步骤。
1.2 熟悉实验环境:在进行操作系统实验时,要熟悉实验环境,包括操作系统版本、软件工具等,确保实验顺利进行。
1.3 准备实验材料:在进行操作系统实验前,要准备好实验所需的材料,如实验报告模板、实验数据记录表等,以便及时记录实验结果。
二、实验过程2.1 子细操作:在进行操作系统实验时,要子细操作每一个步骤,确保实验过程准确无误,避免浮现错误。
2.2 多次实验:为了加深对操作系统实验的理解,可以多次进行实验,熟悉实验内容和操作步骤,提高实验技能。
2.3 注意安全:在进行操作系统实验时,要注意安全问题,避免操作失误导致数据丢失或者系统崩溃,保护实验环境和数据安全。
三、实验总结3.1 及时记录:在进行操作系统实验时,要及时记录实验过程和结果,以便后期总结和复习,加深对操作系统的理解。
3.2 分析问题:在实验过程中遇到问题时,要及时分析原因并解决,提高问题解决能力,加深对操作系统原理的理解。
3.3 总结经验:在完成操作系统实验后,要总结经验教训,找出不足之处并改进,为今后的实验和学习提供参考。
四、实验感悟4.1 培养耐心:在进行操作系统实验时,要有耐心和毅力,面对实验中的难点和挑战,保持乐观的心态,坚持不懈地解决问题。
4.2 提高技能:通过操作系统实验,可以提高操作系统的应用能力和技术水平,培养解决问题的能力,为今后的学习和工作打下良好基础。
4.3 增强信心:通过不断的实验学习,可以增强对操作系统的信心和信念,相信自己可以掌握更多的知识和技能,取得更好的成绩。
五、实验展望5.1 拓展应用:通过操作系统实验,可以拓展操作系统的应用领域,如云计算、大数据等,提高操作系统的应用价值和实用性。
心得体会-操作系统实验心得 精品

心得体会-操作系统实验心得精品心得体会-操作系统实验心得引言概述:操作系统实验是计算机科学与技术专业的重要实践环节,通过实验的方式加深对操作系统原理和实践的理解。
在这篇文章中,我将分享我在操作系统实验中的心得体会。
文章结构采取引言概述+正文内容方式,正文内容分五个部分,分割部分按一、二、三、四、五这样排序,每个部分分3个小点详细阐述,小点按1.1、1.2、1.3这样排序,内容尽量详细且专业。
一、实验前的准备工作1.1 熟悉实验要求和实验环境在进行操作系统实验之前,我们首先要仔细阅读实验要求,了解实验的目标和要求。
同时,还要熟悉实验环境,包括操作系统的版本、编程语言和相关工具的使用方法等。
1.2 学习操作系统的基本概念和原理操作系统实验需要我们对操作系统的基本概念和原理有一定的了解。
在实验前,我们应该主动学习相关的教材和课件,掌握操作系统的基本原理,如进程管理、内存管理、文件系统等。
1.3 组织学习小组,共同讨论和学习在实验前,我们可以组织学习小组,共同学习和讨论。
通过小组的合作,可以相互帮助和解决问题,提高实验的效果。
同时,还可以互相分享学习资源和心得体会,共同进步。
二、实验过程中的问题与解决方法2.1 理解实验要求和设计思路在进行操作系统实验时,我们可能会遇到一些难以理解的实验要求和设计思路。
这时,我们可以通过查阅相关资料、请教老师或同学等方式,来帮助我们理解和解决问题。
2.2 学会使用调试工具和技巧在实验过程中,我们可能会遇到程序运行出错或逻辑错误等问题。
这时,我们应该学会使用调试工具和技巧,如断点调试、日志输出等,来帮助我们定位和解决问题。
2.3 善于利用网络资源和社区支持在实验过程中,我们可以善于利用网络资源和社区支持。
通过搜索相关问题的解决方案、参与技术论坛等方式,可以获得更多的帮助和支持,解决实验中的问题。
三、实验中的收获与体会3.1 加深对操作系统原理的理解通过操作系统实验,我们可以将书本知识与实际操作相结合,加深对操作系统原理的理解。
心得体会-操作系统实验心得 精品

心得体会-操作系统实验心得精品操作系统是计算机科学中的重要课程之一,通过实验学习可以更好地理解操作系统的原理和工作机制。
在进行操作系统实验的过程中,我积累了一些宝贵的心得体会,现在我将这些心得整理成文,与大家分享。
一、实验前的准备工作1.1 理清实验目的和要求在开始实验之前,首先要仔细阅读实验指导书,了解实验的目的和要求。
只有明确实验的目的,才能有针对性地进行实验操作。
1.2 熟悉实验环境和工具在进行操作系统实验时,需要使用一些特定的工具和环境,如虚拟机软件、Linux系统等。
因此,在实验前要确保对这些工具和环境有一定的了解和熟悉,以免在实验过程中遇到困难。
1.3 制定实验计划和时间安排在进行操作系统实验时,通常会有一定的时间限制,因此在实验前要制定一个详细的实验计划和时间安排,合理安排时间,确保实验能够顺利进行。
二、实验过程中的注意事项2.1 仔细阅读实验指导书在进行操作系统实验时,实验指导书是必不可少的参考资料。
在实验过程中,要仔细阅读实验指导书,按照指导书上的步骤逐步进行实验操作。
2.2 注意实验数据的记录和保存在进行操作系统实验时,实验数据的记录和保存非常重要。
在实验过程中,要及时记录实验数据,并保存好,以便后续的分析和总结。
2.3 多与同学交流和讨论在进行操作系统实验时,可以与同学们进行交流和讨论,共同探讨实验中遇到的问题和困难,互相帮助,共同进步。
三、实验后的总结和反思3.1 总结实验过程中的经验和教训在完成操作系统实验后,要及时总结实验过程中的经验和教训,找出问题所在,为今后的实验做好准备。
3.2 分析实验结果和数据在完成操作系统实验后,要对实验结果和数据进行仔细分析,找出其中的规律和特点,加深对操作系统原理的理解。
3.3 提出改进建议和建议在完成操作系统实验后,可以根据实验过程中的体会和经验,提出一些建设性的改进建议和建议,为今后的实验提供参考。
四、实验中的收获和体会4.1 加深对操作系统原理的理解通过进行操作系统实验,我加深了对操作系统原理的理解,对操作系统的工作机制有了更深入的认识。
自己动手制作操作系统

自己动手写操作系统(从引导到启动保护模式)自由软件社区是一个充满自由和梦想的地方,在10余年的时间里它创造了一个又一个奇迹。
然而,这些奇迹的创造者不只是Stallman,也不只是Linus Torvalds,而是活跃在世界各地的不计其数的开发人员。
在使用各种功能强大的自由软件时,我总会对其开发者充满崇敬之情,期盼有朝一日自己也能成为他们中的一员。
很多对自由社区充满向往之情的人,虽然也想努力融身于其中,但又不知该怎么做。
那么,就请与我们一起从编写一个简单的操作系统开始吧!我们要做的事情有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对C语言也一知半解,能写操作系统吗?答案是没问题。
我将带大家一步一步完成自己的操作系统。
当然如果学一学上述内容再好不过。
首先要明确处理器(也就是CPU)控制着计算机。
对PC而言,启动的时候,CPU都处在实模式状态,相当于只是一个Intel 8086处理器。
也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能是8086级别。
从这一点上来讲,可以使用一些软件把处理器转换到著名的保护模式。
只有这样,我们才可以充分利用处理器的强大功能。
编写操作系统开始是对BIOS控制,取出存储在ROM里的程序。
BIOS是用来执行POST(Power On Self Test,自检)的。
自检是检查计算机的完整性(比如外设是否工作正常、键盘是否连接等)。
这一切完成以后,你就会听到PC喇叭发出一声清脆的响声。
如果一切正常,BIOS就会选择一个启动设备,并且读取该设备的第一扇区(即启动扇区),然后控制过程就会转移到指定位置。
启动设备可能是一个软盘、光盘、硬盘,或者其它所选择的设备。
在此我们把软盘作为启动设备。
如果我们已经在软盘的启动扇区里写了一些代码,这时它就被执行。
因此,我们的目的很明确,就是往软盘的启动扇区写一些程序。
首先使用8086汇编来写一个小程序,然后将其拷贝至软盘的启动扇区。
操作系统实验心得

操作系统实验心得操作系统实验心得⒈实验概述在本次操作系统实验中,我们主要学习和掌握了操作系统的基本原理和相关应用。
通过实验,我们深入理解了操作系统的各个模块以及其相互之间的关系,并通过编程实践加深了对操作系统的理论知识的理解和掌握。
⒉实验目的本次实验的主要目的是:-了解操作系统的基本概念和相关原理。
-掌握操作系统的进程管理、内存管理和文件系统管理的基本方法和技术。
-熟悉操作系统的应用程序编写和调试过程。
-培养团队合作和项目管理能力。
⒊实验环境在实验过程中,我们使用了以下实验环境:-操作系统:Windows/Linux/macOS-开发工具:Visual Studio Code/Code::Blocks/Dev C++/Xcode-编程语言:C/C++⒋实验内容本次实验的具体内容包括以下模块的实现和应用:⑴进程管理-进程创建与终止-进程调度算法-进程同步与互斥⑵内存管理-内存分配与回收-虚拟内存管理⑶文件系统管理-文件的创建与删除-文件的读写操作-文件的共享与保护⑷实验报告撰写-对实验过程和实验结果进行系统性总结和归纳-分析实验中遇到的问题和解决方法-提出进一步的改进和优化方案⒌实验结果与分析在实验过程中,我们根据实验要求完成了各个模块的实现,并经过调试和测试,得出了如下实验结果:-进程管理模块运行正常,能够实现进程的创建、终止和调度。
-内存管理模块能够进行内存的分配和回收,虚拟内存管理工作良好。
-文件系统管理模块实现了文件的创建、读写和删除,并能够进行共享和保护。
-实验报告中对实验过程和结果进行了详细分析和总结。
⒍实验中遇到的问题与解决方法在实验过程中,我们遇到了一些问题,并通过以下方法进行了解决:-问题1:进程同步和互斥的实现困难。
-解决方法:采用信号量机制实现进程同步和互斥。
-问题2:内存管理中的分配与回收算法不精确。
-解决方法:优化算法,考虑内存碎片问题。
⒎实验总结与展望通过本次操作系统实验,我们对操作系统的原理和应用有了更深入的理解和掌握。
操作系统实践心得体会

一、前言操作系统是计算机科学的基础课程之一,也是计算机专业学生必须掌握的核心课程。
通过操作系统课程的学习,我不仅掌握了操作系统的基本原理和操作方法,还提高了自己的实践能力。
以下是我在操作系统实践过程中的心得体会。
二、实践过程1.实验准备在实践过程中,我首先认真阅读了实验指导书,了解了实验的目的、步骤和注意事项。
然后,我提前预习了实验中涉及到的操作系统理论知识,为实验操作打下坚实的基础。
2.实验操作(1)实验一:进程管理在实验一中,我学习了进程的基本概念、进程状态转换、进程同步与互斥等内容。
通过实际操作,我掌握了进程的创建、调度、同步与互斥方法。
实验过程中,我学会了使用操作系统提供的API函数实现进程的创建、挂起、恢复和终止等功能。
(2)实验二:内存管理在实验二中,我学习了内存的基本概念、内存分配与回收、虚拟内存管理等内容。
通过实验,我了解了操作系统如何实现内存的动态分配与回收,以及虚拟内存的原理。
实验过程中,我学会了使用操作系统提供的API函数实现内存的分配、释放和交换等功能。
(3)实验三:文件系统在实验三中,我学习了文件系统的基本概念、文件组织形式、磁盘空间分配策略等内容。
通过实验,我了解了文件系统的实现原理,以及磁盘空间的有效利用。
实验过程中,我学会了使用操作系统提供的API函数实现文件的创建、删除、读写和目录操作等功能。
(4)实验四:设备管理在实验四中,我学习了设备管理的基本概念、设备驱动程序、中断处理等内容。
通过实验,我了解了设备管理的实现原理,以及中断处理机制。
实验过程中,我学会了使用操作系统提供的API函数实现设备的注册、分配和释放等功能。
三、心得体会1.理论与实践相结合在操作系统实践过程中,我深刻体会到理论与实践相结合的重要性。
通过实际操作,我对操作系统理论知识有了更加深入的理解,同时提高了自己的实践能力。
2.掌握操作系统的基本原理通过实践,我掌握了操作系统的基本原理,如进程管理、内存管理、文件系统和设备管理等方面的知识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《自己动手写操作系统》开发环境配置心得一开始我自己摸索,用VirtualPC2007和VirtualPC2004来安装PCDOS,但是都失败了。
在读了《Virtual PC中安装ms dos 6.22》一文后,最后还是老老实实地回到Virtual PC 5.2汉化版。
同时又有了自己一点心得。
1、5.2版本并没有DOS附加模块,我是从别的地方找到一个”Dos
Additions.vfd”。
这是一VPC虚拟软盘文件。
2、《Virtual PC中安装ms dos 6.22》原文如下(蓝色字迹,是我加注的): Virtual PC 中安装ms dos 6.22
在《自己动手写操作系统》中作者的平台是virtual pc 5.0,他使用这个虚拟机来作为开发平台,但是很不幸的是VirtualPC在推出5.2版本后就被Mirosoft给收购了,然后就发挥微软的霸道,让vpc只支持windows了.连dos都支持不好了.
注2:本人折腾vpc和vmware长达一天才整理出这篇文章,鉴于网上没有相关的资源,特意写出来供大家参考,转载时请保留本人的信息及网址,谢谢!
言归正传,我今天来就把自己研究vpc的心得来说一下:
首先,Virtual PC 5.2汉化版是最好的选择,Virtual 2007可以装dos,但是却不能共享文件夹(原因一会说).
1.安装MSdos 6.22
来这里下一个msdos6.22的镜像:[url]/bootdisk.htm[/url]
(可是我下载的时候却下载不了了,特附上(见附件1: MS-DOS6.22启动盘镜像))
现在请选择:Non-Windows Based Image Files W_ImageApp dos622c.zip
直接下载地址:[url]http://s9*******/bootdisk/622c.zip[/url]
下载后解压缩后是一个622c.img(这个是软盘镜像)
然后启动Virtual PC,新建一个PC,内存32m,硬盘50m,OK启动!
菜单 -> 软驱 -> 载入镜像选择622c.img
OK,引导系统,进入了dos.然后对硬盘分区
执行命令:fdisk 一路回车到底 (注意:2007里需要,5.2版本里不需要)
然后格式化c盘 format C: /s
然后传输系统文件 sys C: (要在A盘下进行)
然后拷贝软盘文件: copy a:\*.* c:\ (注意不要覆盖c盘已经存在的文件)
OK.菜单 -> 软驱 ->释放镜像"622c.img"
重启,这样你就进了dos环境.
2.安装共享文件夹模块.
注意:2007中不再支持dos,因此不提供dos下的附加模块,我本来想用VPC5.2版本中的dos模块代替,可是运行fshare.exe (提供文件夹共享的程序)时提示说:fshare.exe没有运行在Connectix公司的产品中,无法运行,导致VPC2007中始终无法安装上 DOS附加模块,而不能共享文件夹.
VPC 5.2汉化版的设置方法:
重启进入dos后,菜单 -> 软驱 ->载入镜像选择dos附加模块 (这个文件我已放到
[url][/url]的公开下载目录中文件名是dosAdditions.7z)
(也下载不了,见附件2: DOS附加模块Dos Additions.vfd)
加载后,切换到软盘
执行命令:c:\>a:
执行命令:a:\>dosadd
然后就可以看到Successful了.呵呵.
然后就是重启,进入dos系统后, 菜单 -> 编辑 ->属性设置这时共享文件夹就可以添加了.添加一个,设置成盘符Y:
然后执行命令 Y:
就可以看到共享的文件了.
VMware中只需要第一步,就能设置共享文件夹了.不用安装附加模块!
注:
-[if !supportLists]-->1、<!--[endif]-->安装DOSAdditions时,要在DOS启动后才去捕获Dos Additions.vfd.否则系统将从软盘启动,而软盘又不是启动盘,从而无法进入DOS.
-[if !supportLists]-->2、<!--[endif]-->Virtual PC 5.2汉化版容易下载,就不作为附件了。
但是也许,注册码对你会有用。
Connectix Virtual PC 5.2 汉化版注册码:S/N:ROOR-2865-8473-2663-8275
-[if !supportLists]-->3、<!--[endif]-->关于VirtualPC5.2无法在PAE(物理地址扩展)模式下运行。
出现这个问题的原因是virtualpc不支持64位模式,你只要改一下C盘下的BOOT.INI文件就ok 了。
就是将/noexecute=optin改为 /Execute=OptOut 然后保存重启。
具体原因见
[url]/u/15262/showart_483241.html[/url]。