From 3928ce8c65ebda07dfdfd45a6a306dd34031ab49 Mon Sep 17 00:00:00 2001 From: konsthol Date: Thu, 2 Nov 2023 23:03:16 +0200 Subject: [PATCH] wrapping should work properly. Probably. --- Bibliography.bib | 18 +++ Chapters/2.Background.tex | 125 ++++++++++++++++++ .../Full-Virualization.png | Bin 0 -> 11997 bytes .../Paravirtualization.png | Bin 0 -> 13248 bytes 4 files changed, 143 insertions(+) create mode 100644 Figures/GeeksForGeeksParavirtualization/Full-Virualization.png create mode 100644 Figures/GeeksForGeeksParavirtualization/Paravirtualization.png diff --git a/Bibliography.bib b/Bibliography.bib index cae7189..eb70d99 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -169,6 +169,24 @@ howpublished="\url{https://www.ibm.com/topics/virtualization}" } +@misc{suseParavirtualizationDefinition, + title={Paravirtualization}, + author={SUSE}, + howpublished="\url{https://www.suse.com/suse-defines/definition/paravirtualization/}" +} + +@misc{geeksforgeeksParavirtualizationDefinition, + title={Difference between Full Virtualization and Paravirtualization}, + author={GeeksforGeeks}, + howpublished="\url{https://www.geeksforgeeks.org/difference-between-full-virtualization-and-paravirtualization/}" +} + +@misc{ParavirtualizationSecurity, + title={Why Your Virtual Servers May be More Secure Than Their Physical Counterparts}, + author={Andrew Mallett}, + howpublished="\url{https://ine.com/blog/why-your-virtual-servers-may-be-more-secure-than-their-physical-counterparts}" +} + @misc{ibmHypervisorDefinition, title={What are hypervisors?}, author={IBM}, diff --git a/Chapters/2.Background.tex b/Chapters/2.Background.tex index 6582331..7adefa3 100644 --- a/Chapters/2.Background.tex +++ b/Chapters/2.Background.tex @@ -578,6 +578,131 @@ \end{itemize} +\section{Τεχνολογίες εικονικοποίησης} \label{virtualizationTechnologies} + +Όταν αναφερόμαστε στην εικονικοποίηση συνήθως μιλάμε για την πιο συνηθισμένη +μορφή της η οποία είναι η πλήρης εικονικοποίηση. Με την πάροδο του χρόνου και +την αύξηση της δημοτικότητας της εικονικοποίησης αναπτύχθηκαν πολλοί +\textlatin{hypervisors} μπορεί να διαφέρουν όχι μόνο στα χαρακτηριστικά τους +αλλά και στις διάφορες τεχνικές που χρησιμοποιούν για να κάνουν την +εικονικοποίηση πραγματικότητα. Μια από αυτές ονομάζεται +\textlatin{para-virtualization}. + +\subsection{\textlatin{Para-virtualization}} \label{paraVirtualization} + +Η \textlatin{para-virtualization} \cite{suseParavirtualizationDefinition} είναι +μια τεχνική εικονικοποίησης που αναπτύχθηκε προκειμένου να ξεπεραστούν ορισμένα +προβλήματα επιδόσεων που εισάγει η πλήρης εικονικοποίηση λόγω της συνεχούς +μετάφρασης φυσικών και εικονικών πόρων. Εξαιτίας αυτού, περιορίζεται σημαντικά +ο αριθμός εικονικών μηχανών που μπορεί να υποστηρίξει ένας διακομιστής και τα +είδη εφαρμογών που μπορούν να εκτελεστούν σε μια εικονική μηχανή. Πρόκειται για +μια κατηγορία εικονικοποίησης της κεντρικής μονάδας επεξεργασίας +\cite{geeksforgeeksParavirtualizationDefinition} κατά την οποία, δύναται το +λειτουργικό σύστημα να επικοινωνεί άμεσα με τον \textlatin{hypervisor} με σκοπό +τη διεξαγωγή δραστηριοτήτων που θα ήταν χρονοβόρες για τον διαχειριστή +εικονικών μηχανών, κάνοντας χρήση ειδικών εντολών ονόματι +\textlatin{hypercalls} για τη διαχείριση αιτημάτων κατά τον χρόνο εκτέλεσης. +Προκειμένου να επιτευχθεί αυτό, τα λειτουργικά συστήματα χρειάζονται μια μικρή +τροποποίηση η οποία επιτρέπει την υλοποίηση ενός ειδικού \textlatin{API} μέσω +του οποίου θα πραγματοποιείται η ανταλλαγή \textlatin{hypercall} ανάμεσα σε +αυτά και τον \textlatin{hypervisor}. Οι \textlatin{hypervisors} που το +υποστηρίζουν αυτό απαιτούν την υποστήριξη του λειτουργικού συστήματος και τη +χρήση ειδικών προγραμμάτων οδήγησης τα οποία είναι πλέον ενσωματωμένα στον +πυρήνα του \textlatin{Linux}. Κάνοντας χρήση της τεχνικής αυτής, το λειτουργικό +σύστημα της εικονικής μηχανής δεν είναι πλήρως απομονωμένο αλλά απομονώνεται +μερικώς από το υλικό και το επίπεδο εικονικοποίησης. + +\pagebreak + +Στην εικόνα \ref{fig:FullVirtualization} παρουσιάζεται η αρχιτεκτονική της +πλήρους εικονικοποίησης όπου το λειτουργικό σύστημα της εικονικής μηχανής +επιβάλλεται να περάσει τα αιτήματα του μέσω του διαχειριστή εικονικών μηχανών. + +\begin{center} + \includegraphics[width = .5\textwidth]{Figures/GeeksForGeeksParavirtualization/Full-Virualization.png} + \captionof{figure}{\textlatin{Full Virtualization}} + \label{fig:FullVirtualization} +\end{center} + +Αντιθέτως, στην εικόνα \ref{fig:ParaVirtualization} όπου και απεικονίζεται η +αρχιτεκτονική της τεχνικής \textlatin{para-virtualization}, βλέπουμε πως μέσω +των \textlatin{hypercall} όλα τα αιτήματα προορίζονται στη στρώση +εικονικοποίησης και από εκεί στο κύριο σύστημα. + +\begin{center} + \includegraphics[width = .5\textwidth]{Figures/GeeksForGeeksParavirtualization/Paravirtualization.png} + \captionof{figure}{\textlatin{Para Virtualization}} + \label{fig:ParaVirtualization} +\end{center} + +\pagebreak + +Οι διαφορές της πλήρους εικονικοποίησης με την \textlatin{para-virtualization} είναι οι εξής: + +\begin{table}[h!] +\centering +\begin{tabular}{|| c | p{6cm} | p{6cm} ||} +\hline +Νούμερο & Πλήρης εικονικοποίηση & \textlatin{Paravirtualization} \\ [0.5ex] +\hline\hline + +1 & + +Πλήρης απομόνωση της εικονικής μηχανής. & + +Μερική απομόνωση και χρήση \textlatin{API} για αμεσότερη επικοινωνία. \\ + +\hline + +2 & + +Λιγότερο ασφαλής. & + +Υπάρχει επίγνωση του εικονικού περιβάλλοντος και δε γίνεται εκκίνηση του +\textlatin{BIOS} \cite{ParavirtualizationSecurity}, πράγμα που την καθιστά +ασφαλέστερη. \\ + +\hline + +3 & + +Χρήση δυαδικής μετάφρασης. & + +Χρήση \textlatin{hypercall} κατά την εκτέλεση. \\ + +\hline + +4 & + +Πιο αργές ταχύτητες. & + +Γρηγορότερη εκτέλεση. \\ + +\hline + +5 & + +Μεγαλύτερη συμβατότητα και φορητότητα. & + +Λόγω της αρχιτεκτονικής της είναι δυσκολότερη η μεταφορά εικονικών μηχανών. \\ + +\hline + +6 & + +Υποστήριξη όλων των συστημάτων χωρίς την απαίτηση τροποποιήσεων. & + +Απαιτείται τροποποίηση του λειτουργικού συστήματος της εικονικής μηχανής για να +κάνει χρήση \textlatin{hypercalls}. \\ + +\hline +\end{tabular} +\caption{Διαφορές πλήρους εικονικοποίησης και παρα-εικονικοποίησης} +\label{table:virtualizationTechniquesDifference} +\end{table} + +\pagebreak + \section{Ασφάλεια στο \textlatin{Cloud Computing} Στις Μέρες Μας} \label{cloudComputingSecurityNowadays} Πλέον όλοι γνωρίζουμε τη σημασία της ασφάλειας. diff --git a/Figures/GeeksForGeeksParavirtualization/Full-Virualization.png b/Figures/GeeksForGeeksParavirtualization/Full-Virualization.png new file mode 100644 index 0000000000000000000000000000000000000000..50c43b63a52ab466130187f76cfac722b10d0129 GIT binary patch literal 11997 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 literal 0 HcmV?d00001 diff --git a/Figures/GeeksForGeeksParavirtualization/Paravirtualization.png b/Figures/GeeksForGeeksParavirtualization/Paravirtualization.png new file mode 100644 index 0000000000000000000000000000000000000000..b48a50ce8a2de289f1e4053d5617b55a644821db GIT binary patch literal 13248 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