mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Update to gutenberg 0.3.0
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
title = "Catching Exceptions"
|
title = "Catching Exceptions"
|
||||||
order = 1
|
order = 1
|
||||||
path = "catching-exceptions"
|
path = "catching-exceptions"
|
||||||
date = "2016-05-28"
|
date = 2016-05-28
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2016-06-25"
|
updated = "2016-06-25"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Better Exception Messages"
|
title = "Better Exception Messages"
|
||||||
order = 2
|
order = 2
|
||||||
path = "better-exception-messages"
|
path = "better-exception-messages"
|
||||||
date = "2016-08-03"
|
date = 2016-08-03
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2016-11-01"
|
updated = "2016-11-01"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Returning from Exceptions"
|
title = "Returning from Exceptions"
|
||||||
order = 3
|
order = 3
|
||||||
path = "returning-from-exceptions"
|
path = "returning-from-exceptions"
|
||||||
date = "2016-09-21"
|
date = 2016-09-21
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2016-11-01"
|
updated = "2016-11-01"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "A minimal x86 kernel"
|
title = "A minimal x86 kernel"
|
||||||
order = 1
|
order = 1
|
||||||
path = "multiboot-kernel/"
|
path = "multiboot-kernel/"
|
||||||
date = "2015-08-18"
|
date = 2015-08-18
|
||||||
+++
|
+++
|
||||||
|
|
||||||
This post explains how to create a minimal x86 operating system kernel. In fact, it will just boot and print `OK` to the screen. In subsequent blog posts we will extend it using the [Rust] programming language.
|
This post explains how to create a minimal x86 operating system kernel. In fact, it will just boot and print `OK` to the screen. In subsequent blog posts we will extend it using the [Rust] programming language.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Entering Long Mode"
|
title = "Entering Long Mode"
|
||||||
order = 2
|
order = 2
|
||||||
path = "entering-longmode"
|
path = "entering-longmode"
|
||||||
date = "2015-08-25"
|
date = 2015-08-25
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2015-10-29"
|
updated = "2015-10-29"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Set Up Rust"
|
title = "Set Up Rust"
|
||||||
order = 3
|
order = 3
|
||||||
path = "set-up-rust"
|
path = "set-up-rust"
|
||||||
date = "2015-09-02"
|
date = 2015-09-02
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2017-04-12"
|
updated = "2017-04-12"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Printing to Screen"
|
title = "Printing to Screen"
|
||||||
order = 4
|
order = 4
|
||||||
path = "printing-to-screen"
|
path = "printing-to-screen"
|
||||||
date = "2015-10-23"
|
date = 2015-10-23
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2016-10-31"
|
updated = "2016-10-31"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Allocating Frames"
|
title = "Allocating Frames"
|
||||||
order = 5
|
order = 5
|
||||||
path = "allocating-frames"
|
path = "allocating-frames"
|
||||||
date = "2015-11-15"
|
date = 2015-11-15
|
||||||
+++
|
+++
|
||||||
|
|
||||||
In this post we create an allocator that provides free physical frames for a future paging module. To get the required information about available and used memory we use the Multiboot information structure. Additionally, we improve the `panic` handler to print the corresponding message and source line.
|
In this post we create an allocator that provides free physical frames for a future paging module. To get the required information about available and used memory we use the Multiboot information structure. Additionally, we improve the `panic` handler to print the corresponding message and source line.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Page Tables"
|
title = "Page Tables"
|
||||||
order = 6
|
order = 6
|
||||||
path = "page-tables"
|
path = "page-tables"
|
||||||
date = "2015-12-09"
|
date = 2015-12-09
|
||||||
+++
|
+++
|
||||||
|
|
||||||
In this post we will create a paging module, which allows us to access and modify the 4-level page table. We will explore recursive page table mapping and use some Rust features to make it safe. Finally we will create functions to translate virtual addresses and to map and unmap pages.
|
In this post we will create a paging module, which allows us to access and modify the 4-level page table. We will explore recursive page table mapping and use some Rust features to make it safe. Finally we will create functions to translate virtual addresses and to map and unmap pages.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Remap the Kernel"
|
title = "Remap the Kernel"
|
||||||
order = 7
|
order = 7
|
||||||
path = "remap-the-kernel"
|
path = "remap-the-kernel"
|
||||||
date = "2016-01-01"
|
date = 2016-01-01
|
||||||
[extra]
|
[extra]
|
||||||
updated = "2016-03-06"
|
updated = "2016-03-06"
|
||||||
+++
|
+++
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Kernel Heap"
|
title = "Kernel Heap"
|
||||||
order = 8
|
order = 8
|
||||||
path = "kernel-heap"
|
path = "kernel-heap"
|
||||||
date = "2016-04-11"
|
date = 2016-04-11
|
||||||
updated = "2017-11-19"
|
updated = "2017-11-19"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Handling Exceptions"
|
title = "Handling Exceptions"
|
||||||
order = 9
|
order = 9
|
||||||
path = "handling-exceptions"
|
path = "handling-exceptions"
|
||||||
date = "2017-03-26"
|
date = 2017-03-26
|
||||||
+++
|
+++
|
||||||
|
|
||||||
In this post, we start exploring CPU exceptions. Exceptions occur in various erroneous situations, for example when accessing an invalid memory address or when dividing by zero. To catch 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.
|
In this post, we start exploring CPU exceptions. Exceptions occur in various erroneous situations, for example when accessing an invalid memory address or when dividing by zero. To catch 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.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Double Faults"
|
title = "Double Faults"
|
||||||
order = 10
|
order = 10
|
||||||
path = "double-faults"
|
path = "double-faults"
|
||||||
date = "2017-01-02"
|
date = 2017-01-02
|
||||||
+++
|
+++
|
||||||
|
|
||||||
In this post we explore double faults in detail. We also set up an _Interrupt Stack Table_ to catch double faults on a separate kernel stack. This way, we can completely prevent triple faults, even on kernel stack overflow.
|
In this post we explore double faults in detail. We also set up an _Interrupt Stack Table_ to catch double faults on a separate kernel stack. This way, we can completely prevent triple faults, even on kernel stack overflow.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Introduction"
|
title = "Introduction"
|
||||||
order = 1
|
order = 1
|
||||||
path = "introduction"
|
path = "introduction"
|
||||||
date = "0000-01-01"
|
date = 0000-01-01
|
||||||
template = "second-edition/page.html"
|
template = "second-edition/page.html"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "Booting"
|
title = "Booting"
|
||||||
order = 2
|
order = 2
|
||||||
path = "booting"
|
path = "booting"
|
||||||
date = "0000-01-01"
|
date = 0000-01-01
|
||||||
template = "second-edition/page.html"
|
template = "second-edition/page.html"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title = "A Freestanding Rust Binary"
|
title = "A Freestanding Rust Binary"
|
||||||
order = 3
|
order = 3
|
||||||
path = "freestanding-rust-binary"
|
path = "freestanding-rust-binary"
|
||||||
date = "0000-01-01"
|
date = 0000-01-01
|
||||||
template = "second-edition/page.html"
|
template = "second-edition/page.html"
|
||||||
+++
|
+++
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
|
|
||||||
<html lang="{{ config.language_code }}">
|
<html lang="{{ config.default_language }}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
|
|
||||||
<html lang="{{ config.language_code }}">
|
<html lang="{{ config.default_language }}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<div class="container content">
|
<div class="container content">
|
||||||
<header class="masthead">
|
<header class="masthead">
|
||||||
<h1 class="masthead-title">
|
<h1 class="masthead-title">
|
||||||
<a href="/" title="Home">{{ config.title }}</a>
|
<a href="{{ get_url(path="./second-edition/_index.md") }}" title="Home">{{ config.title }} (Second Edition)</a>
|
||||||
</h1>
|
</h1>
|
||||||
<p><small>{{ config.extra.subtitle }}</small></p>
|
<p><small>{{ config.extra.subtitle }}</small></p>
|
||||||
</header>
|
</header>
|
||||||
|
|||||||
Reference in New Issue
Block a user