高级操作系统
文章平均质量分 91
997and
这个作者很懒,什么都没留下…
展开
-
高级OS(十八) - 添加一个系统调用
高级OS(十八) - 添加一个系统调用一.题目二.解答1.运行结果如下图:2.在第12行执行fork()时系统进入到什么态?3.结合视频中fork执行流的讲解,分析getpid()的执行流4.fork()的执行对你有什么启发?5.完成提高篇中添加一个系统,并截图(可以用模块的形式,也可以用编译内核的形式),说明遇到的问题,解决方法,收获体会(各2分)6.关于系统调用,自己提出2个问题并回答(1)中断、异常和系统调用之间的关系?(2)为什么要系统调用一.题目实验楼的实验8,首先从用户态初步感受系统调用fo原创 2022-03-11 11:40:29 · 688 阅读 · 1 评论 -
高级OS(十七) - 中断机制(一)
高级OS(十七) - 中断机制(一)一.题目二.解答1.什么是中断?2.中断机制都有哪些分类?3.为什么引入中断?何时响应中断呢?4.中断信号有什么作用呢?5.中断机制的划分?6.中断门,陷阱门,系统门一.题目提前预习学堂在线视频5.1和5.2,提交文档,两人一组,每组至少提出6个问题对视频内容进行讨论的讨论稿。二.解答1.什么是中断?中断是操作系统的脉搏,是并发处理的基础,通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断是CPU对原创 2022-03-11 11:34:33 · 554 阅读 · 0 评论 -
高级OS(十六) - 中断机制(二)
高级OS(十六) - 中断机制(二)一.题目二.解答1.小任务(tasklet)机制及数据结构了解2.什么时候使用哪种中断处理机制?3.Linux对时钟中断的初始化有什么流程?4.do_it_virt()函数的作用是什么?5.do_it_prof()函数的作用是什么?6.time_init()函数对内核时钟中断机制的初始化是怎么样的?一.题目提前预习学堂在线视频5.3和5.4,并由本组同学指定2名同学进行讲解,讲解后,当堂在讨论区提出6个问题,2个人一组提出6个问题,并回答,二.解答1.小任务(ta原创 2022-03-11 11:29:39 · 178 阅读 · 0 评论 -
高级OS(十五) - 中断机制以及中断上下部运行和内核代码分析
高级OS(十五) - 中断机制以及中断上下部运行和内核代码分析一.题目二.解答1.浅析linux中断top/bottom2.中断处理程序3.为什么中断上下文不能睡眠?4.简介中断的理解5.理解中断相关数据结构irq_chip6.初始化Chip相关的IRQ实验:一.题目根据书上的例子,以及视频55和5.6,编写带有中断上下部的中断模块。针对中断的引入,响应,处理机制,模型,中断的上下部分,以及时钟中断,提出至少6个问题,把本章内容穿起来,并用相关代码的分析来佐证(也就是对这些问题的回答不落于概念),让你原创 2022-03-11 11:23:49 · 1671 阅读 · 0 评论 -
高级OS(十四) - 编写字符设备驱动程序
高级OS(十四) - 编写字符设备驱动程序一.题目二.解答实验1.从应用程序的open(),read(),write()系统调用出发,说明如何陷入内核?2.分析3个file_operations()这个结构体中的成员含义3.应用程序如何对这个块设备进行读写,是通过ioctl还是其他方法?4.为什么要有主设备号和次设备号?5.驱动程序的注册和注销函数是做什么?6.simple_char_init方法的作用是什么?一.题目做实验楼的实验21(https://www.lanqiao.cn/courses/26原创 2022-03-11 11:02:24 · 891 阅读 · 0 评论 -
高级OS(十三) - 编写并分析简单的块设备驱动程序
高级OS(十三) - 编写并分析简单的块设备驱动程序一.题目二.解答实验:1.一个进程在某个磁盘文件上发出一个read()系统调用,内核对进程请求回应的一般步骤是?2.深入bio数据结构3.深入gendisk数据结构4.深入请求队列request_queue5.深入block_device数据结构6.块设备驱动程序和字符设备驱动程序的区别一.题目参考http://kerneltravel.net/blog/2020/io_sys_szp_no5/一文,调试其中的程序,从用户进程–>文件系统–>原创 2022-03-11 11:00:56 · 707 阅读 · 0 评论 -
高级OS(十二) - 一个文件系统的设计与实现
高级OS(十一) - 一个文件系统的设计与实现一、摘要二、引言三、概要设计四、详细设计4.1 注册退出模块4.2 注册模块4.3 自定义文件系统类型模块4.4 遍历文件系统模块4.5 kern_mount函数模块4.6 创建文件夹模块4.7 创建文件模块4.8 myfs_create_by_name()函数模块4.9 lookup_one_len()函数模块4.10 __lookup_hash()函数模块4.11 myfs_mkdir()函数模块4.12 myfs_mknod()函数模块4.13 myfs原创 2022-03-10 22:07:51 · 1263 阅读 · 1 评论 -
高级OS(十一) - 从inode看文件系统设计
高级OS(十一) - 从inode看文件系统设计一.题目二.解答一.题目实验楼实验24:从inode看文件系统的设计。inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。通过动手实践“理解inode”一文,截图,并说明你对设计一个文件系统的初步理解。二.解答操作系统读取硬盘时,一次性读取多个扇区(硬盘最小单位),即一次性读取一个”块”(原创 2022-03-10 19:19:04 · 240 阅读 · 0 评论 -
高级OS(十) - 创建自己的文件系统
高级OS(十) - 创建自己的文件系统一.题目二.解答实验1.什么是文件系统中的块,你创建的文件系统块大小是多少?总共有多少个块?2.什么是索引节点,一个索引节点占多少字节,你的文件系统总共有多少个索引节点?一.题目创建一个文件系统,听起来不可能,实际上很简单,查看实验楼实验23,动手做起来,你的文件系统就出来了,但这个实验在实验楼无法做,需要在虚拟机或者阿里云上做,提交截图,并配文字,说明你对文件系统的认识和理解。1.什么是文件系统中的块,你创建的文件系统块大小是多少?总共有多少个块?2.什么是索原创 2022-03-10 19:13:57 · 582 阅读 · 0 评论 -
高级OS(九) - 文件系统设计之数据结构
高级OS(九) - 文件系统设计之数据结构一.题目二.解答实验:1.mount机制与超级块是什么关系,与文件系统的类型又是什么关系?2.inode是如何分配的?磁盘inode和内存inode有什么区别?3.有了inode,为什么还要dentry? 如果没有denrty,会出现什么情况?4. files_struct结构和file结构是什么关系,如果没有file结构是否可以?5.为什么要有一个fs_strcut结构?一.题目VPS中有很多数据结构,看起来很复杂,实际上从设计的角度进行梳理,搞清楚为什么要设原创 2022-03-10 19:07:32 · 945 阅读 · 0 评论 -
高级OS(八) - Linux内存映射
高级OS(八) - Linux内存映射一.题目二.解答1.进入Linux 内核(4.19)源代码, 给出task_struct 结构,mm_struct 结构和 vm_area_struct 结构的关系图,这样的数据结构设计对你有什么启发?每个数据结构至少分析2个以上字段2.对实验中涉及的相关内核数据结构、函数进行深入分析,并画出流程图。至少分析6个数据结构和6个函数一.题目查看学堂在线《Linux内核分析与应用》的4.5~4.7节的视频,完成其实验代码,截图,讨论,两人一组。进入Linux 内核(原创 2022-03-10 18:10:28 · 428 阅读 · 0 评论 -
高级OS(七) -Load高故障分析
高级OS(六) - Load高故障分析一.题目二.解答1.为什么要定义OS_VER这个变量?2. load.h里面什么都没有,这有什么用?3.这么久了,还没有切入正题。作者是不是忘记了是在解Load高的问题?4.某些版本的Linux内核不能直接调用kallsyms_lookup_name,有哪些办法获得内核函数/变量的地址?5.模块代码还有哪些值得改进的地方?6.你还有其他方法跟踪Load高问题吗?不同的方法什么优缺点?一.题目阅读load高故障分析一文以及3.5节的视频,回答作者在文中提出的问题为原创 2022-03-10 18:00:17 · 1177 阅读 · 0 评论 -
高级OS(六) - 用户态进程管理的方方面面
高级OS(六) - 用户态进程管理的方方面面一.题目二.解答1.监控进程的状态,ps, top,kill命令的使用,以及硬中断和软中断的理解,通过查看/proc/softirqs来观察中断的运行情况。2.进程优先级,top/ps,nice/renice命令的使用(4个命令都用一下)3.企业案例,Linux假死是怎么回事,深刻理解fork()是怎么回事,oom killer是干什么?出现假死情况怎么办?如何分析故障?截图说明4.后台进程管理,安装screen和nohup命令,并使用,截图,并给出心得体会5.系原创 2022-03-10 17:34:24 · 1131 阅读 · 0 评论 -
高级OS(五) - 进程的创建和调度
高级OS(五) - 进程的创建和调度一.题目二.解答1.进程从诞生到结束,是一个生命周期,在这个生命周期中,进程的创建至关重要,请分析进程的生命周期,并深入到内核源代码对fork进行分析**(1)什么是进程?(2)进程的生命周期?(3)fork.c进行分析2.进程的生命周期中,有一个重要的环节是被调度到CPU上执行,请分析进程的调度算法的源代码进行分析(从最简单的0.11版着手),并比较一个高版本的算法,说明为什么要进行这样的改进2.1 进程调度的策略讨论2.2 Linux-0.11中的schedule()原创 2022-03-10 16:40:34 · 1670 阅读 · 0 评论 -
高级OS(二) - 从机制与策略分离分析内核双链表的设计与实现
高级OS(二) - 从机制与策略分离分析内核双链表的设计与实现一.引言-机制与策略分离的现状二.双向链表机制的设计思想分析(分析可以画图)三.对其中的核心函数一个或者多个进行拆解,进行深入分析并给出实验结果和分析(可以在用户态下来实验)3.1 结构体的初始化3.2 增加结点3.3 打印链表3.4 删除结点3.5 实验结果四.双向链表机制的应用(编写内核模块,并给出调试结果)五.结论一.引言-机制与策略分离的现状机制(mechanism),即需要提供什么样的功能;策略(policy),即怎么样实现这些功能原创 2022-03-10 15:27:20 · 578 阅读 · 0 评论 -
高级OS(一) - coding master实践
高级OS(一) - coding master实践一、题目二、解答一、题目1.coding master第6话观看coding master 第6话到第9话,搭建x86环境,让汇编在虚拟机和真机上跑起来(可以从U盘启动),提交截图,说明搭建过程遇到的困难,如何解决,有什么收获。2.安装Linux,观看教学课1.5节视频,学会编写Linux内核模块,并根据Linux内核中max()宏的奥妙何在?编写内核模块,提交截图,并画思维导图,说明自己对Linux内核的理解。(如果安装不成功,这个可以推后的)二、原创 2022-03-10 15:08:05 · 1011 阅读 · 0 评论 -
高级OS(四) - 虚拟地址转物理地址实验
高级OS(四) - 虚拟地址转物理地址实验一.题目二.解答1.虚拟地址转化为物理地址2.直接阅读物理内存的数据3.分析4.两个问题一.题目根据学堂在线2.4节的视频,把把虚地址转化为物理地址运行代码并截图 成功运行利用调试工具进行调试,有过程调试结合所讲原理进行分析,有自己的见解提出2个问题,并给予回答二.解答1.虚拟地址转化为物理地址2.直接阅读物理内存的数据计算方法:(1)PGD对应图一PGDIR_SHIFT是先取出39位前的9位;(2)PGD的285 * 8B是对原创 2022-01-07 21:24:01 · 977 阅读 · 7 评论 -
高级OS(三) - 段页式管理大综合
高级OS(三) - 段页式管理大综合一.题目二.笔记1.什么是分段机制和分页机制?2.为什么会有段页式存储管理方式?3.段页式管理的逻辑地址结构4.如何实现动态地址转换5.用段页式访问一个逻辑地址需要访存几次?6.段页式存储管理的优缺点7.打印进程的虚拟地址空间一.题目在2.2节 讲述了段机制和2.3讲述了页机制,同时参考:1)哈工大李治军老师讲解,你可以依次看李老师更多的视频。2)coding master,打印进程的虚拟地址空间。研究生的讲解以及3)coding master,本科生的讲解原创 2021-09-25 20:58:52 · 775 阅读 · 0 评论 -
双链表的分析
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-09-18 00:09:12 · 274 阅读 · 2 评论