Możliwości Linuxa:
1. wielozadaniowość
Linux jest systemem wielozadaniowym – co umożliwia mu równoczesne wykorzystywanie więcej niż jednego procesu (proces to egzemplarz wykonywanego programu, posiadający własną przestrzeń adresową). Za realizację wielozadaniowości odpowiedzialne jest jądro systemu operacyjnego (kernel). Wielozadaniowość zapewniona jest przez program nazywany planistą, który realizuje algorytm szeregowania zadań w kolejce do przyznania czasu procesora. Linux może wykorzystywać wiele procesorów. Gdy system ma mniej dostępnych procesorów niż zadań to czas działania procesora jest dzielony pomiędzy wszystkie zadania. Linux operuje także tzw. wywłaszczenie, które polega na przerwaniu wykonywania procesu, odebraniu mu procesora i przekazaniu sterowania do planisty. Do wyświetlania listy uruchomionych procesów służy polecenie ps. Polecenia tego może używać każdy użytkownik, jednak wyświetlane będą tylko te procesy, których jest właścicielem. Najważniejszą spośród wyświetlanych informacji to:
-
PID – identyfikator procesu
-
TTY – identyfikator konsoli, z której proces został uruchomiony
-
TIME – czas procesora wykorzystany do tej pory
-
CMD – polecenie, którym uruchomiono proces
Listę procesów można wyświetlać za pomocą komendy: ps -A lub jeżeli chcemy wyświetlić procesy wg tego jak obciążają system możemy użyć polecenia top.

