Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Podobne dokumenty
1.1 Definicja procesu

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Procesy, wątki i zasoby

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Systemy wbudowane. Rysunek 1: Ilustracja procesu kompilacji oprogramowania

Programowanie w asemblerze Linkowanie

Systemy operacyjne III

1. Kompilacja i uruchamianie programów

Zarządzanie pamięcią operacyjną

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Systemy Operacyjne I: Procesy

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Działanie systemu operacyjnego

projektowanie systemu

Mogą pracować w środowisku: Scentralizowanym -mikrokontroler Rozproszonym sieć sterująca, systemy hierarchiczne. Komunikacja z syst.

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Współczesne aplikacje sterowania i akwizycji danych są zbiorem komunikujących się wątków lub procesów współbieżnych.

Zarządzanie pamięcią operacyjną

Budowa systemów komputerowych

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

architektura komputerów w. 8 Zarządzanie pamięcią

Działanie systemu operacyjnego

Wstęp do programowania

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

Wstęp do programowania. Wykład 1

Wirusy w systemie Linux. Konrad Olczak

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Komputery przemysłowe i systemy wbudowane

Programowanie Systemów Wbudowanych

Działanie systemu operacyjnego

PRZYDZIAŁ PAMIĘCI OPERACYJNEJ

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013

Organizacja typowego mikroprocesora

Prezentacja systemu RTLinux

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Kernel Kompilacja jądra

Działanie systemu operacyjnego

Zarządzanie zasobami pamięci

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Programowanie współbieżne Wykład 2. Iwona Kochańska

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

Programowanie niskopoziomowe

Systemy Operacyjne 1 Laboratorium 2 Procesy i sygnały w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

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

Wprowadzenie do systemu Minix

Wykład 7. Zarządzanie pamięcią

Proces y i y w i ąt ą ki

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/ / 22

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

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

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Od programu źródłowego do procesu

Laboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

dr inż. Jarosław Forenc

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Stronicowanie w systemie pamięci wirtualnej

System operacyjny MACH

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Algorytm. a programowanie -

Programowanie w języku Python. Grażyna Koba

INSTYTUT INFORMATYKI, AUTOMATYKI I ROBOTYKI POLITECHNIKI WROCŁAWSKIEJ

Programowanie obiektowe zastosowanie języka Java SE

Kompilacja i scalanie programów w linii poleceń gcc i make

Jądro systemu operacyjnego

Metody Kompilacji Wykład 1 Wstęp

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Architektura systemów informatycznych

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

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

1.Wstęp. 2.Generowanie systemu w EDK

Podstawy programowania

Programowanie w języku C++ Grażyna Koba

7. Szeregowanie procesów w systemie QNX6 Neutrino

Projekt i implementacja systemu obsługi kart chipowych

Mikroprocesor Operacje wejścia / wyjścia

Uruchamianie programów w systemie Linux, potoki, strumienie, procesy, alias

Transkrypt:

Procesy pojęcia podstawowe 1 1.1 Jak kod źródłowy przekształca się w proces W języku wysokiego poziomu tworzy się tak zwany kod źródłowy który po zapisaniu będzie plikiem z programem źródłowym. Plik źródłowy przetwarzany jest następnie przez kompilator do tak zwanego programu wykonywalnego. edytor kod źródlowy opcje kompilatora System operacyjny program ladujący kompilator proces inne pliki obiektowe plik obiektowy Biblioteki kopiowanie program lączący pamięć operacyjna plik wykonywalny Wytworzenie programu Wykonanie programu Rys. 0-1 Przebieg procesu wytworzenia i wykonania programu Przetworzenie kodu źródłowego w wykonywany proces odbywa się kilku etapach. Najważniejsze z nich to: kompilacja, łączenie ładowanie programu. Celem kompilacji jest transformacja kodu źródłowego będącego zapisem algorytmu w języku wysokiego poziomu (który nie może być wykonany przez procesor) na kod maszynowy danego procesora. Kompilacja przebiega w kilku etapach i prowadzi ona do wytworzenia tak zwanego pliku obiektowego.

Typowy plik obiektowy składa się z takich części jak: nagłówek, kod maszynowy, dane, tablica symboli, informacje o relokacji, informacje dla programu uruchomieniowego. 2 Na etapie kompilacji nie sposób określić pod jaki adres w pamięci należy załadować utworzony program, gdyż kompilator nie posiada informacji o stanie pamięci procesora w chwili wykonania programu. Stąd pliki obiektowe i wykonywalne zawierają tak zwaną tablicę relokacji (ang. relocation table). Tablica symboli składa się z pozycji, z których każda zawiera wskaźnik do adresu w kodzie obiektowym, który musi być zmodyfikowany w procesie ładowania programu do pamięci operacyjnej. W systemie Linux plik obiektowy jak i wykonywalny tworzony jest w tak zwanym formacie ELF (ang. Executable and Linkable Format). Informacje o plikach w formacie ELF uzyskać można za pomocą narzędzi Linuksowych takich jak readelf i objdump. $objdump x hello.o hello.o: file format elf32-i38 architecture: i38, flags 0x00000011: HAS_RELOC, HAS_SYMS start address 0x00000000 Sections: Idx Name Size VMA LMA File off Algn 0.text 0000001c 00000000 00000000 00000034 2**2 1.data 00000000 00000000 00000000 00000050 2**2 2.bss 00000000 00000000 00000000 00000050 2**2 3.rodata 0000000d 00000000 00000000 00000050 2**0 4.comment 0000001d 00000000 00000000 0000005d 2**0 5.note.GNU-stack 00000000 00000000 00000000 0000007a 2**0 SYMBOL TABLE: RELOCATION RECORDS FOR [.text]: OFFSET TYPE VALUE Przykład 0-1 Ilustracja działania programu objdump dla pliku obiektowego Z powyższego przykładu widać jakie informacje zawiera plik obiektowy. Są to nagłówki, segmenty, tablica symboli i dane do relokacji.

