- Software, který ovládá hardware
- usnadňuje psaní software
- abstrakce nad “železem”
- catch-all phrase for low-level software
- hranice nejsou přesně dané
- firmware: velmi nízkoúrovňoví software
- hardware-specific
- often executes on auxiliary processors
- aplikační software
- iteraguje s uživatelem
- správa hardware
- správa jiného software
- organizuje a spravuje data
- služby pro jiné programy
- vynucuje bezpečnost
- the kernel (jádro)
- system libraries
- system daemons / services
- user interface
- system utilities
Každý OS má tyto komponenty.
- nejnižší úroveň operačního systému
- pracuje v privilegovaném módu
- spravuje ostatní software (včetně OS komponent)
- vynucuje izolaci a bezpečnost
- nabízí programům nízkoúrovňové služby
- vrstva nad kernelem
- nabízí vysoko úrovňové služby
- používá kernelové služby na pozadí
- jednodušší k použití než kernel interface
- například libc
- programy běžící na pozadí (in the background)
- buď nabízí přimo služby
- nebo vykonává údržbu (maintance)
- periodic tasks
- nebo vykonává úkoly požádané kernelem
- interakce mezi uživatelem a počítačem
- hlavní shel je typicky součástí OS
- command line on UNIX or DOS
- grafická rozhraní na desktopech a windows
- také tlačítka na mikrovlnce
- building blocks pro UI aplikace
- tlačítka, záložky, text rendering, OpenGL, …
- poskytováno sytémovými knihovnami nebo/a daemony
- malé programy potřebné pro OS-related tasks
- konfigurace systému
- údržba souborového systému, daemon management, …
- programy jako
ls/dir, newfs, fdisk
- programy jako file managers
- bundled application software (comes out of the box; webový prohlížeč, přehrávač medií, …)
- (3rd-party) software management
- a programming environment
- a C compiler & linker
- C header files &c.
- source code
- kernel nabízí system calls
- ABI: Application Binary Interface
- defined in terms of machine instructions
- systémové knihovny nabízí API
- Application Programming Interface
- vysoko úrovňové interfaces
- typicky definoavé pomocí C funkcí
- system calls jsou dostupné i jako API
- ne vždy jsou APIs jako C funkce
- message-passing interfaces jsou
- založeno na inter-process communication
- možná komunikace i přes počítačovou síť
- API poskytováné systémovými daemony může být i “wrapped” C API
syslogd
- některé úkoly OS požadují HW cooperation
- virtual memory and CPU setup
- platform-specific device drivers
- but many do not
- scheduling algorithms
- memory allocation
- all sorts of management
- porting: změna programu, aby běžel v novém prostředí
- u OS je to typicky nový hardware
- CPU instruction set (ISA)
- buses, IO controlles
- firmware, power management
- OS podporuje mnoho platform
- Android na různých ARM SoC’s
- často také rozdílné CPU ISAs
- dlouhodobá tradice v UNIX-like systémech
- NetBSD runs 15 různých ISA
- special-purpose systemy jsou méně portable
- it makes a lot of sense to re-use code
- většina OS kódu je HW independent
- dříve byly OS psané v machine language, porting == rewriting again
- pro aplikace je důležitější OS než HW
- apps jsou psané v high-level jazycích a používají systémové knihovny
- k portování aplikací většinou stačí program recompile
- některé aplikace mohou fungovat stejně na různých OS (POSIX family)
- některé aplikace mohou běžet na Windows, macOS, UNIX, …
- Java, Qt (C++)
- webové aplikace
- mnoho systémů používá stejné služby
- rozdíl je v interfaces, které často high-level knihovny abstrahují
- instruction set sabstract over CPU details
- compilers abstract over instruction sets
- operating systems abstract over hardware
- portable runtimes abstract over operating systems
- applications sit on top of the abstractions
- more complexity
- less efficiency
- leaky abstractions
- easier to write and port software
- fewer constraints on HW evolution
- powerful hardware allows more abstraction
- embedded or real-time systems not so much
- the OS is smaller & less portable
- same for applications
- more efficient use of resources
- vhodné pro většinu situací
- flexibilní, ale komplexní a rozsáhlé
- běží, jak na serveru tak na clientu
- zmenšené verze běží na smartphonech
- podporuje velkou řadu hardware
- Př.: MS Windows, macOs, iOS, Android, Linux, …
- embedded systémy
- limited budget
- malé, pomalé, power-constrained
- těžko až skoro nemožné aktualizovat
- real-time systémy
- musí reagovat na real-world události
- často safety-critical
- roboti, autonomní auta, …
- OS jsou typicky velké a komplexní
- často mají více jak 100K řádků
- často až 10+ milionu
- many thousand man-years of work
- special-purpose systémy jsou mnohonásobně menší
- chybu (bugs) v kernelu jsou velmi špatné
- zapříčiňují systém crashes, ztrátu dat
- critical security problems
- bigger kernels means more bugs
- third-party drivers inside the kernel?
- lot of code in the kernel
- less abstraction, less isolation
- faster and more efficient
- move as much as possible out of kernel
- more abstration, more isolation
- slower and less efficient
- real-time & embedded systems often use microkernels
- isolation is good for reliability
- efficiency also depends on the workload
- real-time does not necessarily mean fast