- Introduction to Systems
- What is a system?
- Complexity makes building systems difficult.
- Why is Complexity Bad?
- Limits what we can build.
- Causes lots of other problems.
- Mitigating Complexity
- We mitigate complexity with modularity and abstraction.
- Modular systems are easier to reason about, manage, change, improve.
- Modularity reduces fate-sharing.
- Abstraction lets us specify interfaces without specifying implementation.
- Good abstraction decreases the number of connections between modules.
- We mitigate complexity with modularity and abstraction.
- Enforced Modularity
- Soft modularity isn’t enough.
- One way to enforce is with a client/server model.
- Reduces fate-sharing.
- Important: remote procedure calls (RPCs) != procedure calls (PCs).
- Have to deal with different types of failure (network, server,..).
- These failures are tricky, but starting with a modular design will let us reason about them and deal with them.
- Have to deal with different types of failure (network, server,..).
- Other Goals
- Beyond complexity, we might also want: scalability, fault-tolerance, security, performance, etc.
- Starting with a good, modular design helps achieve these properties.
- Difficult to get all at once; there are trade-offs.
Week 1: Operating Systems Part I
Lecture 1 Outline
Course Info
Instructor
Departments
As Taught In
Spring
2018
Level
Course Info
Instructor
Departments
As Taught In
Spring
2018
Level
Learning Resource Types
Instructor Insights
notes
Lecture Notes
grading
Projects with Examples
assignment
Written Assignments