Operating Systems 2020W Lecture 3

From Soma-notes
Jump to navigation Jump to search


Video from the lecture given on January 15, 2020 is now available.


Lecture 3

Structure of a UNIX system

emacs     <--- regular programs, running in user mode
vi /etc/hostname
-------------  user/supervisor mode boundary

linux kernel  <--- in between the hardware and regular programs
                   runs in supervisor mode

user and supervisor mode are CPU modes
 - on x86 chips, they are actually ring 3 and ring 0, but ring 0 and 1 aren't
   used so much

ring 0 = supervisor mode
ring 3 = user mode

in supervisor mode, programs have access to all hardware features
in user mode, programs have limited access to hardware

it is much safer to run in user mode
 - can't crash the system

drivers: code added to the kernel to help it understand specific hardware

on UNIX, the root user can do "anything", while regular users have limited privileges
 - root on UNIX is the same as Administrator on Windows

a root user has to ask the kernel to do things.  The kernel will generally
say yes, but it can say no to anything
 - and there are ways to configure systems where root is very limited

programs running as root are still running in user mode on the CPU
only the kernel runs in supervisor mode

Focus in first half of class is on the userspace/kernel space boundary and user programs.  Second half, we talk about the kernel.

please don't stream the lecture over the Carleton VPN.
 - I'll show you ways to access the class VMs without the VPN

programs running in userspace can't do I/O on their own, or access much hardware
 - they get their CPU allotment and some RAM, that's it
 - if they want want more RAM or want to talk to the disk, keyboard, screen, etc
   they have to ask the kernel for access

running programs ask the kernel for things via system calls

you can run many copies of the same program
each copy of a running program is referred to as a process

processes run in user mode
the kernel runs in supervisor mode

a "user" is just a label for one or more process
 - really a number (uid)

different processes can use the same memory addresses
  - address 2000 means different things for different processes
  - each process has its own addresses

a system call has to
 - switch the CPU mode to supervisor mode
 - jump to a standard entry point, so the kernel can decide what to do

CPU mode: can be user mode or supervisor mode

a function call can't on its own invoke kernel code
 - (the kernel of course is divided into functions like any C program)

a kernel is just a program...but with special privileges and special responsibilities

what is a system call, actually?
 - a special CPU instruction

what is a CPU?
what is an instruction?