操作系统实验报告心得体会

1-1:通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。  1-2:在实验过程中,使用VI编辑器虽然不能像window操作系统那样对文本进行熟练度编辑,但是,VI编辑器使用命令来操作,将可以锻炼我的记忆力、对键盘的熟练读,还能帮助我们尽快适应linux操作系统的操作。  1-3:原本对liunx下的编译和调试环境不是很熟悉,但通过这次的实验,让我熟悉了linux下的编译器和调试器的使用。  实验中使用了gcc命令,gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析。  当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是链接。在链接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的库中链接到合适的地方。  1-4:API接口属于一种操作系统或。通过实验,我了解了Windows的这种机制,加深了对API函数的理解。  2-1:通过本次实验了解了一些常用进程管理命令的使用,例如ps、kill命令,了解到换个kill与killall的不同,对于linux操作系统下的进程的学习打下基础,更好的学习进程。  2-2:本次实验是熟悉掌握Linux系统常用进程创建与管理的系统调用,linux下使用fork()创建子进程,与windows下CreateProcess()创建子进程完全不同,通过比较小组更好的理解和掌握了进程的创建,对于进程的管理的理解也有了清晰地认识。  实验中遇到fork函数返回2次结果,经过分析结果如下:  由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。  调用fork之后,数据、堆栈有两份,代码仍然为一份但是这个代码段成为两个进程的共享代码段都从fork函数中返回,箭头表示各自的执行处。当父子进程有一个想要修改数据或者堆栈时,两个进程真正分裂。  2-3:通过这次实验对熟悉掌握和了解windows平台常用进线程控制API,有了更深刻的认识,认识到API函数对windows编程的重要性,了解进程线程在内存中的执行,特别认识互斥体Mutex对象,API函数一定要多用,才能记得。  3-1:该程序的输入变量具有限制,若输入除0和1的数据,则将视为0处理.改进的方法为修改if语句中的条件为:1,即只要输入为非零,则有效。即逻辑表达式的值为真。(在逻辑数学里非零则表示为真!)  为了能较好的实现进程的同步,可以另外设一个标志量,标志临界资源是否正被访问,当a,b,c  中的其一访问临界资源时,其余2个将进行自我阻塞,当该进程执行完毕后,须将被阻塞的进程唤醒。  3-2:通过这次实验,让我学习到了简单进程间的通信。通过自己动手做实验,然后再电脑上运行得出结果,我发现比课堂上更容易掌握进程通信的实现机制,以及系统调用的命令  4-1:通过此次实验我进一步的了解了程序的局部性原理,在这个实验中我们利用老师提供的代码来更深入的认识到数组在存储器中是按行存储的,如果对数组按行进行清零处理的比按列清零的缺页中断次数少很多,故按列清零的运行时间更长。  通过实现数组“清零”这个模拟程序的编写和实现,体会到了访问数据的局部性,并且运用局部性原理这个特点,并且和虚拟存储技术联系到一起,虚拟存储技术就用到局部性原理,因为CPU访问局部程序数据,所以只需要将程序部分存入内存。这次实验使我对虚拟存储技术有了进一步了解和学习。  4-2:通过此次实验,我进一步理解了三种页面置换算法。最佳置换算法是一种理想化的算法,它具有最好的性能,但实际上却很难与实现。先进先出的算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰,该算法实现简单。最近最久未使用的页面置换算法,是根据页面调入内存后的使用情况进行决策的,LRU置换算法虽然是一种比较好的算法,但要求系统有较多的支持硬件,如:寄存器或栈。  4-3:通过此次实验我进一步的了解了实际系统内存分配原则,当系统为进程分配的物理块数少于此值时,进程将无法运行。  通过本次实验,我认识到了Windows操作系统下的内存结构和虚拟内存管理方式,以及各种系统API函数的功能;同时我也认识到了虚拟内存在整个操作系统中的重要地位,通过虚拟存储解决了计算机存储量的问题。  5-1:通过对载入和卸载文件系统的操作,可以使我对文

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