首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
一个操作系统的设计与实现
字节怎么又在跳动
创建于2023-11-30
订阅专栏
一个操作系统的设计与实现
等 7 人订阅
共26篇文章
创建于2023-11-30
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【一个操作系统的设计与实现】第26章 多处理器(下):应用处理器引导
26.1 应用处理器 当计算机启动时,不管其中有多少个CPU,都只有一个CPU会真正启动,这个CPU就称为引导处理器(Bootstrap Processor,BSP);而其他CPU会等待被BSP唤醒,
【一个操作系统的设计与实现】第25章 多处理器(上):多处理器同步原语
25.1 多处理器同步原语的实现原理 当计算机中存在不止一个CPU时,基于关中断的同步原语就失效了。这是因为每个CPU的中断是独立的,关闭一个CPU的中断并不会影响其他CPU。从本质上说,中断由rfl
【一个操作系统的设计与实现】第24章 64位文件系统,键盘驱动与外壳程序
24.1 64位文件系统 想要实现文件系统,就需要一个超级块和一个文件系统位图。在我们的操作系统中,超级块位于98号扇区,文件系统位图位于99号扇区,文件从100号扇区开始存放。 本章代码24/FS.
【一个操作系统的设计与实现】第23章 快速系统调用
23.1 什么是快速系统调用 系统调用是操作系统为3特权级任务提供服务的一种手段。在32位操作系统中,我们通过中断实现了系统调用。由于系统调用是一个使用非常频繁的机制,且中断也不是专门为系统调用设计的
【一个操作系统的设计与实现】第22章 64位任务
想要实现任务,就需要先安装好TSS与TSS描述符。 64位TSS如下图所示: 如图所示,64位TSS的大小不变,还是104字节。64位CPU淘汰了硬件任务切换和数据段寄存器,因此,64位TSS的组成与
【一个操作系统的设计与实现】第21章 高级可编程中断控制器
21.1 什么是高级可编程中断控制器 我们已经使用过型号为8259A的可编程中断控制器(Programmable Interrupt Controller,PIC)。在单CPU计算机中,中断的处理相对
【一个操作系统的设计与实现】第20章 加载64位内核,64位显卡驱动与内存管理系统
20.1 64位ELF格式 在64位模式下,由于内存地址变宽,ELF格式中的内存地址也要跟着变宽。这并不是一个麻烦的问题,因为ELF格式的整体结构没有发生变化,仍然由一个文件头,加上若干程序头表组成。
【一个操作系统的设计与实现】第19章 IA32-e模式
19.1 64位段描述符与GDT 在32位操作系统中,我们使用的是平坦模型而非分段模型,从而,段描述符的段基址和段限长均成了摆设。在64位模式下,就连CPU也淘汰了分段模型,转而固定使用平坦模型。 6
【一个操作系统的设计与实现】第18章 欢迎回来
18.1 引言 我们已经实现了一个运行在保护模式下的操作系统,然而,读者朋友也许不会满足:如今早已是多核CPU,64位操作系统的时代,而我们的操作系统仅仅是单核CPU,32位的。因此,从本章开始,我们
【一个操作系统的设计与实现】第14章 文件系统
文件系统是操作系统的一个重要模块。本章将要实现的是文件系统。 14.1 什么是文件系统 文件系统是操作系统用于管理硬盘,并使硬盘更易于使用的模块。 想要管理硬盘,就需要记录硬盘扇区的使用情况,可以使用
【一个操作系统的设计与实现】第17章 系统交互
操作系统最终是供用户使用的,所以其需要具备与用户交互的能力,交互方式可以是命令行,图形界面,甚至是触摸屏,语音,实体按钮等。本章将要实现的是系统交互。 17.1 外壳程序 我们的操作系统使用的是基于命
【一个操作系统的设计与实现】第16章 键盘驱动(下)
我们的操作系统虽然已经实现了键盘驱动,但其功能仅限于在屏幕上打印输入的字符,任务并不能读取到这些字符。本章将要实现读取键盘输入的系统调用。 16.1 读取键盘输入的原理 想要让任务读取到键盘输入,最简
【一个操作系统的设计与实现】第15章 键盘驱动(上)
到目前为止,我们的操作系统只能输出而不能输入。本章将要实现的是键盘驱动,其能让我们的操作系统接收键盘输入。 15.1 键盘驱动的原理 当按下键盘上的键时,发生了什么呢?原来,每当按下键盘上的键,键盘都
【一个操作系统的设计与实现】第13章 任务(四):任务回收
在前面的两章中,我们的操作系统均不支持任务回收,所以任务不能退出。本章将要实现的是任务回收功能。 13.1 任务回收的原理 如果一个任务位于任务队列中,其就会被运行。所以,如果一个任务的运行已经结束,
【一个操作系统的设计与实现】第12章 任务(三):3特权级任务
特权级是保护模式的核心概念之一,但我们的操作系统一直没有引入这个概念。这是因为,特权级只有在3特权级任务存在时才有意义。本章将要实现的是3特权级任务的加载与任务切换。 12.1 特权级 12.1.1
【一个操作系统的设计与实现】第11章 任务(二):0特权级任务
上一章中,我们的操作系统已经支持内核共享,这为任务的加载和运行做好了准备。 本章将要实现的是0特权级任务的加载与任务切换。 11.1 任务切换的原理 11.1.1 协同式与抢占式任务切换 如果CPU上
【一个操作系统的设计与实现】第10章 任务(一):共享内核
一直以来,我们的操作系统在启动后,运行的都是Kernel.c中的main函数。只运行这一个函数是不够的,操作系统应当有能力加载并运行其他程序。 从本章开始,将使用四章的篇幅讨论操作系统如何加载并运行任
【一个操作系统的设计与实现】第9章 硬盘驱动
操作系统应当具备读写硬盘的能力。因此,本章将要实现的是硬盘驱动。硬盘驱动由两个函数构成:读硬盘函数与写硬盘函数。 9.1 读硬盘 想要读硬盘,就需要提供以下三个信息: 起始扇区号 读取的扇区数 数据存
【一个操作系统的设计与实现】第8章 内存管理系统
计算机上的任何程序,包括操作系统自己,都需要使用内存。因此,操作系统需要实现内存管理系统,以进行内存的分配和回收。 在我们的操作系统中,内存管理系统由两部分组成:页分配器与页回收器。本章将实现这两个部
【一个操作系统的设计与实现】第7章 中断
7.1 什么是中断 中断是一种能够随时打断CPU正常工作的机制。这句话看着挺别扭的,CPU工作的好好的,为什么要"随时打断"它?这是因为,CPU需要为诸多外部设备提供服务,以键盘为例,当键盘上的键被按
下一页