自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统 真象还原 学习笔记#13

硬件是实实在在的东西,要想在软件中管理它们,只能从逻辑上抓住这些硬件的特性,将它们抽象成一些数据结构,然后这些数据结构便代表了硬件,用这些数据结构来组织硬件的信息及状态,在逻辑上硬件就是这数据结构。分区:是由多个编号连续的柱面组成的,因此分区在物理上的表现是由某段范围内的所有柱面组成的通心环,并不是像“饼图”那种逻辑表示,当然若整个硬盘只有1 个分区,那这个分区就是个所有柱面组。扇区:扇区是硬盘读写的基本单位,它在磁道上均匀分布,与磁头和磁道不同,扇区从1 开始编号。

2025-12-22 16:12:29 324

原创 操作系统 真象还原 学习笔记#12

系统调用是用户进程请求操作系统服务的机制,Linux通过0x80中断实现。内核利用寄存器eax传递子功能号,统一处理多种系统功能。文中详细阐述了系统调用的两大部分:用户空间接口和内核空间实现,并以getpid为例展示了具体实现过程。通过定义中断处理程序、系统调用表和用户接口,构建了完整的系统调用框架。系统调用流程与中断处理相似,需要保存上下文、传递参数并处理返回值。这种机制既保证了系统安全性,又为用户程序提供了统一的服务访问接口。

2025-11-19 09:47:33 650

原创 操作系统 真象还原 学习笔记#11

本文介绍了TSS(任务状态段)的概念及其在用户进程管理中的作用。TSS是内存中的固定格式数据结构,用于保存和恢复进程状态,包括寄存器值等信息。Linux系统中每个CPU共享一个TSS,通过仅更新部分内容(如SS0和esp0)来提高任务切换效率。文中详细展示了TSS的代码实现方法,包括段描述符属性定义和初始化过程,主要涉及全局描述符表(GDT)的配置和TSS结构的填充。该实现支持用户程序的代码段、数据段选择子定义,以及TSS描述符的创建与加载。

2025-11-03 20:25:15 622

原创 操作系统 真象还原 学习笔记#10

本文主要介绍了操作系统中输入输出系统的同步机制,重点讨论了锁的实现原理及其在多线程环境下的应用。首先通过调试定位了GP异常(通用保护错误)的触发位置,发现是由于光标值设置过程中的线程切换导致数据冲突。随后提出了两种解决方案:1)通过开关中断保证线程完整执行,但存在屏蔽有效中断和滥用风险;2)引入锁机制实现终端输出的互斥访问。详细阐述了公共资源、临界区、互斥、竞争条件等核心概念,并介绍了信号量、阻塞唤醒机制以及原子操作特性。最后给出了线程阻塞(thread_block)和唤醒(thread_unblock)的

2025-10-26 19:41:29 853

原创 操作系统 真象还原 学习笔记#9

本文介绍了线程的基本概念及其在内核中的实现。线程是具有能动性的独立执行流,是处理器的调度单位,而进程是线程及其资源的集合。内核通过PCB(进程控制块)管理线程信息,包括状态、优先级等。文中展示了简单线程的实现,包括核心数据结构task_struct和thread_stack的定义,以及一个测试线程打印功能的主程序示例。最后指出线程调度与管理将通过PCB之间的双向链表实现。

2025-10-22 15:15:02 846

原创 操作系统 真象还原 学习笔记#8

本文摘要: 第八章主要介绍了内存管理系统中的两个关键技术:makefile文件和断言机制。makefile通过定义文件依赖关系实现高效编译,只重新编译受影响的文件而非全部。文章详细讲解了makefile基本语法和Linux文件三种时间属性(atime、ctime、mtime)在编译过程中的作用。第二部分重点阐述了assert断言的实现,包括中断状态控制函数(开/关中断、获取状态)和断言宏ASSERT的设计原理,通过panic_spin函数在错误发生时锁定系统并输出调试信息。最后通过main.c中的测试案例验

2025-06-12 21:22:15 967

原创 操作系统 真象还原 学习笔记 #7

由千CPU 获知了计算机中发生的某些事, CPU 暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后, CPU 继续执行刚才的程序。整个过程称为中断处理,也称为中断。中断虽然是打断的意思,但它恰恰却是提升整个系统利用率最有效的方式,没有之一,因为有了中断,系统才能并发运行。为了使所有设备之间的通信井然有序,各通信设备间必须有统一的节奏,不能各干各的,这个节奏就称为定时或时钟。时钟并不是计算机处理速度的衡量,而是一种使设备间相互配合而避免发生冲突的节拍。

2025-05-05 23:08:18 789

原创 操作系统 真象还原 学习笔记 #6

调用约定, calling conventions, 它是调用函数时的一套约定,是被调用代码的接口。在本章学习两个调用约定,一个是C语言的,一个是栈的stdcall 的调用约定意味着:(1) 调用者将所有参数从右向左入栈。(2) 被调用者清理参数所占的栈空间。cdecl 调用约定由于起源于C 语言,所以又称为C 调用约定,是C 语言默认的调用约定。cdecl 的调用约定意味着:(1) 调用者将所有参数从右向左入栈。(2) 调用者清理参数所占的栈空间。

