SlideShare uma empresa Scribd logo
1 de 56
Sisteme de Operare
Introducere
Cine suntem
• Curs
– Alexandru Radovici (CA), Mihai Carabaș (CB), Răzvan Deaconescu (CC)
• Coordonator curs: Mihai Carabaș
• Laborator:
– Costin Carabaș, Răzvan Nițu, Răzvan Crainea, Elena Mihăilescu,
Alexandru Jercăianu, Ioana Ciornei, Irina Preșa, Alexandru Rotaru,
George Muraru, Octavian Grigorescu, Iustin Dumitrescu, Costin Lupu,
Mihai Bărbulescu, Adrian Șendroiu, Vladimir Diaconescu, Darius Mihai,
Vladimir Olteanu, Bogdan Purcareata, Alex Morega
• Colaboratori:
– Robert Baronescu
2
Cursuri de SO
USO
SO
SO2
kernel space
user space
system API
user interface
3
Legături cu alte discipline
Cunoștințe utile din
• USO
• Programare
• SD
• IOCLA
• CN
• PC
Cunoștințe utile pentru
• SO2
• CPL
• BD
• APP
• SPRC
4
Bibliografie
Andrew Tanenbaum, Modern Operating Systems,
2nd Edition
A. Silberschatz, P. Baer Galvin, G. Gagne, Operating
Systems Concepts, 9th Edition
Michael Kerrisk, The Linux Programming Interface,
Johnson H. Hart, Windows System Programming, 4th
Edition
5
Bibliografie suplimentară
• Beginning Linux Programming
• Advanced Programming in the Unix
Environment
• Linux System Programming
• Win32 Programming
• Programming Windows
• Linkers and Loaders
6
Resursele cursului de SO
• echipa
• wiki: http://ocw.cs.pub.ro/courses/so/
• moodle: http://cs.curs.pub.ro
• listă de discuții
• slide-uri cursuri
• catalog și calendar Google
• mașini virtuale
• interfața vmchecker
• documentație
• pagina de Facebook
7
Comunitatea SO
• întrebări, discuții, sugestii, feedback
• live (cursuri, laboratoare), listă, Facebook
– să parcurgeți indicațiile de comunicare pe listă
• colaborare în timpul laboratorului
– încurajăm să discutați și vă ajutați între voi
8
Conținut
Cursuri
• 14 cursuri
– 7 cursuri practice
• slide-uri
• suport bibliografic
– foarte important de parcurs
• bogat în informații
• interactiv
Laboratoare
• 12 laboratoare
– corelate cursurilor
– după curs
• practice
• joc, discuții, exerciții
• tutorial, task-based, learn
by doing
• încurajăm colaborarea
9
C Standard 11
Linux
Cursuri Practice
• Explicații
• Limbajul Rust
• Bootare Bare Metal
– C
– Rust
• Sisteme RTOS
– FreeRTOS
– Zephyr
– TockOS
10
Teme
Conținut
• Cross-platform
development
• Mini-shell
• Memorie virtuala
• Planificator de thread-uri
• Web server asincron
Dezvoltare
• Linux și Windows
• aprofundare API
• 8-20 de ore pe temă
• teste publice
– testare pe vmchcker
• întrebări și suport pe listă
11
Despre rezolvare teme
• Temele te ajută să înțelegi mai bine conceptele
• Temele îți dezvoltă abilitățile de programare
• Pot fi dificile, dar e “rewarding” când îți ies
• Temele sunt individuale
– Puteți discuta între voi în limitele bunului simț
– Întrebați cu încredere pe lista de discuții
– Parcurgeți regulile de realizare ale temelor
• Folosiți GitLab sau BitBucket sau GitHub (privat)
12
Examen
• Curs
– 4 lucrări de curs (1p)
• Sesiune
– examen (4p)
• Teme
– 5 teme (4 - 9p)
• Laborator
– 12 laboratoare (1p)
13
Computer Technology
14
Cuprins
• De ce (un curs) de SO?
• Despre cursul de SO
• Despre sisteme de operare
• Sisteme de calcul.
Hardware
• Concepte importante în SO
• Structura unui SO
15
Bibliografie
• Modern Operating Systems
– Capitolul 1
• Operating Systems Concepts
– Capitolul 1
16
Pornirea sistemului
Machine Boot
•x86: BIOS / UEFI
•ARM: Adresa de start
Bootloader
•x86: Lilo, GRUB2, Syslinux, NLDR, Windows Boot Manager
•ARM: U-Boot, Barebox
Sistemul de operare
•Windows
•Linux
Interfața cu utilizatorul (UI/GUI)
•Windows: Windows Explorer - explorer.exe
•Linux: XFCE, GNOME, KDE, ...
17
Ce este un SO?
OSCE, fig. 1.1, pg. 4 18
Ce este un SO?
• un set de programe
• vedere top-down: extensie a mașinii fizice
• vedere bottom-up: gestionar al resurselor
fizice
• scris în general în C
• relativ transparent utilizatorului (“trebuie să
meargă)
19SO: Curs 1: Introducere
Structura unui SO
• Nucleul (kernelul)
– Gestionează resursele fizice
– Oferă o interfață comună
aplicațiilor
• Programele de bază
– Permit interacțiunea cu
nucleul și cu sistemul fizic
– exemple: interpretoare de
comenzi, utilitare de
gestiune a utilizatorilor,
biblioteci
20
Legătura SO - hardware
• SO este primul nivel software peste hardware
• Un SO performant
– folosește facilitățile hardware
– expune facilitățile hardware aplicațiilor
• Hardware-ul are nevoie de SO pentru a putea
fi folosit (pentru a construi aplicații/software)
• SO evoluează pe măsură ce evoluează
hardware-ul
21
SISTEM DE CALCUL, HARDWARE
22
Sistem de calcul
• Sistemul fizic (hardware) + sisteme de operare
și aplicații
• Baza pentru a dezvolta aplicații, a folosi
aplicații, a construi sisteme
• În general interconectat cu alte sisteme
• De la servere cu mii de core-uri la dispozitive
mici din zona IoT (Internet of Things)
23SO: Curs 1: Introducere
Hardware-ul unui sistem de calcul
• Procesor (CPU)
– rulează codul (instrucțiunile) proceselor
• Memorie de lucru (RAM)
– stochează datele și codul proceselor
• Magistrale
– leagă CPU, module de memorie, dispozitive de I/E
• Dispozitive periferice (de intrare/ieșire, I/E, I/O)
– comunicarea cu exteriorul: utilizator, alte sisteme de calcul, alte dispozitive
• Spațiu de stocare (disc-uri, flash, ROM, NVRAM)
– Programe (din care vor lua naștere procese)
– Date pentru procese
– Informații pentru utilizator (fișiere)
24
Procesor și memorie
OSCE, fig. 1.7, pg. 16
25
Magistrale
https://en.wikipedia.org/wiki/Bus_%28computing%29
26
Exemplu
27
Memorie
OSCE, fig. 1.11, pg. 28
28
COMPONENTE IMPORTANT ÎN SO
29
Shell
• Interfața utilizator-sistem de operare
• CLI sau GUI
• Bash vs. Windows Explorer / GNOME / KDE
• Un proces care permite pornirea de alte
procese/aplicații
– “shell spawns a process”
30SO: Curs 1: Introducere
Procese
• Iau naștere dintr-un program executabil
• Program în execuție, entitate dinamică
– Noțiunea de “runtime” (timpul rulării) se referă la
proces
• Date și cod în memorie, se execută pe CPU
• Are asociate resurse: spațiu de adrese de
memorie, fișiere deschise, sockeți
• SO oferă protecție și comunicare inter-proces
• Ierarhie de procese la nivelul SO
Mai multe la cursurile 3 și 4
31SO: Curs 1: Introducere
Memoria unui proces
https://en.wikipedia.org/wiki/Virtual_address_spaceMai multe la cursurile 3 și 5
32SO: Curs 1: Introducere
Memorie virtuală
• Un proces are un spațiu virtual (inexistent de
fapt) de memorie
– Procesul are impresia că toată memoria îi aparține
• Memoria virtuală decuplează vederea procesului
de memoria sistemului
• Procesele lucrează cu adrese virtuale (din spațiul
fizic de adrese)
– Adresele fizice sunt adrese din memoria fizică
• SO mapează/asociază spațiul virtual al proceselor
cu memorie fizică
Mai multe la cursurile 6 și 7
33SO: Curs 1: Introducere
Thread-uri
• Un proces poate avea mai multe thread-uri
• Thread-urile partajează spațiul virtual de
adrese al procesului
• Utile să faci mai multe lucruri cu aceleași date
(din spațiul virtual de adrese al procesului)
• Permit folosirea facilităților hardware multi-
procesor
Mai multe la cursul 8
34SO: Curs 1: Introducere
Concurență și sincronizare
• Thread-urile sau procesele pot concura la
achiziția de resurse (date în memorie)
• Accesele concurente pot duce la date
inconsecvente sau blocaje
• Sincronizarea garantează accesul consecvent și
ordonat la date
Mai multe la cursul 9
35SO: Curs 1: Introducere
Moduri de execuție
• Procesorul are un mod privilegiat: supervisor mode, system
mode, kernel mode
– Pentru acțiuni privilegiate
– Aici rulează sistemul de operare
• Aplicațiile rulează în modul neprivilegiat: user mode
– Nu pot comunica cu hardware-ul sau cu alte procese
– Pot doar acționa asupra spațiului de memorie propriu
• Nucleul intermediază accesul proceselor la hardware sau la
resursele altor procese
• Separația modurilor asigură securitatea sistemului
• Tranziția user mode -> kernel mode = apel de sistem
Mai multe la cam toate cursurile următoare 
36
Traziția user mode – kernel mode
Mai multe la cam toate cursurile următoare  37
OSCE, fig. 1.10, pg. 22
Apeluri de sistem
Mai multe la cam toate cursurile următoare  38
OSCE, fig. 2.6, pg. 56
Fișiere
• Unități de stocare
• Deschise și folosite de procese
• Fișier pe disc (static) și fișier deschis (dinamic,
în cadrul unui proces)
• Fișier pe disc: nume, dimensiune, permisiuni,
timestamp-uri
• Fișier deschis: handle de fișier, cursor de fișier,
drepturi de deschidere, operații pe fișier
39
Mai multe la cam toate cursurile următoare 
STRUCTURA UNUI SO
40
Stiva software pentru un sistem de
calcul
SO: Curs 1: Introducere 41
Nucleu (kernel)
Utilitare de sistem, biblioteci low-level
Framework-uri, biblioteci, servicii
Aplicații
Nucleul (kernel-ul)
• Strict tehnic, nucleul este sistemul de operare
– Windows are ca nucleul WindowsNT din imaginea
ntoskrnl.exe
– Linux este nucleul unei distribuții GNU/Linux și
Android
– Mac OS X și iOS au ca nucleu XNU
• Încărcat la bootare apoi pornește primele aplicații
și gestionează hardware-ul
• Răspunde apelurilor de sistem ale proceselor
• Gestionează resursele hardware
• Garantează integritatea sistemului
SO: Curs 1: Introducere 42
Structura uzuală a SO (monolitic)
SO: Curs 1: Introducere 43
OSCE, fig. 2.13, pg. 69
SO monolotic vs. SO microkernel
SO: Curs 1: Introducere 44
https://en.wikipedia.org/wiki/Microkernel
SO monolotic vs. SO microkernel
(2)
Monolitic
• Eficient
• Coeziunea codului/datelor
• Mai puțin flexibil
• TCB (Trusted Computing
Base) mai mare (design mai
puțin sigur)
Microkernel
• Mai lent (comunicare între
servicii)
• Componentizabil, flexibil,
modular
• TCB redus (design mai sigur)
SO: Curs 1: Introducere 45
Mașini virtuale
SO: Curs 1: Introducere 46
OSCE, fig. 2.17, pg. 74
Windows
47
Linux
48
Minix 3
49
FreeRTOS
50
Zephyr
51
TockOS
52
Reminder: Resursele cursului de SO
• echipa
• wiki: http://ocw.cs.pub.ro/courses/so/
• moodle: http://cs.curs.pub.ro
• listă de discuții
• slide-uri cursuri
• catalog și calendar Google
• mașini virtuale
• interfața vmchecker
• documentație
• pagina de Facebook
53
Concluzie
• Cunoștințele de SO sunt utile pentru
– securitate
– depanare
– performanță
• Conceptele de SO sunt relativ complexe
• Sunt foarte importante legăturile între concepte
• Vom insista pe fiecare concept în următoarele cursuri
• Sistemul de operare este strâns legat de hardware
• Nucleul SO gestionează hardware-ul și asigură
securitatea sistemului
54
Cuvinte cheie
• sistem de operare (SO)
• comunitatea SO
• sistem de calcul
• hardware
• procesor
• memorie
• procese
• spațiu virtual
• memorie virtuală
• mod de execuție
• kernel mode
• user mode
• apel de sistem
• fișiere
• nucleu/kernel
• SO monolitic
• SO microkernel
• mașină virtulă
55
Întrebări
56

