BSD alternatywa dla Linuksa

Podobne dokumenty
BSD alternatywa dla Linuksa. (na przykładzie FreeBSD)

BSD - alternatywa dla Linuksa

Q E M U.

Kernel Kompilacja jądra

Przegląd współczesnych systemów operacyjnych

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Systemy Operacyjne 2006/07. Prezentacja o BSD na przykładzie FreeBSD. Maria Donten, Bartłomiej Etenkowski, Aleksander Zabłocki

Prezentacja systemu RTLinux

Software is like sex it s better when it s free. Linus Torvalds

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Technologie Informatyczne Wykład XI linux

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Wolne Oprogramowanie

Narzędzia informatyczne. Wolne oprogramowanie

Jądro systemu operacyjnego

Rozwiązania bazodanowe EnterpriseDB

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

Dystrybucje Linuksa c.d.

BSD - alternatywa dla Linuksa

Autor: inż. Wojciech Zatorski Opiekun pracy: dr inż. Krzysztof Małecki

Szyfrowanie połączeń między serwerem Oracle i klientem

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

WYKŁAD 3 Jądro systemu i procesy. Marcin Tomana Wyższa Szkoła Informatyki i Zarządzania

Przykłady implementacji planowania przydziału procesora

egroupware czy phpgroupware jest też mniej stabilny.

Systemy operacyjne III

przydziału procesora Przykłady implementacji planowania przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

Cloud Customers Relationships Wymagania wersja systemu:

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Systemy Linux i *BSD oraz wolne oprogramowanie

Programowanie w C. dr inż. Stanisław Wszelak

Opis przedmiotu zamówienia / Formularz Oferty Technicznej (dokument należy złożyć wraz z ofertą)

Konwersja maszyny fizycznej na wirtualną

Pakiety i interfejsy. Tomasz Borzyszkowski

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Git rozproszony system kontroli wersji

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

EAL4+ bezpieczeństwo z SUSE Linux Enterprise Server. Dariusz Leonarski Novell Polska dleonarski@novell.pl

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

BSD - alternatywa dla Linuksa

Tworzenie bezpiecznego środowiska kont shellowych

DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer

Wprowadzenie do systemu Minix

Oprogramowanie Alternatywne

projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Systemy operacyjne - rozkład godzin dla technikum informatycznego

Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Organizacja i struktura projektu FreeBSD. Wojciech A. Koszek wkoszek@freebsd.org Częstochowa,

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

Dokumentacja fillup - MS SQL

Krótka Historia Systemów Operacyjnych. Tomasz Borzyszkowski

Linux is linux is linux?

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

SZCZEGÓŁOWY OPIS PRZEDMIOTU ZAMÓWIENIA

System komputerowy. System komputerowy

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Monitor maszyn wirtualnych

Systemy operacyjne. by pio7rek

Wstęp do Informatyki dla bioinformatyków

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

Architektura komputerów

Parametry techniczne. Testy

Powłoki systemu operacyjnego i intepretery

Instrukcja instalacji PS Bonus Pack do IBM SPSS Statistics 20 w systemie operacyjnym Windows

Technologia Informacyjna

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Komputery przemysłowe i systemy wbudowane

Data Protection Suite for VMware?

1. Serwer. 2. Komputer desktop 9szt. Załącznik nr 1 do SIWZ

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Co to jest GASTRONOMIA?

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Dokument zawiera instrukcję samodzielnej Instalacji Microsoft SQL Server 2005 Express Edition Service Pack 3 na potrzeby systemu Sz@rk.

Zaawansowane Techniki WWW (HTML, CSS i NODE.JS)

Tworzenie oprogramowania

Konfiguracja i kompilacja jądra Linux. Based on Free Electrons

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP SZKOLNY BIAŁYSTOK, 22 LISTOPADA 2017 R.

Linux -- u mnie działa!

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wstęp do Informatyki. Klasyfikacja oprogramowania

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Systemy Kontroli Wersji

Instalacja aplikacji

Specyfikacja Wymagań Oprogramowania

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Dokumentacja aplikacji Szachy online

Praca w środowisku Cygwin. Przygotował Mateusz Dudek

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Transkrypt:

BSD alternatywa dla Linuksa