2025-04-20 22:51:45 967

原创 操作系统 真象还原 学习笔记 #5

linux获取内存的方法BIOS 中断是实模式下的方法,只能在进入保护模式前调用。在实模式下也用这三种方法检测完内存容量后再进入保护模式。如果一种方法获取失败,尝试另一种方法,若三种方法都失败了,由千无法获取内存信息,后续程序无法加载,只好将机器挂起,停止运行。BIOS 中断可以返回已安装的硬件信息,由千BIOS 及其中断也只是一组软件,它要访问硬件也要依靠硬件提供的接口,所以,获取内存信息,其内部是通过连续调用硬件的应用程序接口(Application Program Interface, API) 来获

2025-04-15 23:30:15 863

原创 操作系统 真象还原 学习笔记 #4

实模式产生的问题安全问题:实模式下操作系统和用户属于同一特权级用户所引用的地址都指向真实的物理地址用户可以自由更改段基址,可以随意访问内存使用缺陷:访问超过64KB的内存需要切换段基址一次只能运行一个程序共20条地址线,最大可用内存1MB,根本不够用32位、16位,实模式与保护模式32位CPU具有保护模式和实模式两种运行模式,可以兼容实模式下的程序。实模式的运行环境是16位,而保护模式的运行环境是32位。

2025-04-12 18:48:25 1021

原创 操作系统 真象还原 学习笔记 #3

端口用途在读硬盘和写硬盘时还是有点区别的,比如拿 Primary 通道上的0x1F1端口来说,读操作时,若读取失败,里面存储的是失败状态信息,所以称为error寄存器,并且0x1F2端口中存储未读的扇区数。这时候轮到指令译码器上场了,他根据指令格式检查指令寄存器中的指令,先确定操作码是什么,在检查操作数的类型,若是在内存中,就这样相应的操作数从内存中取回,放入自己的储存单元。在读硬盘时,端口0x1F7或0x177的寄存器名称是Status,它是8位宽度的寄存器,用来给出硬盘的状态信息。另外的4位暂不关注。

2025-04-10 15:30:43 784

原创 操作系统 真象还原 学习笔记 #2

本章主要是对bochs的了解和简单mbr的实现。MBR的任务是加载某个程序到指定位置,并把控制权交给他 所以不能覆盖已有数据,也不能过早地被其他数据覆盖 在历史BIOS版本中开发人员按最小内存32KB研发,MBR只能放在32KB末尾,本身512字节,分配1KB,所以32KB空1KB出来的地址就算0x7c00。其程序执行的入口地址是0xfff0,也就是接电的一瞬间CPU的cs:ip寄存器被强制初始化为0xf000:0xfff0 这里存放的不是完整的BIOS程序,而是跳转至BIOS程序的入口的代码。

2025-04-08 16:04:53 1015

原创 操作系统 真象还原 学习笔记 #1

写入虚拟机启动磁盘 dd if=/home/LZH/Desktop/files/alltest/test0 of=/home/LZH/Desktop/bochs/hd60M.img bs=512 count=1 conv=notrunc。本章主要是对整体环境的搭建,从虚拟机开始,到bochs的安装结束,最后成功运行mbr的测试代码。进入解压后的bochs-2.6.8文件夹 cd bochs-2.6.8。和上述一样插入以下代码,vim打开,i插入,:wq退出。配置bochs的config文件,编译,安装。

2025-04-07 18:55:00 961

原创 基于VMware的Ubuntu和github建立ssh链接

当我们需要从GitHub上下载一些公开资源时,建立ssh链接下载是一个稳定且安全的方式。这篇文章就用来为大家建立一个这样的稳定链接。

2025-01-06 18:36:26 803

原创 基于VMware的Ubuntu与VScode建立SSH链接

首先要安装 OpenSSH 服务启动并检查 SSH 服务状态接下来要用命令查看虚拟机的IP地址红框框住的这个要记住,是等下要用到的神奇妙妙工具。

2024-11-21 12:52:59 534

原创 基于VMware的Ubuntu更换内核版本相关

有时候,我们需要特定版本的内核来适配一些环境,但此时自己的内核版本又不是想要的,所以我们需要更换内核版本。

2024-11-06 13:13:34 978

原创 VMware虚拟机上的Ubuntu网络故障仍需要下载文件的共享文件夹解决办法

有时候虚拟机的网络问题就像一个阴晴不定的女孩一样,昨天还畅所欲言今天却突然掉线,但是我们仍需要下载一些文件、工具或者源码用来测试,那么这个方法仅适用于这种不需要解决网络问题的特殊情况(有能力还是要去解决网络问题)首先要在计算机上下载你所需要的文件,然后复制到虚拟机上。

2024-10-29 16:14:54 462

原创 VMware上的Ubuntu和VScode的SSH链接问题

今天像往常一样上VScode发现SSH链接又报错了错误消息表明在尝试通过SSH连接到IP地址时发生了超时错误,主机网络是正常的,错误肯定出在虚拟机更新一下,果然网络出现问题检查一下ip a。

2024-10-29 11:30:50 537

空空如也

空空如也

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

TA关注的人

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