Ważniejsze segmenty to: text segment kodu, zawiera instrukcje data segment danych zainicjowanych, dane którym nadano wartości początkowe 3 bss segment danych nie zainicjowanych, dane którym nie nadano wartości początkowych rodata segment danych zawierających stałe (tylko do odczytu) comment komentarze note.gnu-stack informacja że potrzebny będzie stos Wiele informacji o pliku wykonywalnym można uzyskać za pomocą programów file, size, readelf. Polecenie size pozwala na uzyskanie informacji o rozmiarach. $size hello text data bss dec hex filename 91 24 8 1188 4a4 hello Przykład 0-2 Ilustracja działania programu size dla pliku programu hello Program Opis Przykład objdump Podaje zawartość plików objdump x hello.o obiektowych readelf Odczyt pliku w formacie readelf a hello ELF size Podaje ile pamięci size hello zajmuje proces file Podaje typ pliku file hello Tabela 0-1 Zestawienie narzędzi do analizy plików programowych

4 1.2 Deskryptor procesu System operacyjny musi prowadzić administrację procesami. Procesy są tworzone, wykonywane, wznawiane, zawieszane i kończone. Muszą być utrzymywane struktury danych zawierające wszystkie informacje ku temu niezbędne. Kod P1 Deskryptor procesu Data BSS rodata Stos 1 Pamieć Rys. 0-2 Struktury danych procesu Zawartość deskryptora: Tożsamość procesu: Identyfikator procesu PID procesu, grupa procesów Uwierzytelnienia identyfikator użytkownika i grupy Indywidualność (ang. personality) z cechy tej korzystają biblioteki emulacji Środowisko procesu Na środowisko procesu składają się dwa wektory: Wektor argumentów wykaz argumentów wywołania programu Wektor środowiska zestaw par NAZWA=WARTOŚĆ Środowisko procesu dziedziczone jest z procesu macierzystego. Kontekst procesu Kontekst procesu zawiera informacje: Kontekst planowania: rejestry, priorytet bieżący, nie obsłużone sygnały

Informacje rozliczeniowe: skumulowany czas procesora Tablica plików: zawiera wskaźniki do otwartych plików utrzymywanej przez jądro. Tablica obsługi sygnałów: tablica specyfikująca akcje mające być wykonane przy nadejściu sygnałów 5 Kontekst pamięci wirtualnej: opisuje zawartość przestrzeni adresowej procesu 1.1 Kanoniczne stany procesów Proces może być w jednym z trzech podstawowych stanów: Wykonywany (ang. Running), Gotowy (ang. Ready) Zablokowany (ang. Blocked). 2 Zablokowany Wykonywany 5 3 4 Gotowy 1 nieistniejący zakończony Rys. 1 Przejścia pomiędzy podstawowymi stanami procesów Pokazane na rysunku przejścia mają miejsca w następujących sytuacjach. 1. Utworzenie procesu 2. Proces żąda zasobu który nie jest dostępny. 3. Wystąpiło przerwanie (proces został wywłaszczony) lub też proces dobrowolnie zwolnił procesor. 4. Procedura szeregująca zdecydowała że ten proces ma być wykonywany. 5. Zasób którego brakowało do kontynuacji procesu stał się dostępny. Przejście zostało zainicjowane przez przerwanie od urządzenia wejścia / wyjścia lub też proces aktualnie wykonywany.. Zakończenie procesu

1.3 Stany procesów w Linuxie TASK_RUNNING, - proces na liście procesów gotowych Ready list TASK_INTERRUPTIBLE, - proces czeka na sygnał lub zasób może być wznowiony sygnałem lub przerwaniem TASK_UNINTERRUPTIBLE, - proces na zasób może być wznowiony wprost TASK_ZOMBIE proces bez procesu macierzystego TASK_STOPPED proces debugowany TASK_RUNNING przydzial CPU wywlaszczenie Wykonywany czekanie na zasób zasób dostepny TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE Rys. 2 Przejścia pomiędzy podstawowymi stanami procesów w systemie Linux 1.2 Drzewo procesów Procesy tworzą drzewo Każdy proces ma dokładnie jeden proces macierzysty Proces może mieć wiele procesów potomnych init Rysunek 0-1 Drzewo procesów