2. obsługa użytkowników na tej samej maszynie w tym samym czasie .
Linux jest systemem wielodostępnym. Oznacza to, że wielu użytkowników może jednocześnie z niego korzystać.
Każdy użytkownik ma przydzielone zasoby:
-pamięć;-czas procesora;-miejsce na dysku;
Do jego zasobów nie nikt dostępu chyba, ze sam je udostępni. Wyjątkiem jest administrator. Użytkownik jest niezależny i odizolowany od innych. Aby zalogować się do systemu możemy skorzystać z klawiatury podłączonej do komputera, lub sieci komputerowej. Po zalogowaniu się uzyskujemy dostęp do konsoli. W linuxie zdefiniowanych jest wiele konsoli tekstowych, na których mogą logować się różni użytkownicy.
KONSOLA – LOGOWANIE
[Ctrl] + [Alt] + [Fn] np. [Ctrl] + [Alt] + [Fn] – aby zalogować się do pierwszej konsoli.
[Ctrl] + [Alt] + [F7] – powrót do środowiska graficznego.
KONTO
whoami – sprawdza z jakiego konta aktualnie korzystamy.
who – kto aktualnie jest zalogowany w systemie.
3.wieloplatformowość
termin odnoszący się do aplikacji, języków programowania, systemów operacyjnych oraz innego oprogramowania i jego implementacji, pracujących na różnych platformach sprzętowych. Przykładowo, wieloplatformowa aplikacja będzie działać pod kontrolą systemu Microsoft Windows na architekturze x86 oraz systemu Linux na architekturze ARM.
4.wielowątkowość
Linux jest systemem bardzo stabilnym, lecz również i w tym systemie zachodzi możliwość zawieszania procesu. Czasami zachodzi konieczność usunięcia procesu działającego. Zwykły użytkownik może usuwać tylko te procesy, których jest właścicielem. Administrator może usuwać wszystkie procesy. Do usuwania procesów służy polecenie kill. Polecenie to musi otrzymać jako argument identyfikator PID procesu. Usuwa ono proces w sposób bezpieczny (zamyka otwarte pliki, zwalnia obszary pamięci). Jeżeli procesu w ten sposób usunąć nie można to możemy wymusić jego zakończenie dodając opcję -9 do polecenia. Np. kill -9 2463.
5. działanie w trybie chronionym 386.
Tryb chroniony (ang. protected mode) – tryb pracy mikroprocesorów serii x86 wprowadzony w mikroprocesorze Intel 80286. Tryb chroniony umożliwia adresowanie pamięci przekraczającej wielkość 1 MB(tryb rzeczywisty), wprowadza wiele nowych udogodnień wspierających wielozadaniowość, takich jak: sprzętowa ochrona pamięci (układ MMU), wsparcie w przełączaniu kontekstu procesora i wiele innych.
Większość nowoczesnych systemów operacyjnych wykorzystuje procesory serii x86 właśnie w trybie chronionym. Zaliczają się do nich m.in.: Linux, Windows w wersji 3.0 i wyższych, systemy z rodzinyBSD.
Procesory Intel 80386 i jego następcy posiadają już 32-bitowy tryb chroniony, w którym można zaadresować do 4 GB pamięci RAM. Obsługują one 32-bitowy tryb segmentacji, będący rozwinięciem tego znanego z procesora Intel 80286 o dodatkowe pola w desktyptorach segmentów (m.in. 32-bitowy adres bazowy, 20-bitowa długość segmentu w bajtach, granulacja). Najważniejszą jednak cechą nowszych procesorów jest obsługa trybu stronicowania pamięci, który jest wykorzystywane w nowych systemach operacyjnych i pozwala na całkowitą izolację procesów we własnej wirtualnej przestrzeni adresowej o rozmiarze do 4 GB (tzw. tryb chroniony z wywłaszczeniem). Ponadto istnieje możliwość użycia stronicowania pamięci w trybie z segmentacją, co zwiększa bezpieczeństwo procesów i systemu operacyjnego korzystającego z segmentacji oraz ułatwia zarządzanie samą pamięcią.
6. miedzyprocesowa ochrona pamięci
Ochrona pamięci (ang. memory protection) dotyczy sposobów kontroli praw dostępu do pamięci komputera i stanowi integralną część większości nowoczesnych systemów operacyjnych. Podstawowym celem ochrony pamięci jest uniemożliwienie procesowi dostępu do obszaru pamięci, który nie został mu przydzielony. Zapobiega to przypadkom, w których proces może zakłócić pracę innego procesu lub pracę nadzorującego systemu operacyjnego.
7. ładowanie kodu wykonywalnego na żądanie
Czytanie tylko tej części programu, która jest rzeczywiście wykorzystywana.
8. współdzielenie pamięci miedzy procesami.
Pamięć współdzielona jest specjalnie utworzonym segmentem wirtualnej przestrzeni adresowej, do którego dostęp może mieć wiele procesów. Jest to najszybszy sposób komunikacji pomiędzy procesami. Podstawowy schemat korzystania z pamięci współdzielonej wygląda następująco: jeden z procesów tworzy segment pamięci współdzielonej, dowiązuje go powodując jego odwzorowanie w bieżący obszar danych procesu, opcjonalnie zapisuje w stworzonym segmencie dane. Następnie, w
zależności od praw dostępu inne procesy mogą odczytywać i/lub zapisywać wartości w pamięci współdzielonej. Każdy proces uzyskuje dostęp do pamięci współdzielonej względem miejsca
wyznaczonego przez jego adres dowiązania, stąd każdy proces korzystając z tych samych danych używa innego adresu dowiązania. W przypadku współbieżnie działających procesów konieczne jest najczęściej synchronizowanie dostępu np. za pomocą semaforów. Kończąc korzystanie z segmentu pamięci proces może ten segment odwiązać, czyli usunąć jego dowiązanie. Kiedy wszystkie procesy zakończą korzystanie z segmentu pamięci współdzielonej, za jego usunięcie najczęściej odpowiedzialny jest proces, który segment utworzył.
Podczas tworzenia segmentu pamięci współdzielonej tworzona jest systemowa struktura danych o nazwie shmid_ds. Definicję tej obsługiwanej przez system struktury można znaleźć w pliku nagłówkowym
Funkcje operujące na pamięci współdzielonej zdefiniowane są w plikach:
9. pamięć wirtualna stronicująca
stronicowanie :
- Pamięć fizyczna podzielona jest na obszary o stałym rozmiarze, zwane ramkami.
- Pamięć logiczna podzielona jest na obszary o stałym rozmiarze, zwane stronami.
- Przed wykonaniem wszystkie strony procesu muszą być umieszczone w dowolnych ramkach, które mogą tworzyć nieciągły obszar pamięci.
- Proces przechowuje tablicę stron zawierającą adresy przydzielonych ramek.
- Adres logiczny składa się z numeru strony i odległości na stronie. Numer strony jest indeksem pozycji w tablicy stron, która zawiera adres bazowy ramki przechowującej daną stronę procesu.
10. zgrupowanie puli pamięci przydzielonej programom i dyskowej pamięci podręcznej (cache)
Dzięki czemu cała wolna pamięć może być użyta jako pamięć podręczna. Ilość pamięci podręcznej zmniejsza się podczas wykonywania dużych programów.
11. dynamiczne zlinkowane biblioteki dzielone (DLL) oraz oczywiście, biblioteki zalinkowane statystycznie.
Dynamic-Link Library - biblioteka łączona dynamicznie) – w środowisku Microsoft Windows biblioteka współdzielona (z ang. shared library), która przechowuje implementacje różnych podprogramów programu lub zasoby programu. Podprogramy i zasoby zawarte w bibliotece DLL mogą być wykorzystane bezpośrednio lub pośrednio (za pośrednictwem innej biblioteki DLL) przez dowolny plik wykonywalny, sama biblioteka DLL nie jest samodzielnym programem.
12. zrzuty pamięci (core dumps)
zrzuty pamięci - umożliwiające ,,pośmiertną'' analizę programów za pomocą debuggera,
13. wysoka zgodność z POSIX, SYSV, BSD, na poziomie źródeł
wolno bez ograniczeń rozpowszechniać. Wiele komercyjnych programów dostępnych dla Linuksa dostarczanych jest bez kodu źródłowego, ale wszystko, co było wolnodostępne (w tym cały system operacyjny) wolnodostępne pozostało,
14. poprzez zgody z iBCS2 moduł emulacji wysoka zgodność na poziomie binarnym z SCO, SVR3 i 4
- wysoka zgodność z POSIX, SYSV, BSD na poziomie źródeł,
- poprzez zgodny z iBCS2 moduł emulacji wysoka zgodność na poziomie binarnym z SCO, SVR3 i SVR4,
15.Dostępność calego kodu źródłowego w tym całego jądra i wszystkich sterowników,narzędzi i programów
No jest :D
16.Zgodna z POSIX kontrola procesów
POSIX (ang.) Portable Operating System Interface for Unix – przenośny interfejs dla systemu operacyjnego Unix.
POSIX to odpowiedź na próby standaryzacji różnych odmian systemu operacyjnego Unix. Prace nad tym standardem rozpoczęto ok. roku 1985, a kierowało nimi stowarzyszenie IEEE. Dlatego POSIX znany jest również pod nazwą IEEE 1003. Nad dalszym rozwojem standardu sprawuje pieczę The Open Group we współpracy z IEEE i firmami komputerowymi takimi jak: IBM, Sun Microsystems, Hewlett-Packard, NEC Corporation, Fujitsu, Hitachi. Kolejne edycje standardu wydawane przez "The Open Group" noszą nazwy Single UNIX Specification, Version x, gdzie x to kolejny numer wersji. Aktualna wersja jest trzecią a pojawiła się w roku 2001. Od roku 2003 jest to norma międzynarodowa ISO/IEC 9945:2003.
Nazwę "POSIX" zaproponował Richard Stallman.
POSIX standaryzuje:
- interfejs programistyczny (API);
- interfejs użytkownika, np. polecenia systemowe takie jak awk, echo, ed;
- właściwości powłoki systemowej.
Zasady te ujęte są w około piętnastu różnych dokumentach.
17.pseudoterminale(pty)