![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 88
究极无敌暴龙战神X
这个作者很懒,什么都没留下…
展开
-
操作系统-实验四、内核模块编写
可接受LICENSE:"GPL", "GPL v2", "GPL and additional rights", "Dual BSD/GPL", "Dual MPL/GPL", "Proprietary"。本次实验和实验3相似,进行的比较顺利,并无出现太多问题,唯一需要注意的就是helloworld.c和Makefile文件的编写,不要出现错误,make需要在对应的文件夹中执行。当通过rmmod命令卸载某模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能。本身对应模块内部的全局变量。原创 2024-01-14 15:35:05 · 1139 阅读 · 0 评论 -
操作系统-实验三、虚拟内存管理
当CPU遇见缺页时会触发一个缺页异常,缺页异常将控制权转向操作系统内核,然后调用内核中的缺页异常处理程序,该程序会选择一个牺牲页,如果牺牲页已被修改过,内核会先将它复制回硬盘(采用写回机制而不是直写也是为了尽量减少对硬盘的访问次数),然后再把该虚拟页覆盖到牺牲页的位置。当缺页异常发生时,才将页面换入到内存的策略称为按需页面调度,所有现代操作系统基本都使用的是按需页面调度的策略。统计缺页次数可以帮助系统管理员或开发人员确定系统的瓶颈所在,进而优化系统的内存管理策略,提高系统的性能和可靠性。原创 2024-01-14 15:34:15 · 1583 阅读 · 0 评论 -
操作系统-实验二、系统调用 (vim命令的使用)
每个系统调用都有一个唯一的系统调用号,接下来就需要在内核的系统调用表中为新的系统调用分配一个未使用的号码,这通常需要修改内核源代码。在修改内核源代码后,需要编译和安装修改后的内核。因此在进行任何内核修改之前,有必要充分了解其实现过程,通过本次的实验,我对内核编译法有了较为深入的理解。然后编写系统调用的具体实现,即在内核模块的源代码文件中,编写要添加的系统调用的具体实现代码。在系统调用表(其最前面的属性是id)中添加一个id 为335的系统调用号,添加后保存syscall 64.tbl文件,如图所示。原创 2024-01-14 15:33:19 · 1177 阅读 · 0 评论 -
操作系统-实验一、编译Linux内核
(1)Linux是以用户和组来管理权限的,如果你使用的账户权限不够,那么有些动作你是做不了的,例如重启服务器(reboot 命令)。这时候就需要sudo命令了,sudo的全称为:super user do,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。可以考虑使用多线程编译来加快编译速度,例如使用make -j<N>命令,其中<N>是你系统上可用的处理器核心数量。5、编译完成后,你可以运行 make install 命令来安装内核,将编译好的内核安装到系统中。原创 2024-01-14 15:32:15 · 2554 阅读 · 0 评论