自定义博客皮肤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)
  • 收藏
  • 关注

原创 从操作系统OS的视角来观察hello程序

总体上,hello使用gcc编译hello.c源文件,生成可执行文件hello。在Linux中,可执行文件是一种ELF格式的文件。当在终端中输入./hello时,操作系统会创建一个新的进程。这个过程涉及到调用fork()函数来创建新的进程,并继承父进程的一些属性。操作系统为新进程分配进程控制块(),并初始化其中的一些参数,包括程序计数器、寄存器、文件描述符等。操作系统为新进程分配内存空间,包括代码段、数据段、堆和栈等。ELF文件的头部信息用于确定这些段的位置和大小。执行函数,将程序加载到新进程的地址空间中。

2024-03-18 19:49:37 823

原创 系统调用

可以使用指针传递的方式传递多个参数,比如将需要的参数转化成数组或者将参数变化成结构体的方式,这样就可以在传递参数的时候给出首地址的位置,就能够隐式的传递多个参数,这样就可以完成合理的扩大限制;,修改完成并编译之后修改对应的头文件的内容,可以显式的告知内核程序新增了的系统调用,最后更改函数的指针表,这样就可以正常的找到系统调用程序并进行正常的系统调用。然后修改编译的文件,将这个的可编译的程序片段放入系统调用使用的目标文件里面,在本实验中指代的是。/三种调用的函数,一共对应分别参数是0,1,2,3;

2024-03-18 19:47:55 610

原创 操作系统的引导

首先获取光标的位置,扩展内存的大小和部分代码已经在setup和实验提示中给出,然后下面需要完成的是完成打印16位数的汇编过程,使用。更为简洁的替代方案:BIOS初始化中断向量时放置到较高地址位置,这样就能直接从0地址处载入操作系统,或者同上,采用UEFI方法。能获取至少一个基本的硬件参数(如内存参数、显卡参数、硬盘参数等), 将其存放在内存的特定地址,并输出到屏幕上。改写setup并显示上方的信息的思想是:和在bootsect.s中完成的一样,操作打印函数。还需要修改前面的调用该结构的函数。

2024-03-18 19:46:30 720

原创 调试分析 Linux 0.00 多任务切换

任务切换的流程如下:首先通过压入需要的EFLAGSCSEIPSSESP入栈并通过返回操作进入用户模式使程序进入任务0开始执行。当任务0执行到loop指令的时候产生时钟中断,任务0将当前的EFLAGSCSEIPSSESP压入任务0的内核栈中作为返回的位置,然后进入时钟中断处理程序,在程序内会检查current获得当前执行的任务的序号,检查到当前任务序号为0的时候就将current变量修改为1,并通过ljmpjmpf。

2024-03-18 19:45:40 675

原创 调试分析Linux 0.00引导程序

首先,header.s在32位的保护模式下运行。首先加载数据段寄存器、堆栈段寄存器SS和堆栈指针ESP。然后在新的位置重新设置IDT和GDT表。设置IDT,并将256个中断门都填默认处理过程的描述符;设置GDT,在改变了GDT之后重新加载所有段寄存器把计数器通道0设置成每隔10毫秒向中断控制器发送一个中断请求信号。中断程序属于内核,也就是说eax的高字节是内核代码段的选择符号 0x0008设置中断门描述符之后,取定时中断处理程序地址。设置系统调用陷阱门描述符。取系统调用处理程序地址。

2024-03-18 19:44:29 1478

原创 操作系统 读书笔记4

任务是处理器可以分派、执行和挂起的工作单元。任务由两个部分组成:任务执行空间和任务状态段(TSS)80x86任务地址空间由任务能够访问的段构成,这些段包括代码段、数据段、堆栈段、TSS中应用的系统段以及任务代码能够访问的任何其他段。这些段都被映射到处理器的线性地址空间中,并且随后被直接地或者通过分页机制映射到处理器的物理地址空间中。

2024-03-18 19:41:49 1681

原创 操作系统 读书笔记3

中断是指在程序执行过程中,由硬件或软件发出的一个信号,用于打断CPU当前正在执行的指令流,转而去执行相关的中断处理程序。中断可以用来处理外部设备的请求、系统调用、时钟定时等事件。异常是指在程序执行过程中发生的一些非正常的情况,例如除零错误、访问越界、非法指令等。异常的发生会导致处理器中断正在执行的指令流,并跳转到相应的异常处理程序中。处理器在接收到中断或异常信号后,会暂停当前的指令流执行,并将当前的执行现场(包括寄存器状态等)保存起来。然后,根据中断或异常的类型,在中断向量表或异常向量表。

2024-03-18 19:38:32 538

原创 操作系统 读书笔记2

[操作系统]]

2024-03-18 19:37:36 844

原创 操作系统 读书笔记1

[…/…/操作系统课程总括|操作系统课程总括]][[CourseNotes/操作系统/OS-X86系统架构概览]]

2024-03-18 19:32:06 1921

原创 数据结构 树型结构

编写建立二叉树的动态(或者静态)二叉链表存储结构(左右链表示)的程序,并以适当的形式显示和保存二叉树 等

2022-11-15 15:50:17 438 2

原创 数据结构 图型结构及其应用

分别实现无向图(或有向图)的邻接矩阵和邻接表存储结构的建立算法,分析和比较各建立算法的时间复杂度以及存储结构的空间占用情况。

2022-11-15 15:48:05 271

原创 数据结构 查找结构与排序方法

BST 查找结构与折半查找方法的实现与实验比较要求编写程序实现 BST 存储结构的建立(插入)、删除、查找和排序算法;实现折半查找算法;比较 BST 查找与折半查找方法的时间性能。

2022-11-15 15:45:10 389

原创 CSAPP 大作业 程序人生

本篇大作业的主要内容是展示hello程序的一生。通过对hello.c文件从层层进行预处理、汇编、编译、链接生成可执行文件之后到进程被回收这个过程的探讨和研究,来对计算机系统的运行方式加以解释和说明。本文章主要针对程序的编译过程、进程管理进行研究和探讨。

2022-11-13 19:36:23 846

空空如也

空空如也

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

TA关注的人

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