![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统实验
文章平均质量分 79
Qutter
主要用于整理本科期间的一些笔记(很多内容距离其被写作可能已经很久,请见谅)。有时也会发布一些工作中遇到的一些问题。
展开
-
操作系统实验九
本次实验完成了创建文件、注册块设备等操作,并利用老师提供的驱动程序完成了块设备的挂载。语言代码和实际操作的层面了解了驱动程序的实现方式,更深入的体会了。驱动程序的基本构成,体会驱动程序的设计思想。完成所有操作之后应当卸载相关的驱动程序和设备。驱动程序运行正常,文件创建及挂载的操作正确。使用命令拷贝当前位置下的一个文件到对应位置。能够将文件拷贝到对应的挂载点下。系统中“一切皆文件”的设计思想。,主设备号为42,次设备号为0。使用老师提供的驱动程序源文件。使用命令查看已经挂接的磁盘。建立设备块文件,名称为。原创 2024-01-16 10:48:06 · 427 阅读 · 0 评论 -
操作系统实验八
本次实验仅仅是在模板代码的基础上实现了一些最基本的功能,要完整的理解岁所有的代码,编写出更复杂的系统模块,还需要付出更多的时间来进行。本次实验实现了编写内核模块,并利用它实现增加文件、写入信息的功能。程序代码中的字符串写入了对应文件夹的对应位置,因此能够被读取文件的命令顺利读取出来.可以看到代码中的文字输出在控制台中,这是由于该模块将前文。文件的内核模块,进一步理解系统调用的相关知识。的文件,只读,读出的内容是读它的进程的情况。下的函数和功能实现有一定了解。的文件,读出加入其中的文件。原创 2024-01-16 10:47:16 · 474 阅读 · 0 评论 -
操作系统实验七
例如,内核必须知道进程的优先级,它是正在CPU上运行还是因某些事件被阻塞,给它分配什么样的地址空间,允许它访问哪个文件等等。为了对给定类型的进程(例如,在可运行状态的所有进程)进行有效的搜索,内核建立了几个进程链表。通过本次实验,实现了一个功能为显示当前进程、进程状态,进程数目的系统调用。因此,在实验中一定要认真阅读模板代码,弄清楚相关参数的含义和功能,多写代码、多次尝试、举一反三,才能顺利完成本次实验。设计模块遍历进程描述符链表,打印出系统的进程数目、当前进程,并尽量多地打印每个进程的信息。原创 2024-01-16 10:44:45 · 543 阅读 · 0 评论 -
操作系统实验六
的调度策略偏向实时进程(或者如某些资料所说的,偏向于面对用户的交互式进程)。调度策略每次都需要遍历所有进程,在切换进程频繁的场景下,进程的切换消耗了太多资源,进而导致。在进行代码分析时,可能会遇到大量的定义,结构,跳转与分支,应当充分借助相关工具(如。实时调度策略,先到先服务,除非有更高优先级任务或者主动放弃处理机,就一直运行。代码进行分析,并且在读懂代码实现的基础之上,尝试理解设计的思想和目的。对于不需要切换用户空间的进程(减小了进程切换的开销),给予奖励。对于分时进程,给予其最合适的时间片。原创 2024-01-16 10:44:01 · 902 阅读 · 0 评论 -
操作系统实验五
Linux模块(module)是一些可以作为独立程序来编译(使用适当的标志说明这是内核代码)的函数和数据类型的集合。在装载这些模块时,将它的代码链接到内核中。Linux模块可以单独编译成为目标代码,module是一个目标文件。它可以根据需要在系统启动后动态地加载到系统核心之中。Linux中大多数设备驱动程序或文件系统都作成的module。超级用户可以通过insmod和rmmod命令显示地将module载入核心或从核心中将它卸载。原创 2024-01-16 10:43:18 · 874 阅读 · 0 评论 -
操作系统实验四
实验本的操作步骤相对较多,设计多个文件,需要厘清每个步骤的操作内容以及作用,才能顺利的完成本次实验。最后要注意的是,在编译使用内和函数的C文件时要通知编译器把这些代码当作内和代码而不是普通的用户代码来编译,这可以通过向编译器传递。中定义的,这样当增加一个新的系统调用是,就必须在这个表中增加一个新的表项。这里涉及到一个问题——当然,如果你采用重新编译内核的方法,并不需要这样做——只要修改内核源码目录的。添加一个新的内核系统调用,具体完成某个你希望实现的功能。编写一个用户态的程序,验证你增加的系统调用。原创 2024-01-16 10:42:02 · 850 阅读 · 0 评论 -
操作系统实验三
时可能出现挂载后虚拟机软件崩溃的情况,此时可以尝试重启虚拟机相关服务后重新挂载。实验共分为四部分:编译前准备->编译新内核->运行新内核。本次实验的使用的源文件均使用主机下载完成后使用U盘拷贝至。版本的内核,并将其加入启动菜单中、设为新的启动内核。在前述步骤正确完成后重启虚拟机,即可使用新内核启动。,此时需要使用命令查看U盘设备的名称,注意。命令默认状态下不可用,在使用前需要将其加入。将新编译完成的模块放在系统模块安装目录。服务存在问题,将其启动或重新启动即可。本次实验的主要内容是编译一个新版本的。原创 2024-01-16 10:40:51 · 364 阅读 · 0 评论 -
操作系统实验二
首先定义三个宏保存一天、一小时、一分钟等价秒数(其实按照C的编写要求更应该使用。目录,在终端上键入ls命令,察看该目录下的内容,同时察看每个文件的读写权限。目录下,在用户态下进行编程,使用文件指针读取文件即可查看相关的文件信息。首先编写主函数,建立程序的基本框架,将实现功能的函数放在头文件。编写一个程序,用来获得内核参数(任意的参数均可)。编写一个程序,用来修改内核参数(任意的参数均可)。编写程序以及如何调用编译器对编写的程序进行编译。执行程序,在之后附上命令,查看。所使用的Linux的版本。原创 2024-01-08 21:00:35 · 934 阅读 · 0 评论 -
操作系统实验一
相较于直接在实体设备上安装其他操作系统的引导程序,使用虚拟机的形式显然更加快捷和方便。不仅安装方便,而且可以同时支持打开多个虚拟机,有效的提升了工作效率。当然,使用虚拟机运行会带来一定的性能损失。虚拟机相关设置:虚拟机磁盘大小(默认为8GB,设定为10GB),虚拟机内存设置为512MB,使用1个CPU核心,如果使用传统的文件进行安装,需要使用3个不同的。文件,因此需要在虚拟机设别中添加三个“CD”,特别注意的是多个CD存在创建顺序,需要和安装系统时的。,虚拟机操作系统大类为Linux,使用的发行版为。原创 2024-01-08 20:59:55 · 475 阅读 · 0 评论