Operating System Basics What does an Operating System do? - A way to execute programs (user/computer interface) - Allocates resources to programs efficiently and fairly - Manages resources - memory, cpu, devices, file system - Schedules jobs - Provides security and protection from others
Operating System Basics Nutt: “... only the most skilled and experienced programmers are allowed to design and modify a computer's operating system.” Process – a program in execution - has an address space - process table, parent-child relationship The Shell
Operating System Overview Thread – a unit of work. Multithreading allows a process to be divided into a number of threads so multiple things can be done concurrently. Deadlocks - Memory Management – memories not big enough -> virtual memory I/O – Programmed, Intr driven, DMA Files, Security and more...
File management OS responsible for managing data on disks (programs, and data). Filesystems – a general way to store files File descriptors – a structure with info about open files File types – several types of files Big advancement: ZFS
Unix 1970 – Bell Labs version 7 – 1978 – ancestor to most modern UNIX systems BSD, SYSV, Linux, (Open)Solaris UNIX kernel – core of OS system calls – user hooks into kernel library calls – user land routines - eventually end up doing system calls
Unix Daemons – processes running (in the background) usually to perform some service. Example daemons – httpd, smtpd, sshd cron – clock daemon (start jobs at a time given in crontab) File permissions - ls, chmod - rwx, user, group, other
Unix development environment Editors – vi, emacs make compilers – cc, gcc debuggers – dbx, gdb IDE – sunstudio, eclipse Trace system calls: truss, strace Powerful tracing: Dtrace Homework: run 'truss ls'
Booting a Unix System Boot block boot loader (grub) start kernel start init (usually pid 1) start start-up scripts - flavors: BSD, SYSV, Solaris SMF - usually start services the system provides (many daemons)
Start up systems BSD rc scripts - shell scripts ran during boot - check filesystems and mount - start services and other things - many things in a few scripts SYSV init.d scripts - Have run levels (S, 0, 1, 2, 3..) - Scripts run when entering a run level - Have one script for each service
Solaris SMF Service Management Facility Introduced in Solaris 10 A big improvement over the past Services are defined commands: svcs, svcadm, svccfg Knows dependencies has milestones Will restart a daemon that dies XML files and scripts