Operating Systems 2022F Lecture 1

From Soma-notes

Video

Video from the lecture given on September 8, 2022 is now available:

Video is also available through Brightspace (Resources->Zoom meeting->Cloud Recordings tab)

Notes

Lecture 1
---------

Using openstack
 - first, run newacct (otherwise you won't have access to the project)
 - make sure you're on the Carleton network
    - campus wifi
    - Carleton VPN
 - then go to https://openstack.scs.carleton.ca
    - create a VM here

^^^^^ only have to do once

 - once you have a VM, connect to it
    - use SSH/PuTTY
    - use an X2Go client


 - DO NOT CREATE SNAPSHOTS
    - you don't have the permissions
    - they start creating and never finish
    - we have to go in and delete them later


 - DO NOT USE THE CONSOLE IN A WEB BROWSER
   - it is flaky
   - it is insecure
   - learn how to connect in other way

 - when you connect, use the username "student" and the password "student"
   - when you first connect, you'll need to change the password immediately,
     please change it to
       1) something different,
       2) not the same as all your other passwords
       3) not trivially guessable


What is an operating system?
----------------------------
 - software that changes the computer you have into the
   computer that you want to program
     (developer-centric view)

 - you don't want to deal with the *actual* computer
    - lots of weird hardware
    - unfriendly to interact with

 - two basic tasks
    - resource management
    - abstraction

 mass storage => files
 RAM, CPU => processes
 Ethernet, WiFi => sockets
 GPU/Display => windows

Linux is our focus in this class
  - a flavor of "UNIX", an OS that goes back to the 1970's, came out of Bell Labs

Major parts of an OS
 - kernel  <--- this is what "Linux" actually is
 - libraries <-- interface with the kernel
 - applications <-- services, access control

Linux kernel is everywhere
 - used almost everywhere in the "cloud"
    - AWS, Google Cloud, even much of Azure
 - Android, Chromebooks
 - many embedded systems (TVs etc)

But there are other operating systems
 - MacOS, iOS
 - Windows
 - QNX

some architectural differences, but basic concepts are mostly the same

Modern operating systems have to deal with
 - many concurrently running programs
 - talking with the network, other devices

For the most part, on a modern OS, you don't have to care that there are many programs running at once
 - you can act like you have the entire computer to yourself

What is a shell?
 - a "shell" around the kernel
   - way to run programs that execute directly on the kernel
   - a "thin" wrapper over the power of the OS

But then what is a terminal?
 - I/O mechanism for interacting with a shell
 - traditionally it was a teletype