Mais conteúdo relacionado

Mais procurados

Sisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselorSisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselorAlexandru Radovici
 
from Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Worksfrom Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu WorksZhen Wei
 
Linux on ARM 64-bit Architecture
Linux on ARM 64-bit ArchitectureLinux on ARM 64-bit Architecture
Linux on ARM 64-bit ArchitectureRyo Jin
 
Course 102: Lecture 28: Virtual FileSystems
Course 102: Lecture 28: Virtual FileSystems Course 102: Lecture 28: Virtual FileSystems
Course 102: Lecture 28: Virtual FileSystems Ahmed El-Arabawy
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelSUSE Labs Taipei
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCKernel TLV
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)shimosawa
 
Uticaj komponennata na performanske racunara
Uticaj komponennata na performanske racunaraUticaj komponennata na performanske racunara
Uticaj komponennata na performanske racunaraNatasa Pantovic
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDPDaniel T. Lee
 
Linux kernel architecture
Linux kernel architectureLinux kernel architecture
Linux kernel architectureSHAJANA BASHEER
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)shimosawa
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLinaro
 
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...Linaro
 

Mais procurados (20)

Sisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselorSisteme de Operare: Planificarea proceselor
Sisteme de Operare: Planificarea proceselor
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
from Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Worksfrom Binary to Binary: How Qemu Works
from Binary to Binary: How Qemu Works
 
