CS3210 Design Operating Systems

Taesoo Kim





CS3210: Design Operating Systems

Taesoo Kim

What is an operating system?

What is an operating system?

View 1: layered organization

→ OS is an Interface b/w two layers, user and hardware

View 2: consisting of core services

→ OS provides Abstraction to applications

Example: system calls

  fd = open("out", 1);      // opening a file
  write(fd, "hello\n", 6);  // reading the file's content
  pid = fork();             // creating a new process

Why is designing OS challenging?

Open problems: sandboxing for security, scalability on manycore, etc.

Who should take CS3210?

Also, you (have to) have lots of free time

CS3210: Design Operating Systems

→ Experimental course, lots of bumps expected :)

Cool kids speak Rust!

→ Check out https://www.rust-lang.org/

Course goals and objectives

→ So you can continue to learn OS even after graduation!

Prerequisite

I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. – Linus Torvalds

General information

General information

Grading policy

Grading policy

→ Our goal is to make sure you don’t give up, and actually sit and do the coding!

Class structure

About preparation questions

About quiz, project

About lab assignments

About lab 0

Class policy

See, https://tc.gts3.org/cs3210/2020/spring/info.html

Today’s agenda

Hardware trend: CPU

Hardware trend: Memory

Comparing computer performance

Hardware: IBM System/360 30/75 (1964)

Hardware: Raspberry Pi Zero (2015)

Challenges in operating systems

OS (software) seamlessly adopts to slow/fast, small/large hardware!

About “compatibility”

Seriously. Binary compatibility is so important that I do not want to have anything to do with kernel developers who don’t understand that importance. If you continue to pooh-pooh the issue, you only show yourself to be unreliable. Don’t do it. – Linus

Future operating systems (xkcd)

Programming languages for OS development

What language is used for all commodity OSes (e.g., Linux, Windows)?

Ref. Wikipedia

Why using C for OS development?

→ Why not A, B, and C (e.g., Python, JavaScript, C++, etc)?

Comparing system programming languages

Ref. A Case for Oxidation: The Rust Programming Language

Hello, Rust!

Hardware for CS3210: Raspberry Pi 3

Other purchasing options

Next lecture