diff --git a/css/theme/fossasia2020.css b/css/theme/fossasia2020.css new file mode 100644 index 0000000..d66c873 --- /dev/null +++ b/css/theme/fossasia2020.css @@ -0,0 +1,514 @@ +/** + * Black theme for reveal.js. This is the opposite of the 'white' theme. + * + * By Hakim El Hattab, http://hakim.se + */ + +@import url(../../lib/font/space-mono/space-mono.css); + +section.has-light-background, +section.has-light-background h1, +section.has-light-background h2, +section.has-light-background h3, +section.has-light-background h4, +section.has-light-background h5, +section.has-light-background h6 { + color: #222; +} + +/********************************************* + * GLOBAL STYLES + *********************************************/ +/* rgb(250, 166, 26); */ +body { + background: #fff; + background-color: #fff; +} + +.reveal .commentary { + bottom: 100px; + right: 0em; + padding-bottom: 1em; + padding-right: 1em; + position: absolute; + background-color: rgba(0, 0, 0, 0.50); + font-size: 12pt; + font-family: serif; + z-index: 10; + color: white; + display: none; +} + +.reveal .footer { + position: absolute; + bottom: 0em; + right: 0em; + padding-bottom: 1em; + padding-right: 1em; + text-align: right; + font-size: 0.5em; + width: 100%; + height: 68px; + background-image: url("lca2020-logo-cropped.svg"); + background-repeat: no-repeat; + background-color: rgb(0, 177, 197); + display: flex; + justify-content: flex-end; + align-items: flex-end; + z-index: 1; +} + +.reveal .footer .url { + position: absolute; + padding-bottom: 30px; +} + +.reveal .footer .theme { + padding-right: 80px; +} + +.reveal .footer .hashtag { + padding-right: 80px; +} + +@media only screen and (max-width:800px) { + .reveal .footer .url { + display: none; + } +} + +@media only screen and (max-width:550px) { + .reveal .footer { + background-image: none; + } +} + +@media only screen and (max-width:750px) { + .reveal .footer .twitter { + display: none; + } +} + +@media only screen and (max-width:1050px) { + .reveal .footer .theme { + display: none; + } +} + +@media only screen and (max-width:1300px) { + .reveal .footer .hashtag { + display: none; + } +} + +.reveal { + font-family: "IBM Plex Mono", "Space Mono", Helvetica, sans-serif; + font-size: 42pt; + font-weight: normal; + color: #212529; +} + +::selection { + color: #212529; + background: #bee4fd; + text-shadow: none; +} + +::-moz-selection { + color: #212529; + background: #bee4fd; + text-shadow: none; +} + +.reveal .slides section, +.reveal .slides section>section { + line-height: 1.3; + font-weight: inherit; +} + +/********************************************* + * HEADERS + *********************************************/ +@font-face { + font-family: "Brix Sans Medium Firefox"; + src: url("HVD_Fonts_-_BrixSlab-Medium.otf") format("opentype"); +} + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #212529; + font-family: "Brix Sans Medium Firefox", "Brix Sans Medium", "Montserrat", Helvetica, sans-serif; + font-weight: 300; + line-height: 1.2; + letter-spacing: normal; + /* text-transform: uppercase; */ + /* text-shadow: 1px 1px 2px black; */ + text-shadow: none; + word-wrap: break-word; + background-color: rgb(250, 166, 26); + width: 100%; +} + +.reveal h1 { + font-size: 2.5em; +} + +.reveal h2 { + font-size: 1.6em; +} + +.reveal h3 { + font-size: 1.3em; +} + +.reveal h4 { + font-size: 1em; +} + +.reveal h1 { + text-shadow: none; +} + +/********************************************* + * OTHER + *********************************************/ + +.reveal p { + margin: 20px 0; + line-height: 1.3; +} + +/* Ensure certain elements are never larger than the slide itself */ + +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; +} + +.reveal strong, +.reveal b { + font-weight: bold; +} + +.reveal em { + font-style: italic; +} + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + text-align: left; + margin: 0 0 0 1em; +} + +.reveal ol { + list-style-type: decimal; +} + +.reveal ul { + list-style-type: disc; +} + +.reveal ul ul { + list-style-type: square; +} + +.reveal ul ul ul { + list-style-type: circle; +} + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; +} + +.reveal dt { + font-weight: bold; +} + +.reveal dd { + margin-left: 40px; +} + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: 20px auto; + padding: 5px; + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); +} + +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: inline-block; +} + +.reveal q { + font-style: italic; +} + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: 20px auto; + text-align: left; + font-size: 0.55em; + font-family: monospace; + line-height: 1.2em; + word-wrap: break-word; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); +} + +.reveal code { + font-family: monospace; + text-transform: none; +} + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; +} + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; +} + +.reveal table th { + font-weight: bold; +} + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; +} + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; +} + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; +} + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; +} + +.reveal sup { + vertical-align: super; + font-size: smaller; +} + +.reveal sub { + vertical-align: sub; + font-size: smaller; +} + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; +} + +.reveal small * { + vertical-align: top; +} + +/********************************************* + * LINKS + *********************************************/ + +.reveal a { + color: #190047; + text-decoration: none; + -webkit-transition: color .15s ease; + -moz-transition: color .15s ease; + transition: color .15s ease; +} + +.reveal a:hover { + color: #4205b4; + text-shadow: none; + border: none; +} + +.reveal .roll span:after { + color: #fff; + background: #068de9; +} + +/********************************************* + * IMAGES + *********************************************/ + +.reveal section img { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #fff; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); +} + +.reveal section img.plain { + border: 0; + box-shadow: none; +} + +.reveal a img { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; +} + +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #42affa; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); +} + +/********************************************* + * VIDEOS + *********************************************/ + +.reveal section video { + margin: 15px 0px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #fff; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); +} + +.reveal section video.plain { + border: 0; + box-shadow: none; +} + +.reveal a video { + -webkit-transition: all .15s linear; + -moz-transition: all .15s linear; + transition: all .15s linear; +} + +/* Fragment additions */ +.reveal .slides section .fragment.fade-semi-out { + opacity: 1; + visibility: inherit; +} + +.reveal .slides section .fragment.fade-semi-out.visible { + opacity: 0.5; + visibility: inherit; +} + +.reveal ul.os { + margin-left: 0; + padding-left: 0; +} + +.reveal ul.os-good { + list-style: none; + margin-left: 0; + padding-left: 0; +} + +.reveal ul.os-good li::before { + content: "✔️ "; + font-family: "sans-serif"; +} + +.reveal ul.os-bad { + list-style: none; + margin-left: 0; + padding-left: 0; +} + +.reveal ul.os-bad li::before { + content: "❌ "; + font-family: "sans-serif"; +} + +.reveal blockquote.os-quote::before { + content: "“"; + left: 20%; + position: absolute; + top: -30px; + font-size: 50pt; +} + +.reveal blockquote.os-quote::after { + content: "”"; + left: 70%; + position: absolute; + bottom: -60px; + font-size: 50pt; +} + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ + +.reveal .controls { + color: #42affa; +} + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #42affa; +} + +.reveal .progress span { + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); +} + +/********************************************* + * PRINT BACKGROUND + *********************************************/ + +@media print { + .backgrounds { + background-color: #222; + } +} + +.boldblue { + font-weight: bold; + color: blue; +} + +.white50bg { + background: rgba(255, 255, 255, 0.5); +} + +.bg50 { + background: rgba(0, 177, 197, 0.3); +} diff --git a/img/Annotation 2020-01-16 111040.png b/img/Annotation 2020-01-16 111040.png new file mode 100644 index 0000000..f249848 Binary files /dev/null and b/img/Annotation 2020-01-16 111040.png differ diff --git a/img/Cthulhu_sketch_by_Lovecraft.jpg b/img/Cthulhu_sketch_by_Lovecraft.jpg new file mode 100644 index 0000000..154c2a3 Binary files /dev/null and b/img/Cthulhu_sketch_by_Lovecraft.jpg differ diff --git a/img/Library_card.jpg b/img/Library_card.jpg new file mode 100644 index 0000000..c6c3e4b Binary files /dev/null and b/img/Library_card.jpg differ diff --git a/img/Rust_programming_language_black_logo.svg b/img/Rust_programming_language_black_logo.svg new file mode 100644 index 0000000..fd5c02e --- /dev/null +++ b/img/Rust_programming_language_black_logo.svg @@ -0,0 +1,18 @@ + + \ No newline at end of file diff --git a/img/Untitled.svg b/img/Untitled.svg new file mode 100644 index 0000000..2cb18be --- /dev/null +++ b/img/Untitled.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/img/broken image.afdesign b/img/broken image.afdesign new file mode 100644 index 0000000..40db0b0 Binary files /dev/null and b/img/broken image.afdesign differ diff --git a/img/bt-quarter2-shrunk.jpg b/img/bt-quarter2-shrunk.jpg new file mode 100644 index 0000000..1e07de9 Binary files /dev/null and b/img/bt-quarter2-shrunk.jpg differ diff --git a/img/bt-quarter2.jpg b/img/bt-quarter2.jpg new file mode 100644 index 0000000..e1bd1a6 Binary files /dev/null and b/img/bt-quarter2.jpg differ diff --git a/img/code_ownership_effects_bugs.afdesign b/img/code_ownership_effects_bugs.afdesign new file mode 100644 index 0000000..2fa24db Binary files /dev/null and b/img/code_ownership_effects_bugs.afdesign differ diff --git a/img/code_ownership_effects_bugs.png b/img/code_ownership_effects_bugs.png new file mode 100644 index 0000000..c39fedc Binary files /dev/null and b/img/code_ownership_effects_bugs.png differ diff --git a/img/code_ownership_effects_bugs.svg b/img/code_ownership_effects_bugs.svg new file mode 100644 index 0000000..4ad7343 --- /dev/null +++ b/img/code_ownership_effects_bugs.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/img/missing-image.png b/img/missing-image.png new file mode 100644 index 0000000..7a101dc Binary files /dev/null and b/img/missing-image.png differ diff --git a/img/missing-image.svg b/img/missing-image.svg new file mode 100644 index 0000000..6876556 --- /dev/null +++ b/img/missing-image.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/os-survey-stale.png b/img/os-survey-stale.png new file mode 100644 index 0000000..b12a293 Binary files /dev/null and b/img/os-survey-stale.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..6acfb85 --- /dev/null +++ b/index.html @@ -0,0 +1,666 @@ + + + + + + + Xous: Rust Semantics in your OS + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+

Betrusted: Being Secure

+
That's no Blackberry, it's a chat client!
+

+ Sean Cross - https://xobs.io/ - @xobs +

+
+ +
+

Betrusted: A Security Chip with I/O

+

+ +

+
+ +
+
+

Xous: Why another kernel?

+ +
+ + +
+

Betrusted Goals

+
    +
  1. <=4 MiB RAM
  2. +
  3. Safe language
  4. +
  5. Process Isolation
  6. +
+
    +
  • Microkernel
  • +
  • Auditable by one person
  • +
+ +
+ +
+

Microkernels

+ +
FlexSC: Flexible System Call Scheduling with Exception-Less System + Calls
+ +
+ +
+

Too Many Cooks

+ + + + + + + + +
+ + +
if there is one primary + contributor, the chances for a file to be buggy decreases + significantly
+
Source: Microsoft + Research
+ +
+
+

Felix' Rule of Thumb

+ + + + + +
+ + +
+ The largest amount of security-related code that one person can reasonably audit is + about 64 KiB of binary data +
+
+ +
+ +
+

Principles of Software

+ + + + + +
+ + +
    +
  • Safety
  • +
  • Concurrency
  • +
  • Speed
  • +
  • Size
  • +
+
+ +
+ +
+

Rust OS Landscape

+ + +
+ +
+

Rust-based OS: Tock

+ + + + + + + + +
+ +
+
    +
  • Active Project
  • +
  • RISC-V Port
  • +
  • C and Rust Libs
  • +
+
+
    +
  • No MMU Support
  • +
  • No runtime spawn()
  • +
  • Limited messaging
  • +
+
+ +
+ +
+

Rust-based OS: Redox

+ + + + + + + + +
+ +
+
    +
  • Active Project
  • +
  • Full Rust stdlib
  • +
  • Full Userspace
  • +
+
+
    +
  • x86_64 only
  • +
  • Unix-like
  • +
  • Desktop-focused
  • +
+
+ +
+ +
+

Rust-based OS: Tifflin

+ + + + + + + + +
?
+
    +
  • Active Project
  • +
  • Rust stdlib
  • +
  • Full Userspace
  • +
+
+
    +
  • nightly only
  • +
  • Mainly x86_64
  • +
  • ???
  • +
+
+ +
+ +
+

Other Alternatives and Inspirations

+
    +
  • ChibiOS - Embedded RTOS
  • +
  • HelenOS - Everything is a message
  • +
  • Solaris - Doors
  • +
  • QNX - Traditional Microkernel
  • +
+
Microkernels isolate and make IPC cheap
+ +
+
+ +
+

Betrusted Goals

+
    +
  • <=4 MB RAM
  • +
  • Process Isolation
  • +
  • Safe language
  • +
  • Microkernel
  • +
+ +
+ +
+ +
+

Xous: System Design

+ +
+ +
+

Xous: Memory Model

+ + + + + +
+ + +
    +
  • Rust Borrow Checker
  • +
  • Message passing
  • +
  • Inter-process borrowing
  • +
  • Borrow types: +
      +
    • Mutable   ^ Immutable
    • +
    • No Access | Read Only
    • +
    +
  • +
+ Image CC-BY Tammy +
+ +
+ +
+

Xous: Memory Model

+
    +
  1. Mutable Borrow +
      +
    • draw()
    • +
    +
  2. +
  3. Immutable Borrow +
      +
    • Mapping font database
    • +
    +
  4. +
  5. Move +
      +
    • Encrypting a string
    • +
    +
  6. +
+
+ +
+

Xous: Interrupts

+
fn setup_int2() -> xous::Result {
+    let gpio = xous::syscall::map_physical(
+            Some(0xe0000000), None, 4096)?;
+
+    xous::syscall::claim_interrupt(2, |_int_num, gpio| {
+        unsafe {
+          let val = gpio.read_volatile();
+          gpio.write_volatile(val + 1);
+        };
+    }, gpio)
+}
+
All in userspace
+ +
+ +
+

Xous: Missing Features

+ + + + + +
+ + +
    +
  • fork()
  • +
  • Filesystem
  • +
  • Scheduler
  • +
  • Threads
  • +
  • Locking primitives
  • +
  • Shared libraries
  • +
+
+ +
+ +
+

Xous: Everything in Userspace

+
    +
  • Small Kernel
  • +
  • Message Passing
  • +
  • Protected Memory
  • +
+
+
+
Understandable by one human
+
Made by many
+
+
+ +
+ + + + + + +
+ + +   + +
+
+
+
+
    +
  • CI
  • +
  • Simulation
  • +
  • On Target
  • +
  • UI Robot
  • +
+
+ +
+ +
+
+ + + + + + + + + +