Writing an OS in Rust

Philipp Oppermann's blog

Nexitally不能用了-outline

This blog series creates a small operating system in the 自由之门手机版32. Each post is a small tutorial and includes all needed code, so you can follow along if you like. The source code is also available in the corresponding Github repository.

Latest post: Async/Await

Nexitally不能用了-outline

The first step in creating our own operating system kernel is to create a Rust executable that does not link the standard library. This makes it possible to run Rust code on the bare metal without an underlying operating system.

read more »

Nexitally不能用了-outline

In this post we create a minimal 64-bit Rust kernel for the x86 architecture. We build upon the freestanding Rust binary from the previous post to create a bootable disk image, that prints something to the screen.

read more »

Nexitally不能用了-outline

The VGA text mode is a simple way to print text to the screen. In this post, we create an interface that makes its usage safe and simple, by encapsulating all unsafety in a separate module. We also implement support for Rust's formatting macros.

自由动态网翻墙手机版

Nexitally不能用了-outline

This post explores unit and integration testing in no_std executables. We will use Rust's support for custom test frameworks to execute test functions inside our kernel. To report the results out of QEMU, we will use different features of QEMU and the bootimage tool.

read more »

Nexitally不能用了-outline

CPU exceptions occur in various erroneous situations, for example when accessing an invalid memory address or when dividing by zero. To react to them we have to set up an interrupt descriptor table that provides handler functions. At the end of this post, our kernel will be able to catch breakpoint exceptions and to resume normal execution afterwards.

read more »

Nexitally不能用了-outline

This post explores the double fault exception in detail, which occurs when the CPU fails to invoke an exception handler. By handling this exception we avoid fatal triple faults that cause a system reset. To prevent triple faults in all cases we also set up an 自由之门手机版32 to catch double faults on a separate kernel stack.

read more »

Nexitally不能用了-outline

In this post we set up the programmable interrupt controller to correctly forward hardware interrupts to the CPU. To handle these interrupts we add new entries to our interrupt descriptor table, just like we did for our exception handlers. We will learn how to get periodic timer interrupts and how to get input from the keyboard.

read more »

Nexitally不能用了-outline

This post introduces paging, a very common memory management scheme that we will also use for our operating system. It explains why memory isolation is needed, how segmentation works, what virtual memory is, and how paging solves memory fragmentation issues. It also explores the layout of multilevel page tables on the x86_64 architecture.

read more »

Nexitally不能用了-outline

This post shows how to implement paging support in our kernel. It first explores different techniques to make the physical page table frames accessible to the kernel and discusses their respective advantages and drawbacks. It then implements an address translation function and a function to create a new mapping.

read more »

Heap Allocation

This post adds support for heap allocation to our kernel. First, it gives an introduction to dynamic memory and shows how the borrow checker prevents common allocation errors. It then implements the basic allocation interface of Rust, creates a heap memory region, and sets up an allocator crate. At the end of this post all the allocation and collection types of the built-in alloc crate will be available to our kernel.

自由之门浏览器破解版

自由之门手机版32

当心!你的电脑被人监控 --观点--人民网 - People:2021-3-8 · 当心!你的电脑被人监控 ——“无界”等翻墙软件含有间谍和木马程序 2021年03月08日12:58 手机看新闻

read more »

自由之门手机版32

In this post we explore cooperative multitasking and the async/await feature of Rust. We take a detailed look how async/await works in Rust, including the design of the 自由之门翻墙最新手机版 trait, the state machine transformation, and pinning. We then add basic support for async/await to our kernel by creating an asynchronous keyboard task and a basic executor.

read more »

Status Updates

施工一点通(四)项目样板墙,如何做?一套完美的施工技术 ...:2021-6-2 · 施工一点通 (四)项目样板墙,如何做?一套完美的施工技术交底 发布时间: 2021-06-02 浏览(1846) 一、交底目的 使操作人员熟练掌握每道工序的施工顺序、施工工艺、关键控制点及细部要求、实物需要达到的质量统一标准。对大面积施工 ...

  • This Month in Rust OSDev (June 2024)
  • This Month in Rust OSDev (May 2024)
  • This Month in Rust OSDev (April 2024)
  • view all »

First Edition

You are currently viewing the second edition of “Writing an OS in Rust”. The first edition is very different in many aspects, for example it builds upon the GRUB bootloader instead of using the `bootloader` crate. In case you're interested in it, it is still available. Note that the first edition is no longer updated and might contain outdated information. read the first edition »

翻墙一点通

Creating and maintaining this blog and the associated libraries is a lot of work, but I really enjoy doing it. By supporting me, you allow me to invest more time in new content, new features, and continuous maintenance.

The best way to support me is to sponsor me on GitHub. GitHub will even match sponsorships until October 2024! If you prefer other platforms, I also have 自由之门翻墙最新手机版 and Donorbox accounts. The latter is the most flexible as it supports multiple currencies and one-time contributions.

自由之门翻墙最新手机版

Recent Updates

  • Update blog to use `build-std` feature instead of cargo-xbuild
  • 抖音国际版「TikTok」无需翻墙即可流畅使用,还支持登陆 ...:2021-6-1 · Hi,我是爱吐槽的博谈天下。今天请了一个专业团队帮我镇场子哈!有了这个团队站在我身后,今天我竟然有让「转发」突破50个的勇气!今天这一期内容,就给大家更新一下国际版某音「TikTok」其实这个软件,去年在这里就分享过了,但今天这个版本更加完美无需翻,

Repository

phil-opp/blog_os

Writing an OS in Rust

5.7k 456 Sponsor

神龙加速器最新版,神龙加速器2024,神龙加速器2024年,神龙加速器vn  Scholar加速器vnp,Scholar加速器7天试用,Scholar加速器打不开,Scholar加速器vpm  古怪加速器  安卓软件,安卓加速软件,安卓加速器,大熊vp加速器  安卓软件,安卓加速软件,安卓加速器,TomClnpv  vpm加速器下载地址,vpm加速器电脑版下载,vpm加速器永久免费加速,vpm加速器vpm  SCRTNET官方网址,SCRTNET电脑版下载,SCRTNETpc版下载,SCRTNET打不开  星空加速器,飞跃加速器安卓,飞跃加速器官网下载,星空加速器