Historia 1969 powstaje pierwszy Unix 1974 instalacja Unix'a na maszynie PDP-11 na Uniwersytecie Kalifornijskim w Berkeley 1977 wydanie 1BSD - poprawki do jądra Unix'a oraz kompilator języka Pascal stworzone na ww. uniwersytecie, wydane jako dodatek do Unixa V6. Główny twórca - Bill Joy, późniejszy założyciel Sun Microsystems.

Historia 1979 wydanie 3BSD na maszynę VAX napisany przez studentów z Berkeley kompletny system operacyjny implementacja pamięci wirtualnej sukces! - zainteresowanie Defense Advanced Research Projects Agency 1983 4.2BSD TCP/IP Berkeley Fast File System (na jego podst. ext2)

Historia 1988 4.3BSD-Tahoe pierwsza próba podzielenia kodu na część zależną i niezależną od maszyny podwaliny przenośności systemu operacyjnego 1991 Net/2 pierwsze wydanie na licencji BSD (a nie AT&T), a co za tym idzie napisanie do nowa dużej części kodu standardowej dla Unixa 1991 386BSD pierwszy Unix dla PC

Historia 1992-94 proces sądowy z AT&T okazało się, że z 18000 plików tylko ok.70 musiało zostać zmienionych zahamowanie rozwoju BSD w ważnym momencie w tym czasie pojawił się Linux, konkurent 386BSD Może nie powstałby Linux - Linus Torvalds :-)

Historia 1995-4.4BSD-Lite Release 2 ostatni system napisany w Berkeley Na 4.4BSD bazują do dziś rozwijające się projekty takie jak: FreeBSD OpenBSD NetBSD My skupimy się na FreeBSD

Historia (FreeBSD) 1995 FreeBSD 2.0 FreeBSD Ports Sukces! System użyty w takich przedsięwzięciach jak Yahoo, Hotmail Od tej pory FreeBSD jest sukcesywnie rozwijane 8 maj 2006 FreeBSD 6.1 najnowsza stabilna wersja

Dystrybucja Rozprowadzany jako kompletny system operacyjny czyli jądro, sterowniki, programy i narzędzia. W przeciwieństwie do Linuxa gdzie jądro tworzone jest przez jedną grupę ludzi, programy użytkowe przez inną, a to wszystko w paczki zwane dystrybucją Linuxa pakują jeszcze inni.

Porty Port program do instalacji aplikacji z nim związanej Wie jakie aplikacje są potrzebne do poprawnego działania aplikacji i skąd je ściągnąć Każdy port ma właściciela osobę odpowiedzialną za niego Makefile - łatwa instalacja i deinstalacja oprogramowania Pakiety tak samo tylko już skompilowane programy Praktyczny pokaz działania w dalszej części

Porty

Licencja BSD Berkeley Software Distribution License free software license liberalna, duże prawa użytkownika pozwala na włączenie kodu nawet do projektów o zamkniętym kodzie na tej licencji min. PostgreSQL.

BSDL vs GNU GPL permissive kod po zmianie nie musi juz być na tej licencji wykorzystane np. w Windowsach podoba się dużym firmom copyleft kod nawet po zmianie ma pozostać na tej licencji korzystniej wpływa na rozwój open source

Zastosowania Popularny jako OS na serwer lub firewall Dlaczego? -wydajny, szczególnie przy dużym obciążeniu sieci nawet do 30% wydajniejszy od Linuxa na tym samym sprzęcie -stabilny (wysokie miejsca w rankingach uptime) Przykłady: ftp.freesoftware.com (1.2TB/day of downloads) Yahoo!

Zastosowania Wciąż mniej popularny od Linuxa w zastosowaniach biurkowych Dlaczego? - Linux miał łatwiejszy start (proces BSD z AT&T) - różnorodność dystrybucji Linuxa (ale czy to +?)

Scheduler we FreeBSD Przed FreeBSD 5.0 brak wyodrębnionego scheduler'a (kawałki kodu w różnych miejscach jądra) W wersji 5.0 posprzątano scheduler jako wyodrębniona całość (możliwość łatwiejszej wymiany)

Dwie wersje do wyboru 4.4BSD Scheduler domyślny do wersji 5.1 /sys/kern/sched_4bsd.c ULE Scheduler domyślny od wersji 5.2 /sys/kern/sched_ule.c

