 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| • |
structure:
how is the OS organized?
|
|
|
| • |
sharing:
how are resources shared across users?
|
|
|
| • |
naming:
how are resources named (by users or programs)?
|
|
|
| • |
security:
how is the integrity of the OS and its resources ensured?
|
|
|
| • |
protection:
how is one user/program protected from another?
|
|
|
| • |
performance:
how do we make it all go fast?
|
|
|
| • |
reliability:
what happens if something goes wrong – hardware or software
|
|
| • |
extensibility:
can we add new features?
|
|
|
| • |
communication:
how do programs exchange information
|
|
|
| • |
concurrency:
how are parallel activities created and controlled?
|
|
|
| • |
scale:
what happens as demands or resources increase?
|
|
|
| • |
persistence:
how do you make data last longer than program executions?
|
|
|
| • |
distribution:
how do multiple computers interact with each other?
|
|
|
| • |
accounting:
how do we keep track of resource usage, and charge for it?
|
|