学习笔记1

发布时间 2023-09-10 17:39:31作者: 周意凯

ChatGpt的苏格拉底挑战:

有关内核:

linux系统的核心是内核。内核控制着计算机系统的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

内核主要负责以下4种功能。
·系统内存管理
·软件程序管理
·硬件设备管理
·文件系统管理

 

 有关GCC:

GNU Compiler Collection,编译器集合,能够将源代码转换成机器码

 三个步骤:t1.c—>编译器——>t1.s——>汇编器———>t1.0———>链接器———>a.out

               C源文件              汇编代码文件     目标代码文件/二进制机器码          二进制可执行文件

苏格拉底挑战2:

gcc运行时堆栈的使用情况要点总结:

  • 每个函数都会被分配栈帧,用FP(BP)来表示指向当前激活函数的栈帧
  • 为什么采用栈?先进后出,主函数开始读取压栈,再读取指向所调用的函数,执行时从调用的函数开始出栈

 

在下载emacs时使用书上apt-get install命令没用,得用sudo apt install猜测是sudo能获取更高权限的原因,询问gpt后得知结果:

 

两模块链接方式:

  1. gcc main.c hello.c -o main
  2. gcc *.c -o main

long jump

longjmp是一个函数,用于实现非局部跳转。它与setjmp函数一起使用,可以在应用程序中实现跳转到事先设置的位置。

longjmp函数的原型如下:

#include <setjmp.h>
void longjmp(jmp_buf env, int val);

其参数包括一个jmp_buf类型的环境变量(通常为数组类型),用于保存跳转位置的上下文信息,以及一个整数值val,用于指定跳转后setjmp函数的返回值。

要使用longjmp实现跳转,首先需要在要跳转到位置的函数中调用setjmp函数,将当前的上下文信息保存到jmp_buf变量中。然后,在需要跳转到该位置的地方使用longjmp函数完成跳转操作。

 

遇到的问题:

virtualbox虚拟机创建后无法启动,报错:Erorr in supR3HardenedWinReSpawn

链接:https://blog.csdn.net/qq_45730349/article/details/121470304

解决无法启动问题

虚拟光盘下载:

https://ubuntu.com/

https://openeuler.org/zh/

 

学习linux系统中的一些笔记(持续更新)