4.4BSD Scheduler Priorytet statyczny kg_nice jak w Linuxie (-20..20, domyślnie 0) ustawia użytkownik Kwant czasu 100ms na sztywno! nie zmieniony od 20 lat w Linuxie zależy od p->static_prio (od 5 do 800ms, domyślnie też 100ms)

Kolejki Osobne kolejki FIFO dla każdej wartości priorytetu dynamicznego (jak w Linuxie) Jeden zestaw kolejek (w Linuxie active i expired) Wywłaszczony wątek trafia na koniec kolejki (w Linuxie zależnie od interaktywności do active lub expired)

Wywłaszczanie Po wykorzystaniu kwantu czasu jak w Linuxie Natychmiastowo (ew. na koniec syscall'a) jeśli pojawi się wątek o wyższym priorytecie np. doczekał się czegoś (wyszedł ze stanu idle) nagle dostał wyższy priorytet dynamiczny

Priorytet dynamiczny Obliczany według wzoru: A + B*kg_estcpu + C*kg_nice kg_estcpu odpowiednik bonusa w Linuxie......ale nie limitowany (w Linuxie -5...+5)

kg_estcpu Przeliczany raz na sekundę Według wzoru: 2*load kg_estcpu = kg_estcpu + ticks 2*load+1 ticks aktualnie działającego wątku zwiększane o jeden co 40ms, zerowane co 1s load średnia dł. kolejki oczekujących z ostatniej minuty

kg_estcpu idea duży load aktywny proces szybko się starzeje ticks kumulują się, traci priorytet nie zmonopolizuje procesora (za bardzo :/) mały load ticks szybko się przedawniają (po 5s tylko 13% starych zostaje) wybaczamy procesowi, że żużył (i tak wolne) CPU

kg_estcpu... Heurystyka śpiącym procesom nie przeliczamy kg_estcpu,...ale od razu jak wstaje przeliczamy: =[ ] kg_spltime 2*load kg_estcpu 2*load+1 * kg_estcpu zmniejsza koszt obliczeń zmienia od razu priorytet dynamiczny, być może przerywa aktualnie działający wątek wyraźnie poprawia interaktywność

różnice w stosunku do Linux 2.6 Stały kwant czasu Pojedyńczy zestaw kolejek Brak pojęcia interaktywności Nielimitowany bonus Co 1s przeliczamy bonusa koszt O(n)

ULE Scheduler znacznie bardziej jak Linux 2.6 O(1) zamiast O(n) kolejki current i next jak w Linuxie interactivity score podobnie jak w Linuxie, ale czy_interaktywny nie zależy od kg_nice

ULE Scheduler i SMP/SMT własny zestaw kolejek dla każdego CPU migracja wątków push migration zajęty procesor przed dodaniem wątku do swojej kolejki active sprawdza czy nie ma wolnego procesora co 0.5s sched_balance() - wyrównanie kolejek najmniej i najbardziej obciążonego

Bibliografia The Design and Implementation of the FreeBSD Operating System By Marshall Kirk McKusick, Marshall Kirk McKusick, George V. Neville-Neil. Published by Addison Wesley Professional. Rozdział 4.4 Thread Scheduling

API różnice POSIX standard dla Linuxa i FreeBSD nie precyzuje wszystkiego Linux Binary Compatibility Layer zwykle bardzo proste mapowanie szybkość!

Szukamy różnic... open() Podobnie: robią z grubsza to samo! składnia ta sama ten sam systemcall (wartości eax itp.)

Szukamy różnic... open() Ale np.: creat() niezalecana w FreeBSD brak flag O_SHLOCK i O_EXLOCK w Linuxie O_SYNC w Linuxie (z licznymi uwagami), O_FSYNC w FreeBSD (opisany jako niezawodny :/) O_DIRECT w FreeBSD, w Linuxie brak itd...

lseek () Bardzo podobnie np. oba obdługują dziurawe pliki Ale np. błąd EOVERFLOW tylko we FreeBSD

write () Drobne różnice Syscall pwrite() we FreeBSD, w Linuxie nie ma nic podobnego Więcej błędów we FreeBSD np. ENOBUFS głównie związane z obsługą socketów

FreeBSD, część III - pokaz Porty/pakiety Linux compatibility layer Testy wydajności

Porty/pakiety Pakiety Porty Pokaz

Porty/pakiety Pakiety Standardowe podejście Administracja poprzez pkg_add, pkg_info, pkg_delete Obsługa zależności Jedno oficjalne repozytorium, brak możliwości definiowania innych, ale możliwość instalowania pakietów spoza niego Możliwość budowania pakietów z portów

Porty/pakiety Porty Protoplasta ebuild-ów w Gentoo, czyli opis, skąd zdobyć i co zrobić ze źródłami Makefile z kilkoma pomocniczymi plikami Obsługa zależności w połączeniu z pakietami Stworzony framework do pisania portów /usr/ports

Porty/pakiety Pokaz Wyszukanie port-a Instalacja (kompilacja) porta Pokazanie wszystkich zainstalowanych pakietów Usunięcie port-a Wyszukanie pakietu Instalacja pakietu Pokazanie wszystkich zainstalowanych pakietów Usunięcie pakietu

Linux compatibility layer Co to jest? Czy to faktycznie jest potrzebne? Na jakiej zasadzie to działa? Jak dobrze to działa? Instalacja Pokaz

Linux compatibility layer Czy to jest faktycznie potrzebne? Różnice w API Istnienie programów dostępnych tylko w postaci binarnej Ułatwia testowanie programów na dwóch systemach Doom ;)