Linux on ARM 64-bit Architecture
Linux on ARM 64-bit ArchitectureLinux on ARM 64-bit Architecture
Linux on ARM 64-bit Architecture
 
Course 102: Lecture 28: Virtual FileSystems
Course 102: Lecture 28: Virtual FileSystems Course 102: Lecture 28: Virtual FileSystems
Course 102: Lecture 28: Virtual FileSystems
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
 
Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
Uticaj komponennata na performanske racunara
Uticaj komponennata na performanske racunaraUticaj komponennata na performanske racunara
Uticaj komponennata na performanske racunara
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
Linux kernel architecture
Linux kernel architectureLinux kernel architecture
Linux kernel architecture
 
Bus ou Barramento
Bus ou BarramentoBus ou Barramento
Bus ou Barramento
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Uc14 chap04
Uc14 chap04Uc14 chap04
Uc14 chap04
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
 
Block Drivers
Block DriversBlock Drivers
Block Drivers
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
 
Računarski sistem
Računarski sistemRačunarski sistem
Računarski sistem
 
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
 

Semelhante a Sisteme de Operare: Introducere

'Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc''Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc'Otilia-Loredana Tudor
 
Sisteme de Operare: Implementarea sistemelor de fisiere
Sisteme de Operare: Implementarea sistemelor de fisiereSisteme de Operare: Implementarea sistemelor de fisiere
Sisteme de Operare: Implementarea sistemelor de fisiereAlexandru Radovici
 
