- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 2023-2024-1 20232806《Linux内核原理与分析》第十三周作业
Set-UID 是 Unix 系统中的一个重要的安全机制。当一个 Set-UID 程序运行的时候,它被假设为具有拥有者的权限。例如,如果程序的拥有者是root,那么任何人运行这个程序时都会获得程序拥有者的权限。Set-UID 允许我们做许多很有趣的事情,但不幸的是,它也是很多坏事情的罪魁祸首。
2023-12-14 17:06:52 55 1
原创 2023-2024-1 20232806《Linux内核原理与分析》第十二周作业
在Linux系统中,capabilities(能力)是一种安全机制,它允许进程在拥有某些特权的同时不必拥有完整的超级用户权限(root权限)。libcap 库能够使用户级别的程序与 capability 特性做交互,一些linux发行版不包括这个库,在环境中已经有 /usr/include/sys/capability.h 这个文件,为了避免老版本的影响,我们还是删掉以前的,然后重新下载一个。命令成功运行,如果你查看/bin/ping的属性会发现它是一个root所有的Set-UID程序。
2023-12-10 21:17:38 65 1
原创 2023-2024-1 20232806《Linux内核原理与分析》第十一周作业
操作系统安全是指保护计算机系统中的软件、硬件和数据免受未经授权的访问、破坏、损坏或泄露的一系列措施。这方面的工作旨在确保计算机系统的机密性、完整性和可用性。1.信息安全设计原则信息安全的基本原则是CIA三元组(也称为安全原则三剑客)——机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。CIA三元组是信息安全中的三个最重要的目标。一个完整的信息安全保障体系,应该充分考虑到CIA三元组的基本原则,如下图所示。
2023-12-03 12:27:21 55 1
原创 2023-2024-1 20232806《Linux内核原理与分析》第十周作业
主流虚拟化技术有VMware的ESXi、开源项目Xen和KVM等,它们的主要差别在于CPU的虚拟化、内存的虚拟化和I/O的虚拟化,以及调度管理实现有所不同。在ESXi中,所有虚拟化功能都在内核中实现;在Xen中,内核仅实现CPU与内存虚拟化,I/O虚拟化与调度管理由主机上启动的第一个负责管理的虚拟机实现;在KVM中,Linux内核实现CPU与内存虚拟化,I/O虚拟化由QEMU实现,调度管理通过Linux进程调度器实现,如图所示。
2023-11-26 16:48:55 58 1
原创 2023-2024-1 20232806《Linux内核原理与分析》第九周作业
对“Linux系统一般执行过程”的理解:Linux 系统的执行过程涉及启动引导、内核加载、初始化过程、用户空间初始化等多个步骤。1)正在运行的用户态进程X2)发生中断int 0x803)SAVE_ALL //保存现场4)中断处理过程中或中断返回前调用了schedule(),其中的switch_to做了关键的进程上下文切换5)标号1之后开始运行用户态进程Y(这里Y曾经通过以上步骤被切换出去过因此可以从标号1继续执行)6)restore_all //恢复现场7)iret。
2023-11-19 13:10:01 53
原创 2023-2024-1 20232806《Linux内核原理与分析》第八周作业
调用execve的可执行程序时,系统调用exceve陷入内核,这时会创建一个新的用户态堆栈,实际是把命令行参数的内容和环境变量的内容通过指针的方式传递给系统调用内核处理函数的,然后内核处理函数在创建可执行程序新的用户态堆栈的时候,会把这些拷贝到用户态堆栈初始化新的可执行程序的执行上下文环境(先函数调用参数传递,再系统调用参数传递)。
2023-11-12 19:20:19 59 1
原创 2023-2024-1 20232806《Linux内核原理与分析》第七周作业
对“Linux 系统创建一个新进程”的理解在Linux系统中,创建新进程的过程是通过 fork系统调用完成的。fork系统调用从内核返回两次:一次回到父进程,另一次回到新产生的子进程。它实际上是由clone()系统调用实现的。子进程和父进程最大的区别就是在于他们拥有不同的PID。分析新进程的执行起点及对应的堆栈状态创建的新进程的执行起点:ret_from_fork在Linux中,新进程的堆栈状态如下://复制内核堆栈//为什么子进程的fork返回0,这里就是原因!
2023-11-02 22:20:33 66
原创 2023-2024-1 20232806《Linux内核原理与分析》第六周作业
系统调用是 Linux 内核中用于处理用户空间程序请求的关键部分之一,通常使用 int 0x80 指令或 syscall 指令触发系统调用。总的来说,通过这次实验,我对系统调用函数的调用过程更加熟悉,对system_call函数的流程也理解地更加透彻,更好的提高了对于Linux内核机制的理解。
2023-10-28 16:57:24 88 1
原创 2023-2024-1 20232806《Linux内核原理及分析》第五周作业
系统调用是用户态进程访问硬件的一种方式,它通过中断(int 0x80)由用户态进入内核态。当一个用户态程序进行系统调用的时候,CPU进入内核态并执行内核函数。系统调用的过程为:函数库提供的封装函数接口(API)->system_call(是所有系统调用的入口),这个入口会根据系统调用号(eax入栈),调用对应的系统调用例程。系统调用最多使用6个寄存器(ebx,ecx,edx,esi,edi,ebp)作为参数,如果超过6个参数,寄存器中将会保存一个指向内核态可以操作的一块的内存,参数保存在内存上面。
2023-10-21 13:42:33 64 1
原创 2023-2024-1 20232806《Linux内核原理与分析》第四周作业
使用AI工具进行辅助学习,增进对于实验原理的理解。由此得知,Linux系统启动过程大致分为BIOS/UEFI阶段、引导加载程序阶段、内核启动阶段、用户空间初始化阶段和用户空间运行阶段。其中,idle进程和1号进程(init进程)是通过内核的初始化过程创建的。总之,通过本次实验,我对于Linux内核有了更进一步的了解,以及重要函数的执行过程。
2023-10-15 11:49:01 134 1
原创 2023-2024-1 20232806 安星宇《Linux内核原理与分析》第三周作业
本实验通过时钟中断驱动的进程切换模拟了现代操作系统中重要的两个部分:中断、进程切换。其中进程切换时上下文保护是实验重点关注的内容。通过编写代码加深了自身对于时间片轮转的理解,亲身体会到os是如何实现多道程序运行环境的。
2023-09-30 18:23:53 92
原创 2023-2024-1 20232806 安星宇《Linux内核原理与分析》第二周作业
通过本次的实验,我掌握了在Linux环境中反汇编C语言程序的方法,重点学会了gcc命令的使用,gcc命令使用时通常搭配一些参数,如-S、-c等。同时也对x86汇编指令有了一定的了解。x86汇编指令是对计算机底层运行原理的一次深入探索,它让我对计算机的工作方式和指令级别的操作有了更深入的了解。
2023-09-23 20:28:13 69
原创 2023-2024-1 20232806《Linux内核分析与原理》第一周作业
本节课学习了Linux的历史简介、Linux重要人物、Linux与Windows有哪些不同以及如何学习Linux,要注重学习心态和学习基础。以下是Linux操作系统的基本结构。其中,最主要的是系统调用和内核两层。
2023-09-16 22:57:20 110
欧拉回路的判定.zip
2021-10-09
欧拉回路的判定.rar
2021-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人