Linux compatibility layer Na jakiej zasadzie to działa Moduł z linuksowym API Binary branding Podmiana wektora sysent[] w strukturze Podmiana najwyższego katalogu w wyszukiwaniach bibliotek

Linux compatibility layer Jak dobrze to działa? Netscape Adobe Acrobat RealPlayer VMware Oracle WordPerfect Doom Quake,

Linux compatibility layer Instalacja Moduł linux w jądrze Port emulators/linux_base* brandelf / sysctl kern.fallback_elf_brand=3 resolv.conf devfs procfs

Testy wydajnościowe Czas działania wywołań funkcji systemowych (program libmicro) dla Linuksa, FreeBSD i FreeBSD przez linuksowe ABI. Średnia przepustowość systemu plików na symulacji obciążenia serwera SMB (dbench) Efektywność systemów plików (reiserfs pod Linuksem, reiserfs i ufs pod FreeBSD, bonnie++) glxgears

Testy wydajnościowe Środowisko testowe Pentium 4, 2,66 GHz, 512Kb cache 1024 Mb RAM, DDR 400 Chipset Intel ICH4 Dysk 80GB WDC-WD800VE ATI Radeon 9000M Linux: Gentoo, gcc 3.4.6, kernel 2.6.16, i686,reiserfs FreeBSD: 6.1 RELEASE, gcc 3.4.4, i686,ufs Oba jądra kompilowane dokładnie pod sprzęt testowy

Testy wydajnościowe Czas działania wywołań funkcji systemowych LibMicro 0.3.0 (http://www.opensolaris.org/os/community/perfor mance/libmicro/) Wyniki na http://students.mimuw.edu.pl/~md219418/syscall s.html

Testy wydajnościowe Średnia przepustowość systemu plików na symulacji obciążenia serwera SMB Program dbench 3.04 100 użytkowników Wyniki: Linux: 69,4554Mb/sec FreeBSD: 12,5435Mb/sec FreeBSD Linux 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 Mb/sec

Testy wydajnościowe Bonnie++ 1.93c bonnie++ -s 1800 -n 100:1024:0:100 -m siersciu -u 0 Dokładne wyniki na http://students.mimuw.edu.pl/~md219418/bonnie.html

Testy wydajnościowe glxgears Fps 1700 1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0 FreeBSD Linux

Bibliografia http://www.networkworld.com/supp/2005/opensource/070405-face-off-no.html http://www.networkworld.com/supp/2005/opensource/070405-face-off-yes.html http://en.wikipedia.org/wiki/bsd_and_gpl_licensing http://en.wikipedia.org/wiki/freebsd_ports http://www.freebsd.org/ http://en.wikipedia.org/wiki/copyleft http://people.freebsd.org/~murray/bsd_flier.html http://uptime.netcraft.com/up/today/top.avg.html http://www.freebsd.org/doc/en_us.iso8859-1/books/handbook/ http://www.coker.com.au/bonnie++/ http://www.opensolaris.org/os/community/performance/libmicro/ http://www.dbench.org/home/index.php