Prezentare generala a platformei Android
Prezentare generala a platformei AndroidPrezentare generala a platformei Android
Prezentare generala a platformei Androidmsg4alex
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxrefewe9176
 
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...Asociatia Techsoup Romania
 
2011.01.21 - Webcast - Siguranta si securitate in windows 7
2011.01.21 - Webcast - Siguranta si securitate in windows 72011.01.21 - Webcast - Siguranta si securitate in windows 7
2011.01.21 - Webcast - Siguranta si securitate in windows 7ITSpark Community
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 
Generarea de erori persistente in BIOS
Generarea de erori persistente in BIOSGenerarea de erori persistente in BIOS
Generarea de erori persistente in BIOSDefCamp
 
Modul 1 concepte de baza ale tehnologiei informatiei
Modul 1   concepte de baza ale tehnologiei informatieiModul 1   concepte de baza ale tehnologiei informatiei
Modul 1 concepte de baza ale tehnologiei informatieiLivius Bucur
 
Programatica codepax-16-11-2012
Programatica codepax-16-11-2012Programatica codepax-16-11-2012
Programatica codepax-16-11-2012Agora Group
 
Notiuni despre retele_de_calculatoare
Notiuni despre retele_de_calculatoareNotiuni despre retele_de_calculatoare
Notiuni despre retele_de_calculatoareSima Sorin
 
