自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 2023-2024-1 20232809《Linux内核原理与分析》第十三周作业

每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作。它常用于以列表的形式显示所有打开的文件和进程。然而.read()生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。

2023-12-17 16:43:12 49 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第十二周作业

掌握以下命令:setcap: 给一个文件分配capabilitiesgetcap: 显示文件所带的capabilitiesgetpcaps: 显示线程所在的capabilities这些命令在安全方面非常有用,因为它们允许管理员精确地控制进程的权限,而不必将其运行在完全特权的环境中。能力系统使得进程能够执行特定的操作,而无需具备 root 用户的完整权限。这对于提高系统的安全性和降低攻击面非常有帮助。

2023-12-13 13:49:22 87

原创 2023-2024-1 20232809《Linux内核原理与分析》第十一周作业

它通过硬件和软件的协同工作,提供了一种安全的计算环境,可以保护计算设备免受恶意软件、未经授权的访问和数据泄露等威胁。可信计算的核心是可信平台模块(TPM)和安全启动技术,它们可以验证系统的完整性和真实性,并提供加密和认证功能。Linux使用基于角色的访问控制(RBAC)模型,通过用户和组的权限设置来控制对文件、目录和系统功能的访问。1. 最小权限原则(Principle of Least Privilege):给予用户和进程最小必要的权限和访问权限,以限制其对系统和数据的访问。

2023-12-03 14:25:24 49 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第十周作业

而在虚拟化环境中,虚拟化软件(如虚拟机监视器或Hypervisor)在物理硬件和虚拟机之间创建了一个抽象层,它负责管理和分配物理资源给虚拟机,并提供虚拟机与物理硬件之间的交互。VirtIO可以提供更好的性能和兼容性。每个网络命名空间中的进程可以有自己的网络接口和IP地址,使得不同命名空间中的进程可以独立配置和管理网络。Namespace技术是Linux操作系统中的一种隔离机制,它允许将一组系统资源(如进程、网络、文件系统、IPC等)隔离在不同的命名空间中,使得每个命名空间中的资源相互独立,互不干扰。

2023-11-26 19:31:44 33 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第九周作业

这段代码的目的是在上下文切换时保存当前进程的上下文,并加载下一个进程的上下文,实现进程的切换。pushl %[next_ip]:将next_ip中保存的下一个进程的起始地址(一般为标号1:)压入堆栈,作为下一个进程的栈顶,即设置下一个进程的初始执行点。movl %%esp,%[prev_sp]:将当前栈顶指针(esp)保存到prev_sp中,以保存当前进程的堆栈栈顶。movl %[next_sp],%%esp:将next_sp中保存的下一个进程的堆栈栈顶赋值给esp,以更新堆栈指针。

2023-11-18 21:43:54 29 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第八周作业

动态链接的可执行程序:在动态链接时,程序的依赖项(如库函数)并不被编译进可执行文件中,而是作为独立的共享库文件存在。因此,当执行 execve 系统调用时,操作系统加载可执行文件到内存中,但并不立即执行程序。相反,操作系统会解析可执行文件中的动态链接信息,并加载所需的共享库文件。静态链接的可执行程序:在静态链接时,所有程序运行所需的库函数和其他依赖项都被编译进可执行文件中。因此,当执行 execve 系统调用时,操作系统加载整个可执行文件到内存中,并开始执行程序。1. test.c新增exec函数。

2023-11-12 14:03:11 56 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第七周作业

2. fork 函数对应的内核处理过程 sys_clone:do_fork函数原型位于linux-3.18.6/kernel/fork.c。fork函数可以创建进程,创建一个进程是复制当前进程的信息,被复制的进程成为父进程,被创建的新进程成为子进程。父进程和子进程的绝大部分信息是完全一样的,但是有些信息不能一样,比如pid的值和内核堆栈。还有将新进程链接到各种链表中,要保存进程执行到哪个位置,有一个thread数据结构记录ip和sp等信息也不能一样。

2023-11-05 17:22:05 32 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第六周作业

分析:system_call是Linux中所有系统调用的入口点,每个系统调用都至少需要有一个参数,即由eax传递进入的系统调用号。call *sys_call_table(,%eax,4)函数通过eax传递来的系统调用号,来寻找相应的系统调用处理函数。系统调用本质上是一种特殊的中断,所以它也需要进行现场保存和结束调用后的现场恢复。5、另打开一个窗口,通过以下命令使用。函数中添加这两个函数的调用命令。4、使用以下命令运行QEMU。命令查看我们新增的命令。,执行后在该处停了下来。处设置断点,并继续执行。

2023-10-29 11:54:59 116

原创 2023-2024-1 20232809《Linux内核原理与分析》第五周作业

1、使用mov $39, %%rax将系统调用号39(getpid)加载到rax寄存器中。3、输出值(pid)通过"=a"表示,rax寄存器的值被存储在pid变量中。4、使用: "rcx", "r11"指示内联汇编,修改这两个寄存器的内容。2、使用syscall触发系统调用。5、打印获取到的进程ID。

2023-10-22 14:09:27 54 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第四周作业

start_kernel()分析:main.c 中没有 main 函数,start_kernel() 相当于是C中的main函数,当该函数作为一切的起点时,在此函数被调用之前的内核代码是用汇编语言写的,完成系统的初始化工作,为c代码的运行设置环境。5、建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行。6、断点的设置可以在target remote之前,也可以在之后。4、在gdb界面中targe remote之前加载符号表。3、在新shell窗口打开 GDB 调试器。

2023-10-14 22:56:29 55 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第三周作业

2)配置所有可编译的内核特性。5)查看实现该程序的代码。4)生成bzlmage。

2023-10-08 12:41:31 61 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第二周作业

call g #调用g函数,先将ESP后移,存储现在EIP寄存器内的值,然后EBP内的值压榨存储到下一标号位置。movl %esp, %ebp #把EBP寄存器的值标号1放到栈空间标号4的位置。movl %eax,( %esp) #将EAX寄存器里的值放到ESP所指的位置。

2023-09-24 16:07:46 60 1

原创 2023-2024-1 20232809《Linux内核原理与分析》第一周作业

一、学习使用AI工具二、在「实验楼」注册账号,并完成实验三、学习「文献管理与信息分析」公开课四、安装Ubuntu五、学习Linux核心命令六、完成蓝墨云班课中的测试

2023-09-17 17:18:46 81 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除