Documente Academic
Documente Profesional
Documente Cultură
- Generalităţi -
+
Introducere in UNIX
06/30/2020 1
Sisteme de operare
O privire de ansamblu
Ce este un sistem de operare?
• Set de programe ce administrează resursele unui calculator
• O interfaţă între utilizatori şi hardware – o "arhitectură” de mediu
• Permite stocarea convenabilă de date; ascunde chestiunile de
detaliu
• Permite utilizarea eficientă a sistemului, desfăşurarea în paralel a
mai multor activităţi, înlătură irosirea ciclurilor de ceas
• Oferă posibilitatea de protecţie a informaţiilor
• Oferă fiecărui utilizator o “felie” din totalul resurselor sistemului
• Acţionează ca un program de control.
06/30/2020 2
Sisteme de operare
O privire de Poziţia SO
ansamblu
Utilizatori
(Oameni)
Interfaţa
program
Programe
utilizator
Interfaţa SO
SO
Interfaţa hardware/
Instrucţiuni
privilegiate
Disc/Procesor/
06/30/2020 3
Memorie
Sisteme de operare
Componente
O privire de
ansamblu
06/30/2020 4
Sisteme de operare Componente
O privire de ansamblu
Activitatea UCP este irosită dacă un job stă să aştepte pentru o
operaţie de I/O. Acest lucru a dus la:
06/30/2020 7
Sisteme de operare
Suport
O privire de ansamblu hardware
O serie de
dispozitive
alcătuiesc un
sistem.
Aceste
dispozitive pot
genera un
semnal electric
(care se numeşte
întrerupere) ce
captează atenţia
UCP.
06/30/2020 8
Sisteme de operare
Suport
O privire de ansamblu hardware
Întreruperi - un echipament ce trimite un semnal de “deranj”
către UCP pentru a obţine un serviciu. Diferit faţă de acţiunea
UCP de sondare.
06/30/2020 10
Sisteme de operare
Ierarhia de
O privire de ansamblu memorie
Memoria ultra-rapidă este foarte scumpă.
SO administrează ierarhia memoriei pentru a utiliza resursele
în mod eficient.
06/30/2020 11
Sisteme de operare
Protecţia
O privire de ansamblu
06/30/2020 12
Sisteme de operare
Protecţia
O privire de ansamblu
Memoria Un program utilizator poate accesa doar propria
memorie logică. De exemplu, nu poate modifica cod supervisor.
Depinde de o schemă de translatare a adreselor.
06/30/2020 13
Sisteme de operare
Protecţia (şi
O privire de ansamblu securitatea)
UCP Ceasul sistem previne ca programele să folosească tot
timpul UCP. Acest ceas determină o întrerupere ce face ca SO
să preia controlul de la un program utilizator.
- Partajarea resurselor
- Arhitecturi multiprocesor
- Sisteme cluster
06/30/2020 14
UNIX – Scurt istoric
Originile UNIX: AT&T Bell Laboratories + GE + MIT
– SO Multics
Ken Thompson
Dennis Ritchie
06/30/2020 16
UNIX
Atuuri UNIX:
- Bazat pe standarde
- Puternic, flexibil, scalabil, securizat
- Suport din partea producătorilor de echipamente
- SO matur şi stabil
- Bine integrat cu protocoalele de reţea TCP/IP
- Folosit pe scară largă pentru aplicaţii critice
Componente:
- Kernel
- Shell
- Sistemul de fişiere
- Comenzi
06/30/2020 17
UNIX
06/30/2020 18
UNIX
06/30/2020 19
UNIX
Kernelul:
06/30/2020 23
Arhitectura generală
UNIX
06/30/2020 24
Bibliografie
Sisteme de operare - R. Zota, A. Vasilescu, Ed.
ASE, 2015
06/30/2020 25
Introducere în Sisteme de operare
1.1 – Bazele SO
1.2 – Microsoft Windows
1.3 – Unix si Linux pe Desktop
1.4 – Bazele NOS
Introducere în Sisteme de operare
https://techcrunch.com/2016/11/16/microsoft-joins-
the-linux-foundation/
Comenzi Unix/Linux introductive
who am I (whoami)
echo $LOGNAME
id –un
uname –a
hostname
Caractere speciale:
~ “home directory”
/ “root directory” – directorul rădăcină al sist de
fișiere Unix/Linux
Orice cale absolută pornește din rădăcină (root):
/home/ubuntu/dir1/file01
O cale care nu pornește din rădăcină se numește
cale relativă:
dir1/dir2/file02
Comenzi Unix/Linux introductive
(seminar)
Pentru crearea unui shell script:
$ ./program01
O privire de ansamblu a SO pentru PC-uri
Calculatoarele de tip
desktop (microcomputere)
au devenit populare la
începutul anilor ‘80.
Utilizatorii acestor prime
PC-uri foloseau sistemele
pentru îndeplinirea unor
funcţii diverse, precum
procesare de texte,
contabilitate sau jocuri pe
calculator.
Productivitatea era însă
limitată de imposibilitatea
acestora să partajeze
informaţii cu alte sisteme.
PC-urile şi reţelele de
calculatoare
Pe masură ce tehnologia computerelor a evoluat, companiile
au început să-şi instaleze reţele locale (LAN) pentru a permite
interconectarea PC-urilor desktop în scopul partajării datelor
şi al perifericelor (imprimante, spre exemplu).
Un sistem de operare de reţea (NOS) necesită mai multă
putere de procesare decât versiunea desktop.
A apărut astfel o nouă categorie de PC-uri: serverele de reţea.
Aceste calculatoare rulează un NOS şi au devenit punctul
central al reţelelor locale de PC-uri.
PC-urile şi reţelele de calculatoare
Navigarea Web, electronic
mail (e-mail) şi alte aplicaţii
bazate pe Internet sunt
acum în centrul utilizării
calculatoarelor.
Pentru a oferi acces la
aceste tehnologii Internet,
marile companii de software
(Microsoft şi altele) şi-au
refacut sistemele de
operare de tip desktop.
SO de tip desktop includ
astăzi multe dintre
facilităţile şi serviciile
disponibile odinioară doar
pentru sistemele de operare
de reţea (NOS).
Kernel-ul
Curs 3
Caracteristicile unui SO modern
Comenzi de bază
Unix/Linux
• cd (change directory) – comandă
folosită pentru a naviga prin
sistemul de fişiere
• cd ..
• cd
• cd ~
• cd $HOME
• cd /etc/opt
Comenzi de bază
Unix/Linux
• pwd (print working directory) – comandă
folosită pentru afişarea directorului
curent de lucru
• ls (list) – comandă folosită pentru listarea
conţinutului unui director
• ls
• ls -ls
• ls -la
• ls -R
• ls –lR > lista.txt
Comenzi de bază
Unix/Linux
• mv (move) – comandă folosită
pentru redenumirea unui fişier
• mv file1 file2
• mv file1 dir1
• cp (copy) – comandă folosită pentru
copierea unui fişier
• cp file1 file2
Comenzi de bază
Unix/Linux
• rm (remove) – comandă folosită
pentru ? unui fişier
• rm file2
• rmdir (remove directory) – comandă
folosită pentru ? unui director, dacă
acesta este gol
• rmdir dir_gol
• rm –r dir_care_nu_este_gol
Test 1
• ls –l | pause
• cat files > pause
• cat files | more
• ls –l | more
Care dintre următoarele comenzi va face
listarea conţinutului directorului curent ecran
cu ecran ?
Test 2
• -w
• -i
• -r
• -F
Dacă dorim să copiem sau să mutăm un
fişier în altă locaţie şi să fim avertizaţi
pentru a nu şterge accidental un fişier
existent, ce opţiune trebuie să folosim ?
Test 3
• copy test /dir3
• cp test ../dir3
• copy test ../dir3
• cp /notes dir3
Directorul curent este /home/stud1/dir2.
Dacă dorim să copiem fişierul test din
directorul curent în directorul dir3, ce
comandă putem utiliza ?
Test 4
• whoisloggedon | sort
• who |sort
• whois | sort
• id | sort
Pentru a vedea cine este conectat la
sistem, iar rezultatul să fie sortat după
user id, ce comandă putem folosi ?
Test 5
• chmod 742 fisier
• chmod 754 fisier
• chmod 764 fisier
• chmod 731 fisier
Care dintre comenzile anterioare va acorda
drept de citire, scriere, execuţie pentru
utilizator, drept de citire şi scriere pentru
grup şi drept de citire pentru ceilalţi ?
Test 6
• chmod g+x fisier
• chmod u-e fisier
• chmod g+e fisier
• chmod o+x fisier
Care dintre comenzile anterioare va acorda
permisiune de execuţie pentru grup ?
Caractere de control în
UNIX
• Aşa numitele caractere de control sunt utilizate pentru a îndeplini
anumite funcţii, precum oprirea sau continuarea afişării pe ecran,
terminarea execuţiei unui program, etc.
• Majoritatea tastaturilor de PC au două taste de control
(inscripţionate cu Ctrl), în stânga jos, respectiv dreapta jos. Atunci
când este afişată pe ecran, tasta Ctrl este reprezentată de semnul ^
wc pico.save
4 13 64 pico.save
4 linii, 13 cuvinte, 64 de octeţi
Alte comenzi pentru lucrul cu
fişiere
• Comanda diff (difference) –utilizată pentru a
compara două fişiere text şi a afla diferenţele
dintre ele
Sintaxa generală:
diff [optiune] fisier_1 fisier_2
Rezultatul comenzii afişează diferenţele linie cu
linie dintre cele două fişiere text
Putem folosi două optiuni:
-i ignoră diferenţele între litere mari şi mici
-c oferă o comparare detaliată: întâi sunt
afişate datele referitoare la creare pentru cele
două fişiere, apoi liniile din fisier_1, cu semnul –
in faţa celor diferite faţă de cele din fisier_2. La
fel pentru fisier_2, cu semnul + pentru liniile
diferite faţă de fisier_1
Comenzi Unix
• http://www.computerhope.com/
unix.htm
Caracteristicile unui SO modern
• Arhitectură Microkernel
• Multithreading
• Multiprocesare simetrică
• Sisteme de operare distribuite
• Proiectare orientată obiect
Introducere
Prezentare generală a caracteristicilor
unui sistem de operare de reţea
1
Pipes, redirection and REGEX
Redirecting both STDERR and STDOUT with &>
3
New Unix/Linux commands
find – used to find files corresponding to a
certain criteria
find starting_dir matching_criteria [options]
find [starting directory] [search option] [search criteria]
[result option]
Examples:
find /usr –name startx
find /etc -name hosts 2> errors.txt
find /etc -name hosts 2> /dev/null
find /etc -name hosts -ls 2> /dev/null
find /usr –name ‘*tif’
find . –name dir05 –type d (d – directory, f - file) 4
find command
Search files by size:
find /etc –size +300 (size more than 300 blocks –
one block is 512 bytes)
When you specify a file size, you can give the size in bytes
(c), kilobytes (k), megabytes (M) or gigabytes (G)
sysadmin@localhost:~$ find /etc -size 10c -ls
2>/dev/null (finds files that are exactly 10 bytes
large)
find . –mtime +5
(matches files modified more than 5 days ago)
find ~ –perm 777
find ~ –user stud03 –ls > listastud03 5
Using multiple options for find
command
If you use multiple options, they act as an "and",
meaning for a match to occur, all of the criteria must
06/30/2020
match, not just one.
As an example, the following command will display all
files in the /etc directory structure that are 10 bytes in
unui SO
Structura si componentele
size and are plain files:
sysadmin@localhost:~$ find /etc -size 10c -type f -ls
2>/dev/null
432 4 -rw-r--r-- 1 root root 10 Jan 28 2015 /etc/adjtime
73468 4 -rw-r--r-- 1 root root 10 Nov 16 20:42
/etc/hostname
6
Using the cut Command to Filter File
Contents
The cut command can extract columns of text from a
file or standard input. A primary use of the cut
06/30/2020
command is for working with delimited database
files.
sysadmin@localhost:~$ cut -d: -f1,5-7 mypasswd
unui SO
Structura si componentele
root:root:/root:/bin/bash
daemon:daemon:/usr/sbin:/bin/sh
bin:bin:/bin:/bin/sh
sys:sys:/dev:/bin/sh
sync:sync:/bin:/bin/sync
7
Using the cut Command to Filter File
Contents
Using the cut command, you can also extract
columns of text based upon character position with
06/30/2020
the -c option. This can be useful for extracting fields
from fixed-width database files. For example, the
following will display just the file type (character
#1), permissions (characters #2-10) and filename
unui SO
Structura si componentele
(characters #50+) of the output of the ls -
l command:
sysadmin@localhost:~$ ls -l | cut -c1-11,50-
total 12
drwxr-xr-x Desktop
drwxr-xr-x Documents
drwxr-xr-x Downloads 8
drwxr-xr-x Music
drwxr-xr-x Pictures
grep (usually used to search inside a file or in the output of a
command)
grep [options] what_to_search file_name
Examples:
9
Regular expressions
• A Regular Expression is a collection of "normal"
and "special" characters that are used to match
simple or complex patterns. Normal characters
are alphanumeric characters which match
06/30/2020
themselves. For example, an a would match an a.
Regular Expression Matches
. Any single character
unui SO
Structura si componentele
[] A list or range of characters to
match one character, unless
the first character is the
caret ^, and then it means any
character not in the list
* Previous character repeated
zero or more times
^ Following text must appear at
beginning of line 10
06/30/2020
$ grep 'a..' example.txt
abcddd
$ grep 'a..c' example.txt
unui SO
Structura si componentele
11
Regular expressions -
examples
For example, the following command matches two
characters, the first is either an a or a b while the
second is either an a, b, c or d:
$ grep '[ab][a-d]' example.txt
06/30/2020
abcddd
Note that you can either list out each possible
unui SO
character [abcd] or provide a range [a-d] as long as
Structura si componentele
the range is in the correct order. For example, [d-
a] wouldn't work because it isn't a valid range:
$ grep '[d-a]' example.txt
grep: Invalid range end
12
Regular expressions -
examples
To indicate that you want to match a character that
is not one of the listed characters, start your [ ] set
with a ^ symbol. For example, the following will
demonstrate matching a pattern that includes a
06/30/2020
character that isn't an a, b or c followed by a d:
$ grep '[^abc]d' example.txt
abcddd
unui SO
Structura si componentele
The * character can be used to match "zero or more
of the previous character". For example, the
following will match zero or more d characters:
$ grep 'd*' example.txt
abcddd
13
Regular expressions -
examples
When you perform a pattern match, the match could
occur anywhere on the line. You may want to specify
that the match occurs at the beginning of the line or
the end of the line. To match at the beginning of the
06/30/2020
line, begin the pattern with a ^ symbol.
In the following example, another line is added to
the example.txt file to demonstrate the use of the ^
unui SO
Structura si componentele
symbol:
$ echo "xyzabc" >> example.txt
$ cat example.txt
abcddd
xyzabc
$ grep "a" example.txt
abcddd 14
xyzabc
$ grep "^a" example.txt
Regular expressions -
examples
In order to specify the match occurs at the end of line,
end the pattern with the $ character. For example, in
order to only find lines which end with the letter c:
$ grep "c$" example.txt
06/30/2020
xyzabc
$ grep "cd*" example.txt
unui SO
Structura si componentele
abcddd
xyzabc
abcd*
If you want to look for an actual * character, place
a \ character before the * character:
$ grep "cd\*" example.txt
abcd*
15
Structura şi componentele unui SO
http://zota.ase.ro/so
06/30/2020 Structura şi 16
componentele unui SO
Structura şi componentele
unui SO
• Componente
• Apeluri de sistem
• Integrarea componentelor
• Maşina virtuală
06/30/2020 Structura şi 17
componentele unui SO
Structura SO Componente de
sistem
Managementul proceselor
Managementul memoriei principale
Managementul fişierelor
Managementul sistemului I/O
Managementul memoriei secundare
Conectarea la reţea
Sistemul de protecţie
Sistemul de interpretare al comenzilor
Componente de
Structura SO sistem
Managementul proceselor
Un proces este o instanţă a unui program în execuţie (un program este pasiv,
un proces este activ).
Un proces are diverse resurse (timp UCP alocat, fişiere) şi atribute ce trebuie
administrate.
Managementul proceselor include:
Managementul I/O
· Sistemul “buffer caching”
· Cod generic pentru drivere de echipamente
· Drivere pentru fiecare dispozitiv - translatează cererile de
citire/scriere în comenzi de poziţionare pe disc
Programe de sistem
• Compilatoare/link-editoare/asambloare, etc.
• Comunicaţii (ftp, telnet, ssh, etc.)
• Interpretoare de comenzi – programe ce preiau secvenţe de control
(comenzi) (shell, interfaţă grafică)
Componente de
Structura SO sistem
Exemple de
apeluri de sistem:
“Asamblarea”
Structura SO componentelor
SO
O structură simplă:
MS-DOS
Programarea aplicaţiilor
Drivere MS-DOS
Manipularea întreruperilor ocupă cel mai mult din timpul nucleului NT, o
întrerupere NT fiind generată pentru fiecare interacţiune a subsistemelor
administratorului NT.
Nucleul NT rulează în mod privilegiat şi de aceea nu poate fi niciodată
expulzat din memorie.
Structura SO Administratorul
NT
Managerul I/O
Acesta are în sarcină administrarea tuturor intrărilor şi ieşirilor pentru
sistemul de operare Windows.
Utilizatorul virtual
Utilizatorul fizic
Maşina virtuală
VirtualBox (Sun/Oracle) -
http://www.virtualbox.org/wiki/VirtualBox
VMware -
http://www.vmware.com/products/player/faqs.html
QEMU – wiki.qemu.org
Sisteme de operare
Curs #6
Sisteme de fișiere
2
Structura arborescentă a unui sistem
de fişiere
3
Structura arborescentă a unui sistem
de fişiere
Exemplu Windows:
4
Conţinutul celor mai importante
directoare UNIX
5
Cele mai importante directoare Linux
13
Caracteristici FAT16 şi FAT32
Dimensiunea
32 KB 4 KB
clusterului
Numărul de
65,526 524,208
intrări FAT
Dimensiunea
~ 128 KB ~ 2 MB
tabelei FAT
14
Caracteristici FAT16 şi FAT32
• Dacă mărimea volumului FAT32 creşte de la 2 GB
la 8 GB, dimensiunea tabelei FAT creşte de la 2
MB la 8 MB. În acest caz nu contează că volumul
FAT32 va irosi câţiva MB de spaţiu de pe disc
pentru a memora tabela FAT.
• Problema este că tabela FAT este foarte des
referită în momentul utilizării normale a discului
deoarece conţine toate referirile către clustere
pentru fiecare fişier din acest volum; astfel,
dimensiunea mare a tabelei FAT poate influenţa
negativ viteza de lucru.
15
Caracteristici FAT16 şi FAT32
• Practic fiecare sistem implementează un
mecanism de disk caching pentru a ţine în
memorie structurile discului fecvent accesate
precum tabela FAT. Operaţiunea de cache a
discului implică utilizarea memoriei principale
pentru a stoca informaţii referitoare la disc ce
sunt necesare în mod regulat, pentru a evita
citirea în permanenţă de pe disc (foarte lent în
comparaţie cu memoria).
• Atunci când tabela FAT este mică (cum ar fi 128
KB pentru FAT16) întreaga tabelă FAT poate fi
stocată mai uşor în memorie şi de fiecare dată
când se caută ceva în FAT se ia din memorie.
Atunci când tabela creşte însă la 8 MB, sistemul
este forţat să aleagă între două alternative: fie să 16
folosească o cantitate considerabilă de memorie
Caracteristici FAT16 şi FAT32
• Din această cauză trebuie redusă limita
dimensiunii tabelei FAT la o mărime rezonabilă. În
cele mai multe cazuri este o problemă de alegere a
unei balanţe între dimensiunea clusterului şi
dimensiunea FAT (cel mai bun exemplu fiind acela
pentru FAT32).
• Din moment ce FAT32 poate avea (maxim)
aproximativ 268 milioane de clustere, dimensiunea
de 4 KB pentru un cluster este capabilă din punct
de vedere tehnic să ofere suport un disc de 1 TB.
Singura problemă este că, în acest caz,
dimensiunea tabelei FAT va avea peste 1 GB! (268
milioane înmulţit cu 4 bytes pentru fiecare intrare
în tabelă).
• Astfel, FAT32 foloseşte clustere de 4 KB pentru
volume până la 8 GB în dimensiune, apoi foloseşte
clustere de dimensiuni mai mari, ca în tabelul 17
Dimensiunea clusterelor la FAT
32
4 KB 0.5 GB 8 GB
8 KB 8 GB 16 GB
16 KB 16 GB 32 GB
32 KB 32 GB 64 GB
18
Caracteristici FAT32
• După cum se poate remarca, cu toate că FAT32
“promisese” că va rezolva problemele discurilor de
dimensiuni mari, în realitate nu a fost chiar aşa. În
momentul în care se folosesc partiţii mai mari de 32 GB,
suntem înapoi în cazul folosirii clusterilor de 32 KB, atât
de huliţi în cazul FAT16. Desigur, 32 GB înseamnă mult
mai mult decât 1 GB, dar FAT32 este totuşi o soluţie
temporară aleasă până la implementarea unui sistem de
fişier cu adevărat performant (NTFS).
• În tabelul următor se pot vedea dimensiunile tabelei FAT
(în MB) în funcţie de dimensiunea partiţiei, pentru diferite
mărimi ale clusterilor. Putem vedea că FAT32 nu utilizează
clustere de 4 KB decât până la partiţii de 8 GB, altfel s-ar
consuma cantităţi considerabile de memorie pentru a
stoca tabela FAT. Intrările marcate cu bold din tabelă ne
arată ce va alege FAT32 pentru o partiţie de acea
dimensiune (Microsoft menţine dimensiunea tabelei FAT 19
Dimensiunile tabelei FAT32 în funcţie
de mărimea partiţiei şi mărimea
clusterilor
Dimensiunea 16 KB 32 KB
4 KB clusteri 8 KB clusteri
partiţiei clusteri clusteri
8 GB 8 MB 4 MB 2 MB 1 MB
16 GB 16 MB 8 MB 4 MB 2 MB
32 GB 32 MB 16 MB 8 MB 4 MB
64 GB 64 MB 32 MB 16 MB 8 MB
20
NTFS – New Technology File
System
Începând cu Windows 2000, NTFS este sistemul de fişiere
nativ.
NTFS foloseşte indexe de cluster pe 64 de biţi.
Această capacitate oferă abilitatea de a adresa volume
până la 16 exabytes. Multiples of bytes
SI decimal prefixes Binary
usage
Name Value
(Symbol)
21
Caracteristici NTFS
Caracteristici
Importanţă
NTFS
Controlul Stabilirea drepturilor de acces se poate
accesului face atât pentru fişiere individuale cât şi
pentru directoare.
Conţine înregistrări pentru fiecare fişier şi
MFT (Master director din NTFS;
File Table) Înregistrările cu privire la organizarea
NTFS şi MFT sunt redundante în cazul în
care prima înregistrare devine coruptă;
Fişierele de dimensiune mică (sub 1500
octeţi) sunt stocate în întregime în MFT
pentru acces mai rapid.
Atributele Atributele fişierelor sunt conţinute în
fişierelor NTFS înregistrarea MFT a fişierului. Lista
atributelor fişierelor poate fi
particularizată pentru anumite medii (Mac,
UNIX) şi adăugată pentru a extinde
funcţionalitatea NTFS. 22
Caracteristici NTFS
Conformitate Conformitatea cu standardul POSIX permite
POSIX aplicaţiilor UNIX accesul la fişiere stocate în
NTFS sub Windows. Pentru a face asta, NTFS
are nevoie de câteva atribute de fişier unice
specifice POSIX cum ar fi:
- Nume de fişiere sensibile la majuscule;
- Legături hard (hard-link) ce permit unui fişier
să fie accesat de mai multe nume de fişiere;
- Atribute suplimentare "time stamp" care să
identifice momentul în care un fişier a fost
accesat/modificat ultima oară.
Suport Macintosh Serviciile Windows pentru Macintosh permit
fişierelor să fie accesate atât de utilizatorii
Macintosh cât şi de clienţii Windows. Pentru
utilizatorii Mac serverul NT arată ca un server
AppleShare. NTFS suportă atribute de fişiere
Mac (resource şi data forks) precum şi Finder.
Sunt suportate, de asemenea, drepturi
Macintosh de control al accesului.
23
Caracteristici NTFS
24
Master File Table - NTFS
• https
://docs.microsoft.com/en-us/previous-versions/windows/it-pro
/windows-vista/cc766145(v=ws.10)?
redirectedfrom=MSDN
27
Alte sisteme de fişiere
• Sistemul de fişiere implicit pe Linux este ext3
(third extended filesystem) sau ext4
Informaţii despre aceste sisteme de fișiere:
• http://en.wikipedia.org/wiki/Ext3
• http://en.wikipedia.org/wiki/Ext4
• JFS (Journaling FileSystem) este un sistem de
fişiere creat de IBM. A fost folosit pe versiunea
de Unix de la IBM, AIX, precum şi pe versiuni de
Linux.
• OCFS2 (Oracle Cluster File System) – sistem
de fişiere creat de Oracle pentru clustere Linux.
https://oss.oracle.com/projects/ocfs2/
28
Sisteme de fişiere pentru Linux
29
Comenzi Unix legate de HD şi
partiţii
• df (disk free) – utilizată pentru a determina mărimea
spaţiului liber de pe disc
• df –h (h = human readable)
• du (disk usage) – utilizată pentru a determina spaţiul
ocupat de un director în număr de blocuri de 512 octeţi
• du –k (spaţiul ocupat în blocuri de câte 1 KB)
• du –k | tail -1
30
Comenzi de backup și arhivare de
fișiere-Linux
• Arhivarea și compresia fișierelor reprezintă
operațiile utilizate atunci când unul sau mai multe
fișiere trebuie transmise sau stocate în mod eficient.
Există două aspecte cu privire la această operație:
• Arhivarea – Reprezintă combinarea mai multor fișiere
într-unul singur, ceea ce facilitează transmiterea
acestora
• Compresia – Reprezintă reducerea dimensiunilor
fișierelor prin eliminarea informației redundante
• Putem arhiva mai multe fișiere într-o singură arhivă și
apoi o putem comprima, sau putem comprima un fișier
individual. Prima operație se numește arhivare, iar cea
de-a doua se numește comprimare.
• Operația de preluare a unei arhive, decomprimare și
extragere a unuia sau a mai multor fișiere poartă
numele de dezarhivare. 31
Comprimarea fișierelor
• Comprimarea fișierelor le face să aibă dimensiuni
mai mici prin eliminarea informațiilor duplicate, ele
putând fi restaurate atunci când este necesar.
Există două feluri de comprimare:
• “Lossless”: Comprimare fără pierderea niciunei
informații din fișierul original. Comprimarea și
decomprimarea fișierului lasă fișierul original intact.
• “Lossy”: În acest caz comprimarea se face prin
eliminarea unor informații din fișierul original astfel
încât operația de decompresie va genera un fișier puțin
diferit față de cel original. Spre exemplu, un fișier
imagine cu două nuanțe apropiate de roșu poate fi
făcut mai mic prin considerarea acestor două nuanțe
la fel. De cele mai multe ori, ochiul uman nu poate face
diferența între aceste două nuanțe.
32
Compresia fișierelor
• În concluzie, compresia de tip “lossy” este utilizată în
cazul fișierelor media deoarece rezultatul este sub
forma unor fișiere de dimensiuni reduse și, de regulă,
oamenii nu pot face diferența între original versiunea
modificată (comprimată).
• Pentru fișiere ce trebuie să rămână nemodificate
(documente, fișiere de tip log sau software) trebuie să
folosim compresia de tip “lossless”.
• Majoritatea formatelor de imagini, precum GIF, PNG
sau JPEG implementează algoritmi de compresie de tip
“lossy”.
33
Comenzi de backup -
UNIX/Linux
• tar (tape archive) –standard pentru toate versiunile de
Unix
Sintaxa generală:
• tar funcţie [modificator] fisier_destinatie fisier(e) |
directoare
• Funcții tar:
– c (create) pentru crearea unei arhive
– t (table of contents) – pentru vizualizarea tabelei conținut
a fişierului tar
– x (extract) folosit pentru extragerea fisierelor din arhiva
• modificatori:
– f (filename) – fișierul tar va fi creat; altfel se alege
dispozitivul specificat de variabila de mediu TAPE, dacă
este setată; dacă nu, se foloseşte valoarea implicită din
/etc/default/tar
– v (verbose) – împreună cu funcţia t oferă informaţii
34
suplimentare despre intrările din fişierul tar.
Comenzi de compresie - UNIX
Exemple pentru tar:
Compresia fișierelor:
compress –v ex.file
Decompresia:
uncompress –v ex.file.Z
1
Sistemul de operare şi
procesele
Definiţie
Cu ce se ocupă?
Planificarea proceselor
Comunicaţia între procese
2
PROCESE Definiţii
Un program reprezintă ceva pasiv, static; procesul
este activ (proces = instanţă a unui program în
execuţie). Exemple de atribute asociate cu un proces:
starea, memoria alocată, resurse UCP, progresul
înregistrat.
3
INTRODUCERE
0
În exemplul simplu
100
din figura 1 este Dispecer
Contor Program
prezentată o hartă
10000
a memoriei pentru
trei procese. 6000
Pentru Procesul A
simplificare, putem
presupune că nu se10000
utilizează memoria
Procesul B
virtuală; astfel
toate cele trei 16000
procese sunt Procesul C
reprezentate prin
programe ce sunt
complet încărcate
în memoria
Figura 1. Exemplu de execuţie a trei procese – harta memor
principală. 7
“URMA” UNUI PROCES (CONT.)
În plus, există un 6000 1000 1600
mic program sistem 6001 0 0
numit dispecer ce 6002 1000 1600
comută execuţia 6003 1 1
procesorului de la 6004 1000 1600
6005 2 2
un proces la altul. 6006 1000 1600
În figura 2 sunt 6007 2) Urma3procesului B 3
prezentate “urmele” 6008 1000 1600
celor trei procese la 6009 4 4
începutul execuţiei 6010 1000 1600
6011 5 5
lor. 6012 1600
Sunt prezentate 6013 6
astfel primele 16 6014 1600
instrucţiuni ale 6015 7
proceselor A şi C. 1) Urma procesului A 3) Urma 1600
procesului C
8
Procesul B execută 6 1600
instrucţiuni şi Figura 2. Urmele proceselor din 9 figura
presupunem că a 6-a 1601 8
instrucţiune 0
“URMA” UNUI PROCES (CONT.)
10
“URMA” UNUI PROCES (CONT.)
11
Figura 3. Urmele intercalate ale proceselor din figura 1
“URMA” UNUI PROCES (CONT.)
63 16008
64 16009
65 16010
66 16011
67 16012
68 16013
69 16014
70 16015
time-out
12
MODELUL DE PROCES CU DOUĂ STĂRI
Planificarea proceselor folosește un mecanism
de cozi de planificare. Într-un astfel de mecanism,
atunci când un proces intră în sistem, este plasat
într-o coadă a job-urilor. Pentru a se stabili starea
unui proces la un moment dat, sunt folosite diverse
modele.
Cel mai simplu dintre acestea este modelul cu două
stări:
Starea în execuție
Starea non-execuție
13
Model de proces cu 5
Nou - Procesul de-abia a fost creat.
Gata de execuţie - Procesul are toate resursele necesare,
aşteptând să intre în execuţie.
În aşteptare - Aşteaptă apariţia unui eveniment (echipament
hardware, intervenţia utilizatorului sau a altui proces).
În execuţie - În acest caz instrucţiunile sunt executate. Procesul
ce se află în execuţie face uz de UCP.
Suspendat/Terminat - Un alt proces a “ordonat” ca acest
proces să intre în starea suspendat (“go to sleep”). Procesul aflat
în starea suspendat va fi “trezit” de către alt proces / Procesul şi-
a încheiat execuţia.
Cozi de planificare:
(un proces este determinat de anumite evenimente ce apar în
urma necesităţilor şi disponibilităţilor)
· coada “gata de execuţie” = formată din toate procesele
gata de execuţie.
· coada I/O (starea de aşteptare) = formată din procesele
ce aşteaptă încheierea unui proces de I/O.
16
Planificarea procese
17
Planificarea procese
Coada de I/O
Figura 7. Exemple de co
18
Tipuri de planificatori: Planificatorul pe term
19
Planificatorul pe termen
Caracteristici principale:
• Rulează rareori (atunci când job-ul vine din memorie)
• Controlează gradul de multiprogramare
20
Planificatorul pe termen
scurt
Planificato
r pe
termen
scurt
Planificator pe Planificato
termen mediu r pe
termen
Planificator scurt
pe termen
lung
Handler de întreruperi
23
Comunicaţia între proce
Există două metode de bază pentru comunicarea între
procese:
- Memorie partajată – modalitate rapidă/fără transfer
de date
- Transfer delegăturilor
Funcţionalităţile mesaje – modalitate
Metode de distribuită/o mai
implementare:
bună
de izolare.
comunicaţie:
· Directă sau indirectă – către
· Modul de formare a legăturilor proces sau în cutia poştală.
· Numărul de procese pentru · Mecanism de buffering
fiecare legătură · Trimiterea prin copiere sau
· Numărul de legături pentru stabilirea unei referinţe?
fiecare pereche de procese · Mesaje de dimensiune fixă
· Capacitatea memoriei buffer - sau variabilă?
pentru ca mesajele să fie stocate
într-o coadă de aşteptare.
· Formatul şi dimensiunea
mesajelor 24
Comunicația directă
Un alt exemplu de
comunicație între procese
îl reprezintă RPC
(Remote Procedure Call).
Apelul de procedură la
distanţă (RPC)
abstractizează apelurile
de proceduri între
procese în cadrul
comunicațiilor din reţea.
27
Sisteme de operare
Cursul #8
Planificarea proceselor
1
Planificarea proceselor
2
Planificarea UCP Concepte
(recap.)
Multiprogramarea Mai multe programe pot fi în
memorie în acelaşi timp. Permite
supra-alocarea UCP şi a I/O.
Job-uri Programe (de tip batch) ce
rulează fără a fi nevoie de
intervenţia utilizatorului.
Programe utilizator Sunt programe (ce rulează
pe baza conceptului de time
sharing) ce pot avea nevoie de
intervenţia utilizatorului.
Proces ambele
UCP - I/O burst cycle Reprezintă execuţia
proceselor ce alternează între
activitatea UCP şi a I/O. Timpii
asociați UCP sunt mult mai mici
decât cei ai operaţiilor I/O.
Planificare preemptivă În acest caz o întrerupere
determină oprirea procesului
curent ce ocupă UCP şi are loc 3
înlocuirea acestuia cu alt proces.
Criterii utilizate
Planificarea UCP pentru evaluarea
performanţelor
Gradul de utilizare Fracţiunea de timp în care un
dispozitiv este utilizat
(timp_utilizare/timp_total)
4
Criterii pentru
Planificarea UCP evaluarea
performanţelor (cont.)
6
Algoritmi de planificare - FIFO
· FIFO
· Simplu, corect, dar cu performanţe slabe.
Timpul mediu de aşteptare în coadă poate fi
destul de mare.
7
Exemplu de planificare FIFO
Exemplu:
Procesul Timpul Timpul
sosirii de serviciu
1 0 8
2 1 4
3 2 9
4 3 5
FIFO
P1 P2 P3 P4
0 8 12 21 26
SJF preemptiv
P1 P2 P4 P1 P3
0 1 5 10 17 26
Timpul mediu de aşteptare = ( (5-1) + (10-3) + (17-0) + (26-2) )/4 = 52/4 = 13.0
11
Planificarea pe bază de
priorități
Planificarea pe bază de priorităţi:
· Definiţii:
• Comutare de context - Modificarea stării de
rulare a procesorului de la un proces către altul
(modificarea memoriei).
• Partajarea procesorului - Utilizarea unui
cuantum a.î. fiecare proces rulează la o
frecvenţă de 1/n.
• Latenţa de replanificare - Reprezintă timpul 13
de aşteptare din momentul în care un proces
Planificarea UCP – Round
Robin
Coada circulară (ROUND ROBIN)
Se alege un cuantum de timp
• Dacă acesta este prea scurt – se va pierde
prea mult timp cu comutarea contextului
• Dacă acesta este prea lung – latenţa de
replanificare este prea mare. Dacă multe
procese doresc UCP, atunci se pierde prea
mult timp ca acestea să acceseze UCP şi se
ajunge la cazul FIFO.
• De regulă, se ajustează a.î. majoritatea
proceselor să nu îşi utilizeze timpul într-un
singur cuantum.
14
Exemplu de planificare Round
Robin
Exemplu:
Process Timpul de
Timpul
sosire de serviciu
1 0 8
2 1 4
3 2 9
4 3 5
Round Robin, cuantum = 4, fără priorităţi
P1 P2 P3 P4 P1 P3 P4 P3
0 4 8 12 16 20 24 25 26
15
Planificarea UCP – cozi de
priorități
Cozi multi nivel
· Fiecare coadă are propriul algoritm de planificare
· Alt algoritm (de regulă bazat pe priorităţi) asigură
arbitrajul între cozi
· Se poate utiliza un feedback pentru a schimba coada
· Metodă complexă, dar flexibilă
· Astfel, se pot separa procesele de sistem, cele interactive,
batch, favorizate sau nefavorizate
16
Exemplu de priorități - Windows
https://msdn.microsoft.com/en-us/library/windows/desktop/
ms685100(v=vs.85).aspx
Clasa de priorităţi ale
proceselor
Nivelul de prioritate al
thread-urilor 17
Planificarea multi-procesor
19
Administrarea proceselor în
Linux
20
Sisteme de operare
Cursul #9
Blocaje (Deadlocks)
1
Blocaje (Deadlocks)
• Ce este un blocaj?
• Sunt posibile două abordări:
• În siguranţă: prevenirea şi evitarea
blocajelor
• În pericol: se permite apariţia unui
blocaj, apoi se detecteză şi se rezolvă
problema.
2
Blocaje
Exemple din lumea reală:
• “E nevoie de bani pentru a face bani".
P2 cere R3
7
Strategii generale de abordare a blocajelor
3 metode generale:
- Ignorarea blocajelor.
Excluderea mutuală:
a) Are loc automat pentru imprimante şi alte echipamente ne-
partajabile.
b) Entităţile de tipul fişierelor read only nu au nevoie de
excludere mutuală, nefiind susceptibile la blocaje.
“Hold and wait”:
a) Se strâng toate resursele înaintea execuţiei.
b) O anumită resursă poate fi cerută doar când nimeni nu o deţine.
O secvenţă de resurse este totdeauna cerută începând cu
prima.
c) Gradul de utilizare este scăzut, poate apărea fenomenul de
“starvation”.
9
Prevenirea
blocajelor
10
Evitarea blocajelor
• Pipes
• Mesaje
• Memorie partajată
• Semafoare
• Semnale
13
Mecanisme de concurenţă a
proceselor în UNIX
14
InformIT.com
15
Sisteme de operare
Cursul #10
Memoria virtuală
1
Conţinut
2
O ierarhie a memoriei
Memoria
Regiştrii UCP Cache Magistrala de memorie
Memorie
Magistrala I/E
principală secundara
4
Tipuri de memorie
Creşte preţul
Memoria
Regiştrii UCP Cache Magistrala de memorie
Memoria
Magistrala I/E
principală secundara
5
Diferențele între DRAM, SRAM, disk și UCP
6
Memoria cache
• Tip de memorie mică, ultra-rapidă, existentă pe cipul
microprocesorului (sau foarte aproape de acesta), ce conţine
cele mai recent accesate date sau instrucţiuni de cod
– “Cache hit”
– “Cache miss” (un bloc de dimensiune fixă de date ce
conţine datele necesare sunt extrase din memoria
principală şi introduse în cache)
• Fenomenul de “localizare temporală” ne spune că este
foarte probabil să avem nevoie de aceste date în
curând, deci ele sunt plasate în memoria cache de
unde pot fi accesate rapid
• Timpul de răspuns necesar pentru un “cache miss”
depinde atât de latenţa memoriei cât şi de bandwith –
ce determină timpul în care va fi citit întregul bloc. Un
“cache miss” administrat hardware va determina de
regulă o pauză în funcţionarea UCP – până în 7
Memoria cache
8
Cache hit
9
Cache miss
10
Arhitectura simplificată a unui procesor:
Memoria cache şi controller-ul de
memorie cache
UCP
8 MB SRAM
UCC cache
Unitatea de control cache Timp de acces: 1-2 ns
Magistrala de sistem
16 GB DRAM
Subsistemul de
Memoria principală
Intrare/Ieşire
Timp de acces: 50 ns
11
Arhitectura simplificată a unui procesor:
Unitatea de management a memoriei
virtuale
UCP
UMM
Unitatea de management
a memoriei Memoria SRAM
cache
Magistrala de sistem
12
Memoria virtuală
Memoria virtuală – Reprezintă, pe scurt, folosirea
hard-disk-ului ca o extensie a memoriei RAM, astfel
încât dimensiunea efectivă a memoriei utilizabile să
crească corespunzător. În acest mod putem avea o
Pagini de memorie virtuală de dimensiuni mari chiar cu o
memorie
memorie fizică (RAM) de dimensiuni reduse.
Disk
Memoria virtuală Harta Memoria fizică (RAM)
memoriei
(memory 13
map)
Memoria virtuală
• Nu toate datele (sau instrucţiunile) pot fi la un moment
dat în memoria principală. În cazul utilizării memoriei
virtuale, atunci unele dintre acestea se pot afla pe disc.
Spaţiul de adresare este, de regulă, împărţit în blocuri de
lungime fixă – denumite pagini. La un moment dat,
paginile se află fie în memoria principală, fie pe disc.
• Atunci când este nevoie de un obiect care nu este în
cache sau în memoria principală, apare un “page-fault” –
moment în care întreaga pagină este mutată de pe disc
în memoria principală. Aceste așa numite “page-faults”
duc la întârzieri și presupun apariția procedeului de
swapping. Swapping-ul reprezintă mecanismul prin care
un obiect poate fi expulzat temporar din memoria
principală pe disc, iar apoi încărcat înapoi în memorie
pentru a își continua execuția.
• Între memoria cache şi memoria principală are loc
aceeaşi relaţie ca şi cea existentă între memoria 14
principală şi disc.
Memoria virtuală
• În orice moment, un calculator rulează mai multe
procese, fiecare având propriul spaţiu de adrese de
memorie. Din această cauză, a apărut necesitatea
partajării unei părţi a memoriei între mai multe
procese.
• Inerentă unei astfel de abordări, este o schemă de
protecţie ce restricţionează accesul proceselor la
blocuri de memorie ce aparţin altor procese.
Majoritatea formelor de memorie virtuală reduc, de
asemenea, timpul de pornire a unui program, deoarece
nu tot codul sau toate datele trebuie să fie deja în
memoria fizică înainte ca programul să înceapă.
• Blocurile de memorie în cazul MV sunt denumite
pagini sau segmente. UCP folosește adresele virtuale,
translatate în adrese fizice, pentru a accesa memoria
principală. Această operațiune se numește maparea 15
Paginarea
• Paginarea reprezintă tehnica prin care memoria fizică
este împărțită în blocuri de lungime fixă denumite pagini
(dimensiunea este o putere a lui 2, cu valori între 512-
8192 bytes).
• În momentul în care un proces trebuie să se execute,
paginile corespunzătoare ale acestuia sunt încărcate în
cadrele libere de memorie. Spațiul logic de adrese al unui
proces poate fi non-contiguu, iar unui proces i se alocă
memorie fizică indiferent dacă există cadre libere de
memorie sau nu.
• SO ține cont de toate cadrele de memorie libere, având
nevoie de n cadre libere pentru a rula un program de n
pagini.
• Adresa generată de UCP este compusă din:
– Numărul paginii (p) – utilizat ca un index într-o tabelă de
pagini ce conține adresa de bază a fiecărei pagini din 16
Paginarea
• Modalitatea de funcționare a paginării:
17
Cererea de pagini
Cererea de pagini (demand paging) – În momentul în care o
pagină de memorie este referită (fie că este vorba despre cod
sau date) şi ea nu se află în memorie, atunci aceasta este adusă
(în memorie) de pe disc (prin intermediul unui swapper sau
pager) şi se re-execută instrucţiunea
Programul A
Programul B
Referinţă la 2
tabela de Trap
pagini
1
Se încarcă P
6Repetarea
instrucţiunii
Tabela de
pagini
Cadru liber
Refacerea de memorie Copierea
5 4
tabelei de paginii în
pagini memoria
Paşii administrării unui “page fault” principală
Memoria 21
fizică
Memoria virtuală – înlocuirea
paginilor
În cazul supra-alocării memoriei trebuie să renunţăm la ceva deja
existent în memorie.
Supra-alocarea apare atunci când programele au nevoie de mai
multe pagini de memorie decât cele existente fizic.
Metoda de abordare: Dacă nici o pagină fizică nu este liberă, se
caută una care nu este utilizată la momentul respectiv şi se
eliberează, conform următorilor paşi:
1. Se caută pagina pe disc.
2. Se caută un cadru liber.
a. Dacă există, se foloseşte
b. Altfel, se selectează o pagină “victimă”
c. Se scrie pagina “victimă” pe disc.
3. Se citeşte noua pagină în cadrul eliberat.
Se modifică tabela de pagini.
4. Se reporneşte procesul.
22
Memoria virtuală – înlocuirea
paginilor
Pagi Bit
na valid/invalid
Copierea
Bitul se
paginii
modifică în
p1 “victimă”
1 pe
2“invalid”
Victima disc
p1 v SWAP
p2
p2 i
4 3
Bitul se Copierea
modifică în paginii
Tabela de “valid” necesare de
Memoria
pagini pe disc în
fizică
memorie
1 4
2 6 “page faults”
4 5
Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
25
Algoritmi de înlocuire a paginilor:
LRU (Least Recently Used)
– În acest caz, se înlocuieşte pagina care nu a fost utilizată
pentru cea mai lungă perioadă de timp; rezultatele
practice sunt bune.
– Variante de implementare:
• Folosirea unui ”Time stamp” pentru pagini -
înregistrarea ultimei utilizări.
• Listă de pagini
1 5
2
8 “page faults”
3 5 4
4 3
Şirul de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
26
Sisteme de operare
Cursul #10
Securitatea sistemelor de operare
1
Criminalitatea cibernetică astăzi
2
Criminalitatea cibernetică din ultimul
timp
WannaCry (sau WannaCrypt,[3]
WanaCrypt0r 2.0,[4][5] Wanna
Decryptor[6]) este un program de tip
ransomware ce a avut ca țintă
sistemul de operare Microsoft
Windows. În ziua de 12 mai 2017 a
fost lansat un masiv atac cibernetic ce
a folosind acest program, infectând
peste 230.000 de calculatoare în 150
de țări, cerând recompense în bani
virtuali Bitcoin (300 USD în primă
fază). Atacul a fost descris de Europol
ca fiind fără precedent din punct de
vedere al mărimii. (Wikipedia)
3
Introducere
4
Introducere
Nivelul de securitate depinde de mai mulţi factori:
6
Evoluția instrumentelor folosite de
către atacatori în ultimii ani
7
Nume de utilizatori şi parole
În mod normal administratorul de sistem va defini o convenţie
pentru stabilirea numelor de utilizatori din reţea (pentru
accesul la SO de reţea).
9
Evoluția amenințărilor de
securitate
“Necessity is the mother of invention.”
13
Windows 10 firewall
14
Firewall-uri pentru Linux
Pentru Linux există mai multe soluții de tip firewall, dintre care
cea mai cunoscută este IPtables.
15
Concluzii
Securitatea unui sistem de operare de reţea reprezintă o parte
importantă în cadrul securităţii în ansamblu a reţelei. Atunci când
planificăm securitatea SO trebuie să avem în vedere următoarele
considerente:
1
Model arhitectural de reţea
Ce este un “model arhitectural”?
- Reduce complexitatea
- Standardizează interfeţele
- Accelerează evoluţia
6
Fişiere DLL
API de reţea
Driver API de
5 reţea – client TDI
TDI
Drivere de
4 protocol –
transport TDI
(TCP/IP,
3 NetBEUI,
IPX/SPX, etc.) NDIS
Biblioteca NDIS
2 Miniport NDIS
HAL
1 Ethernet, Token
Ring, IrDA, ATM,
etc.
Modelul OSI şi componentele de reţea în Windows