Sisteme operare-cl5
Sisteme operare-cl5Sisteme operare-cl5
Sisteme operare-cl5Stefi Kovacs
 

Semelhante a Sisteme de Operare: Introducere (20)

Curs linux 2
Curs linux 2Curs linux 2
Curs linux 2
 
'Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc''Documents.tips curs baze-de-date-5642553eddb8c.doc'
'Documents.tips curs baze-de-date-5642553eddb8c.doc'
 
vmchecker @SCS
vmchecker @SCSvmchecker @SCS
vmchecker @SCS
 
Sisteme de Operare: Implementarea sistemelor de fisiere
Sisteme de Operare: Implementarea sistemelor de fisiereSisteme de Operare: Implementarea sistemelor de fisiere
Sisteme de Operare: Implementarea sistemelor de fisiere
 
Prezentare generala a platformei Android
Prezentare generala a platformei AndroidPrezentare generala a platformei Android
Prezentare generala a platformei Android
 
Interactiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptxInteractiunea cu Utilizatorul în Python, Java.pptx
Interactiunea cu Utilizatorul în Python, Java.pptx
 
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
Conexiuni 2013 - Windows 8, Noul Office si solutii de productivitate in cloud...
 
2011.01.21 - Webcast - Siguranta si securitate in windows 7
2011.01.21 - Webcast - Siguranta si securitate in windows 72011.01.21 - Webcast - Siguranta si securitate in windows 7
2011.01.21 - Webcast - Siguranta si securitate in windows 7
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Curs linux 1
Curs linux 1Curs linux 1
Curs linux 1
 
Curs linux 1
Curs linux 1Curs linux 1
Curs linux 1
 
Generarea de erori persistente in BIOS
Generarea de erori persistente in BIOSGenerarea de erori persistente in BIOS
Generarea de erori persistente in BIOS
 
Unit inv a 9 a tic
Unit inv a 9 a ticUnit inv a 9 a tic
Unit inv a 9 a tic
 
2 Firebird Technical Ro
2 Firebird Technical Ro2 Firebird Technical Ro
2 Firebird Technical Ro
 
Modul 1 concepte de baza ale tehnologiei informatiei
Modul 1   concepte de baza ale tehnologiei informatieiModul 1   concepte de baza ale tehnologiei informatiei
Modul 1 concepte de baza ale tehnologiei informatiei
 
Programatica codepax-16-11-2012
Programatica codepax-16-11-2012Programatica codepax-16-11-2012
Programatica codepax-16-11-2012
 
Notiuni despre retele_de_calculatoare
Notiuni despre retele_de_calculatoareNotiuni despre retele_de_calculatoare
Notiuni despre retele_de_calculatoare
 
Curs1-POO-Loga
Curs1-POO-LogaCurs1-POO-Loga
Curs1-POO-Loga
 
planif_9_zi.doc
planif_9_zi.docplanif_9_zi.doc
planif_9_zi.doc
 
Sisteme operare-cl5
Sisteme operare-cl5Sisteme operare-cl5
Sisteme operare-cl5
 

Mais de Alexandru Radovici (20)

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
 
ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 

Sisteme de Operare: Introducere

  • 2. Cine suntem • Curs – Alexandru Radovici (CA), Mihai Carabaș (CB), Răzvan Deaconescu (CC) • Coordonator curs: Mihai Carabaș • Laborator: – Costin Carabaș, Răzvan Nițu, Răzvan Crainea, Elena Mihăilescu, Alexandru Jercăianu, Ioana Ciornei, Irina Preșa, Alexandru Rotaru, George Muraru, Octavian Grigorescu, Iustin Dumitrescu, Costin Lupu, Mihai Bărbulescu, Adrian Șendroiu, Vladimir Diaconescu, Darius Mihai, Vladimir Olteanu, Bogdan Purcareata, Alex Morega • Colaboratori: – Robert Baronescu 2
  • 3. Cursuri de SO USO SO SO2 kernel space user space system API user interface 3
  • 4. Legături cu alte discipline Cunoștințe utile din • USO • Programare • SD • IOCLA • CN • PC Cunoștințe utile pentru • SO2 • CPL • BD • APP • SPRC 4
  • 5. Bibliografie Andrew Tanenbaum, Modern Operating Systems, 2nd Edition A. Silberschatz, P. Baer Galvin, G. Gagne, Operating Systems Concepts, 9th Edition Michael Kerrisk, The Linux Programming Interface, Johnson H. Hart, Windows System Programming, 4th Edition 5
  • 6. Bibliografie suplimentară • Beginning Linux Programming • Advanced Programming in the Unix Environment • Linux System Programming • Win32 Programming • Programming Windows • Linkers and Loaders 6
  • 7. Resursele cursului de SO • echipa • wiki: http://ocw.cs.pub.ro/courses/so/ • moodle: http://cs.curs.pub.ro • listă de discuții • slide-uri cursuri • catalog și calendar Google • mașini virtuale • interfața vmchecker • documentație • pagina de Facebook 7
  • 8. Comunitatea SO • întrebări, discuții, sugestii, feedback • live (cursuri, laboratoare), listă, Facebook – să parcurgeți indicațiile de comunicare pe listă • colaborare în timpul laboratorului – încurajăm să discutați și vă ajutați între voi 8
  • 9. Conținut Cursuri • 14 cursuri – 7 cursuri practice • slide-uri • suport bibliografic – foarte important de parcurs • bogat în informații • interactiv Laboratoare • 12 laboratoare – corelate cursurilor – după curs • practice • joc, discuții, exerciții • tutorial, task-based, learn by doing • încurajăm colaborarea 9 C Standard 11 Linux
  • 10. Cursuri Practice • Explicații • Limbajul Rust • Bootare Bare Metal – C – Rust • Sisteme RTOS – FreeRTOS – Zephyr – TockOS 10
  • 11. Teme Conținut • Cross-platform development • Mini-shell • Memorie virtuala • Planificator de thread-uri • Web server asincron Dezvoltare • Linux și Windows • aprofundare API • 8-20 de ore pe temă • teste publice – testare pe vmchcker • întrebări și suport pe listă 11
  • 12. Despre rezolvare teme • Temele te ajută să înțelegi mai bine conceptele • Temele îți dezvoltă abilitățile de programare • Pot fi dificile, dar e “rewarding” când îți ies • Temele sunt individuale – Puteți discuta între voi în limitele bunului simț – Întrebați cu încredere pe lista de discuții – Parcurgeți regulile de realizare ale temelor • Folosiți GitLab sau BitBucket sau GitHub (privat) 12
  • 13. Examen • Curs – 4 lucrări de curs (1p) • Sesiune – examen (4p) • Teme – 5 teme (4 - 9p) • Laborator – 12 laboratoare (1p) 13
  • 15. Cuprins • De ce (un curs) de SO? • Despre cursul de SO • Despre sisteme de operare • Sisteme de calcul. Hardware • Concepte importante în SO • Structura unui SO 15
  • 16. Bibliografie • Modern Operating Systems – Capitolul 1 • Operating Systems Concepts – Capitolul 1 16
  • 17. Pornirea sistemului Machine Boot •x86: BIOS / UEFI •ARM: Adresa de start Bootloader •x86: Lilo, GRUB2, Syslinux, NLDR, Windows Boot Manager •ARM: U-Boot, Barebox Sistemul de operare •Windows •Linux Interfața cu utilizatorul (UI/GUI) •Windows: Windows Explorer - explorer.exe •Linux: XFCE, GNOME, KDE, ... 17
  • 18. Ce este un SO? OSCE, fig. 1.1, pg. 4 18
  • 19. Ce este un SO? • un set de programe • vedere top-down: extensie a mașinii fizice • vedere bottom-up: gestionar al resurselor fizice • scris în general în C • relativ transparent utilizatorului (“trebuie să meargă) 19SO: Curs 1: Introducere
  • 20. Structura unui SO • Nucleul (kernelul) – Gestionează resursele fizice – Oferă o interfață comună aplicațiilor • Programele de bază – Permit interacțiunea cu nucleul și cu sistemul fizic – exemple: interpretoare de comenzi, utilitare de gestiune a utilizatorilor, biblioteci 20
  • 21. Legătura SO - hardware • SO este primul nivel software peste hardware • Un SO performant – folosește facilitățile hardware – expune facilitățile hardware aplicațiilor • Hardware-ul are nevoie de SO pentru a putea fi folosit (pentru a construi aplicații/software) • SO evoluează pe măsură ce evoluează hardware-ul 21
  • 22. SISTEM DE CALCUL, HARDWARE 22
  • 23. Sistem de calcul • Sistemul fizic (hardware) + sisteme de operare și aplicații • Baza pentru a dezvolta aplicații, a folosi aplicații, a construi sisteme • În general interconectat cu alte sisteme • De la servere cu mii de core-uri la dispozitive mici din zona IoT (Internet of Things) 23SO: Curs 1: Introducere
  • 24. Hardware-ul unui sistem de calcul • Procesor (CPU) – rulează codul (instrucțiunile) proceselor • Memorie de lucru (RAM) – stochează datele și codul proceselor • Magistrale – leagă CPU, module de memorie, dispozitive de I/E • Dispozitive periferice (de intrare/ieșire, I/E, I/O) – comunicarea cu exteriorul: utilizator, alte sisteme de calcul, alte dispozitive • Spațiu de stocare (disc-uri, flash, ROM, NVRAM) – Programe (din care vor lua naștere procese) – Date pentru procese – Informații pentru utilizator (fișiere) 24
  • 25. Procesor și memorie OSCE, fig. 1.7, pg. 16 25
  • 30. Shell • Interfața utilizator-sistem de operare • CLI sau GUI • Bash vs. Windows Explorer / GNOME / KDE • Un proces care permite pornirea de alte procese/aplicații – “shell spawns a process” 30SO: Curs 1: Introducere
  • 31. Procese • Iau naștere dintr-un program executabil • Program în execuție, entitate dinamică – Noțiunea de “runtime” (timpul rulării) se referă la proces • Date și cod în memorie, se execută pe CPU • Are asociate resurse: spațiu de adrese de memorie, fișiere deschise, sockeți • SO oferă protecție și comunicare inter-proces • Ierarhie de procese la nivelul SO Mai multe la cursurile 3 și 4 31SO: Curs 1: Introducere
  • 32. Memoria unui proces https://en.wikipedia.org/wiki/Virtual_address_spaceMai multe la cursurile 3 și 5 32SO: Curs 1: Introducere
  • 33. Memorie virtuală • Un proces are un spațiu virtual (inexistent de fapt) de memorie – Procesul are impresia că toată memoria îi aparține • Memoria virtuală decuplează vederea procesului de memoria sistemului • Procesele lucrează cu adrese virtuale (din spațiul fizic de adrese) – Adresele fizice sunt adrese din memoria fizică • SO mapează/asociază spațiul virtual al proceselor cu memorie fizică Mai multe la cursurile 6 și 7 33SO: Curs 1: Introducere
  • 34. Thread-uri • Un proces poate avea mai multe thread-uri • Thread-urile partajează spațiul virtual de adrese al procesului • Utile să faci mai multe lucruri cu aceleași date (din spațiul virtual de adrese al procesului) • Permit folosirea facilităților hardware multi- procesor Mai multe la cursul 8 34SO: Curs 1: Introducere
  • 35. Concurență și sincronizare • Thread-urile sau procesele pot concura la achiziția de resurse (date în memorie) • Accesele concurente pot duce la date inconsecvente sau blocaje • Sincronizarea garantează accesul consecvent și ordonat la date Mai multe la cursul 9 35SO: Curs 1: Introducere
  • 36. Moduri de execuție • Procesorul are un mod privilegiat: supervisor mode, system mode, kernel mode – Pentru acțiuni privilegiate – Aici rulează sistemul de operare • Aplicațiile rulează în modul neprivilegiat: user mode – Nu pot comunica cu hardware-ul sau cu alte procese – Pot doar acționa asupra spațiului de memorie propriu • Nucleul intermediază accesul proceselor la hardware sau la resursele altor procese • Separația modurilor asigură securitatea sistemului • Tranziția user mode -> kernel mode = apel de sistem Mai multe la cam toate cursurile următoare  36
  • 37. Traziția user mode – kernel mode Mai multe la cam toate cursurile următoare  37 OSCE, fig. 1.10, pg. 22
  • 38. Apeluri de sistem Mai multe la cam toate cursurile următoare  38 OSCE, fig. 2.6, pg. 56
  • 39. Fișiere • Unități de stocare • Deschise și folosite de procese • Fișier pe disc (static) și fișier deschis (dinamic, în cadrul unui proces) • Fișier pe disc: nume, dimensiune, permisiuni, timestamp-uri • Fișier deschis: handle de fișier, cursor de fișier, drepturi de deschidere, operații pe fișier 39 Mai multe la cam toate cursurile următoare 
  • 41. Stiva software pentru un sistem de calcul SO: Curs 1: Introducere 41 Nucleu (kernel) Utilitare de sistem, biblioteci low-level Framework-uri, biblioteci, servicii Aplicații
  • 42. Nucleul (kernel-ul) • Strict tehnic, nucleul este sistemul de operare – Windows are ca nucleul WindowsNT din imaginea ntoskrnl.exe – Linux este nucleul unei distribuții GNU/Linux și Android – Mac OS X și iOS au ca nucleu XNU • Încărcat la bootare apoi pornește primele aplicații și gestionează hardware-ul • Răspunde apelurilor de sistem ale proceselor • Gestionează resursele hardware • Garantează integritatea sistemului SO: Curs 1: Introducere 42
  • 43. Structura uzuală a SO (monolitic) SO: Curs 1: Introducere 43 OSCE, fig. 2.13, pg. 69
  • 44. SO monolotic vs. SO microkernel SO: Curs 1: Introducere 44 https://en.wikipedia.org/wiki/Microkernel
  • 45. SO monolotic vs. SO microkernel (2) Monolitic • Eficient • Coeziunea codului/datelor • Mai puțin flexibil • TCB (Trusted Computing Base) mai mare (design mai puțin sigur) Microkernel • Mai lent (comunicare între servicii) • Componentizabil, flexibil, modular • TCB redus (design mai sigur) SO: Curs 1: Introducere 45
  • 46. Mașini virtuale SO: Curs 1: Introducere 46 OSCE, fig. 2.17, pg. 74
  • 53. Reminder: Resursele cursului de SO • echipa • wiki: http://ocw.cs.pub.ro/courses/so/ • moodle: http://cs.curs.pub.ro • listă de discuții • slide-uri cursuri • catalog și calendar Google • mașini virtuale • interfața vmchecker • documentație • pagina de Facebook 53
  • 54. Concluzie • Cunoștințele de SO sunt utile pentru – securitate – depanare – performanță • Conceptele de SO sunt relativ complexe • Sunt foarte importante legăturile între concepte • Vom insista pe fiecare concept în următoarele cursuri • Sistemul de operare este strâns legat de hardware • Nucleul SO gestionează hardware-ul și asigură securitatea sistemului 54
  • 55. Cuvinte cheie • sistem de operare (SO) • comunitatea SO • sistem de calcul • hardware • procesor • memorie • procese • spațiu virtual • memorie virtuală • mod de execuție • kernel mode • user mode • apel de sistem • fișiere • nucleu/kernel • SO monolitic • SO microkernel • mașină virtulă 55