Posted in: Základy PowerShellu

Hodiny do PowerShellu

Dnes je to jen malý kousek kódu, který se ovšem může hodit. Na liště OS máme běžně hodiny, ale někdy se může stát, že potřebujeme promítnout někam aktuální čas, ne z nějakého jiného důvodu chceme v konzoli vidět běžící čas. Nyní přidám jednoduché jádro, digitální hodiny. Jednoduchý kód využívající nekonečného cyklu while:

while($true)
{
    cls #vyčištění konzole
    $cas = Get-Date | select Hour, Minute, Second #uložení času do proměnné
    Write-Host $cas.Hour ":" $cas.Minute ":" $cas.Second #výpis času v obvyklém formátu
    Start-Sleep -Seconds 1 #uspání procesu na 1 sekundu
}

Ručičkové hodiny do konzole

Vykreslení ručičkových hodin s pomocí grafických knihoven .NET už na internetu a jde vytvořit v libovolném jazyce s využitím trochy goniometrie. Osobně jsem chtěl simulovat ručičkové hodiny přímo v konzole pomocí vykreslování znaků. Hodiny vykreslují polohu konců ručiček, které se pohybují spíše po nějakém kosém čtverci, nežli po kruhu, protože k vykreslení dochází vypsáním pole 30 x 30 znaků. Stejně jako digitálky výše, čtou čas z operačního systému, ze kterého následně vypočítají x a y souřadnici konce ručičky každé ručičky. Problémem je relativně pomalé překreslování příkazové řádky, takže běh nevypadá úplně hezky, ale jdou a přečíst se nechají 😉

  • kolečko je hodinová ručička
  • + je minutová ručička
  • * je sekundová ručička
function get-sekunda{
    param (
        $s
    )
    #výpočet polohy sekund
    if($s -le 15)
    {
        $y = $s + 15
        $x = $s
        $plocha[$x, $y] = '*'
    }
    elseif(($s -gt 15) -and ($s -le 30))
    {
        $y = 30 - ($s - 15)
        $x = $s
        $plocha[$x, $y] = '*'
    }
    elseif(($s -gt 30) -and ($s -le 45))
    {
        $y = 15 - ($s - 30)
        $x = 30 - ($s - 30)
        $plocha[$x, $y] = '*'
    }
    elseif(($s -gt 45) -and ($s -le 60))
    {
        $y = $s - 45
        $x = 30 - ($s - 30)
        $plocha[$x, $y] = '*'
    }
}

function get-minuta{
    param (
        $m
    )
    #výpočet polohy minut
    if($m -le 15)
    {
        $y = $m + 15
        $x = $m
        $plocha[$x, $y] = '+'
    }
    elseif(($m -gt 15) -and ($m -le 30))
    {
        $y = 30 - ($m - 15)
        $x = $m
        $plocha[$x, $y] = '+'
    }
    elseif(($m -gt 30) -and ($m -le 45))
    {
        $y = 15 - ($m - 30)
        $x = 30 - ($m - 30)
        $plocha[$x, $y] = '+'
    }
    elseif(($m -gt 45) -and ($m -le 60))
    {
        $y = $m - 45
        $x = 30 - ($m - 30)
        $plocha[$x, $y] = '+'
    }
}

function get-hodina{
    param (
        $h
    )
    #převedení na 12 hodin režim
    $h = $h % 12
    #výpočet polohy hodin
    switch($h)
    {
        0 {$plocha[0, 15] = 'o'}
        1 {$plocha[5, 20] = 'o'}
        2 {$plocha[10, 25] = 'o'}
        3 {$plocha[15, 30] = 'o'}
        4 {$plocha[20, 25] = 'o'}
        5 {$plocha[25, 20] = 'o'}
        6 {$plocha[30, 15] = 'o'}
        7 {$plocha[25, 10] = 'o'}
        8 {$plocha[20, 5] = 'o'}
        9 {$plocha[15, 0] = 'o'}
        10 {$plocha[10, 5] = 'o'}
        11 {$plocha[5, 10] = 'o'}
        12 {$plocha[0, 15] = 'o'}
    }
}

$plocha = New-Object 'object[,]' 31,31

while($true)
{
    cls #vyčištění konzole
    $cas = Get-Date | select Hour, Minute, Second #uložení času do proměnné
    #Write-Host $cas.Hour ":" $cas.Minute ":" $cas.Second #výpis času v obvyklém formátu
    #inicialoizace plochy
    for($i = 0; $i -le 30; $i++)
    {
        for($j = 0; $j -le 30; $j++)
        {
            $plocha[$i,$j] = ' ' #uložení mezery do pole plochy
        }
    }
    #nastavení ciferníku
    $plocha[0,15] = '12'
    $plocha[15,30] = '3'
    $plocha[30,15] = '6'
    $plocha[15,0] = '9'
    $plocha[15,15] = '*'
    #výpočet polohy konců ručiček
    get-hodina -h ($cas.Hour) #ručička zobrazená kolečkem
    get-minuta -m $cas.Minute #ručička zobrazení plusem
    get-sekunda -s $cas.Second #ručička zobrazená hvězdičkou
    #vykreslení plochy
    for($i = 0; $i -le 30; $i++)
    {
        for($j = 0; $j -le 30; $j++)
        {
            Write-Host $plocha[$i,$j] -NoNewline
        }
        Write-Host ""
    }
    
    Start-Sleep -Seconds 1 #uspání procesu na 1 sekundu
}
Posted in: Vývoj počítačů

Historie CPU

Co je procesor

  • Výroba mikroprocesorů začala roku 1971 na základě podkladů M. E. Hoffa z roku 1969
  • První firmou byla Texas Instruments
  • Je řídící jednotkou počítače – centrální jednotka (Central procesor Unit)
  • Jde o integrovaný obvod, jehož úkolem je provádět instrukce programu ležícího v operační paměti
  • Základem každého procesoru je logický obvod, který dokáže zpracovat sadu jednoduchých mikroinstrukcí
  • Každý procesor je též vybaven druhou sadou instrukcí – strojovým kódem

Strojový kód

  • Jde o instrukční sadu, kterou je vybaven každý procesor
  • Obsahuje instrukce pro manipulaci s pamětí, řízení toku a zpracování instrukcí
  • Jednotlivé instrukce mají definovaný číselný kód
  • Procesor umí tyto instrukce detekovat a vykonat
  • Každou instrukci si procesor interně rozloží na mikroinstukce a ty provede

Strojová instrukce

  • Strojová instrukce se přečte z operační paměti, dekóduje, rozloží na mikroinstukce a provede
  • Skladba instrukce: kód instrukce a adresy operandů
  • Instrukce pracuje s operandy (hodnotami)
  • Instrukce obsahuje adresy míst, kde jsou operandy uloženy
  • Programování ve strojovém kódu se pro svou složitost používá spíše výjmečně
  • Programátoři pracují ve vyšších programovacích jazycích, nebo v jazyce symbolických adres (assembler), které jsou specializovanými programy překládány do strojového kódu příslušného procesoru

Kritéria dělící procesory

  • Některé odlišnosti mohou vést k nekompatibilitě procesorů
  • Kompatibilita = slučitelnost
  • Strojovým kódem -procesory mohou mít pro stejnou instrukci jiný kód (nejsou spolu kompatibilní), výrobci: Intel a Motorola
  • Množstvím a druhem instrukcí (vnitřní stavbou) – existují 2 koncepce – CISC (kompletní sada instrukcí) a RISC (regulovaná (omezená) sada instrukcí, často účelově zaměřená (grafika, servry)
  • Šíře slova – schopnost zpracovat najednou určité množství bitů (8, 16, 32, 64, 128)
  • Frekvence – každá základová deska je vybavena generátorem taktů (generuje taktovací impulsy) (jakési pracovní tempo procesoru) – procesor je od výrobce vybaven násobičem (poměr mezi interní frekvencí a frekvencí sběrnice)
  • Zapouzdření
  • Typ patice
  • Velikost cache

Vývoj procesorů Intel

Intel 4004

  • První programovatelný čip (1969)
  • Byl užíván jako 4b procesor Busicom kalkulačky
  • Vyráběn byl od roku 1971
  • Data zpracovával na 4 bitech, ale jeho instrukce měly délku 8 bitů
  • Frekvence: 108 kHz

Intel 8008

  • Uveden v dubnu 1972
  • Jde o 1. 8bitový procesor
  • Paměť: 16 kB
  • Frekvence 200 kHz

Intel 8080

  • Uveden roku 1974
  • 16 bitová paměť a 8 bitová sběrnice
  • Používán v 1. obecně známém počítači Altair

Intel i 8088 a 8086

  • Uvedeno: 1978
  • Oba typy byly kompatibilní binárně, ale ne pinově (vykonávají stejné programy, ael vyžadují každý jinou patici)
  • Počet tranzistorů: 29 tisíc
  • Typy se lišily v šíři datové sběrnice (8086 měl 16 bitovou a 8088 jen 8 bitovou sběrnici)
  • Oba typy šlo rozšířit o pomocný procesor Intel 8087 (přebírá od hlavního procesoru řešení některých náročnějších instrukcí (především výpočty s reálnými čísly) (počet instrukcí strojového kódu byl 170))
  • Koporocesor = pomocný procesor, který pomáhá s vykonáním náročnějších instrukcí (operace s reálnými čísly)

Intel i 80286

  • Uveden: 1986
  • Instrukční sada zvětšena ze 170 na 220 instrukcí
  • Procesor i sběrnice byly 16 bitový
  • Pracuje v chráněném režimu (mód chráněné virtuální paměti – programy jsou od sebe izolovány jako by měly celý systém pro sebe
  • Koprocesor: 80287
  • Počet tranzistorů: 120 tisíc
  • Reálný režim (real mode, režim reálné adresy)
  • v tomto režimu pracuje procesor stejně jako jeho předchůdci (8086 a 8088)
  • používá 20 bitů pro tvorbu adresy, která je tvořena podle stejného modelu jako u 8086
  • tento režim umožňuje spouštění programů napsaných pro jeho předchůdce
  • chráněný režim (protected mode, režim virtuální adresy)
  • je novinkou podporující podporující multiprogramování (současný běh více programů)
  • nezbytností se stává ochrana mezi jednotlivými programy a různé úrovně přístupu k prostředkům počítače
  • užívá jiný model pro vytváření adresy
  • adresa je tvořena ze dvou 16 bitových složek nazývaných selektor a offset pomocí tzv. tabulek deskriptorů
  • výsledná adresa je 24 bitová, což umožňuje adresovat maximálně 224B = 16 MB operační paměti

Intel  i 80386 SX

  • uveden v říjnu roku 1985
  • procesor je 32 bitový = má 32 bitovou vnitřní architekturu
  • datová sběrnice 16 bitů
  • počet instrukcí 220
  • koprocesor 80387 SX
  • počet tranzistorů 275 tisíc

Intel i 80386

  • říjen 1985
  • plně 32 bitový
  • sběrnice též 32 bitová
  • koprocesor i80386
  • poprvé užita paměť cache (externí)
  • reálný režim (real mode)
  • velmi podobný reálnému režimu předchozích procesorů
  • V tomto režimu mohou opět pracovat programy určené pro předešlé procesory (8086/8088).
  • chráněný režim (protected mode)
  • velmi podobný  procesoru 80286
  • Šířka adresové sběrnice je 32 bitů, což dovoluje adresovat operační paměť o maximální kapacitě 4 GB
  • opět používá pro tvorbu adresy dvou složek (selektor, offset)
  • Selektor je opět rozdělen do tří částí, které mají stejný význam jako u procesoru 80286, ale bázová adresa je nikoliv 24bitová, ale 32bitová
  • Dalším rozdílem je velikost offsetu, jehož velikost je 32 bitů
  •  Procesor 80386 adresoval až 4 GB (232B) operační paměti a aby velikost jednoho segmentu byla také 4 GB
  • Jedna položka tabulky deskriptorů obsahuje:
  • bázovou adresu (32 bitů): adresa začátku segmentu
  • limit segmentu (20 bitů): maximální velikost segmentu, která je brána buď v bytech (max. 1 MB), nebo v násobcích 4 kB (max. 4 GB)
  • přístupová práva k segmentu (8 bitů): podobně jako u procesoru 80286
  • další informace (4 B): např. výše zmíněná interpretace limitu segmentu
  • adresa určená tímto schématem nemusím být ještě fyzickou adresou ukazující přímo do operační paměti, ale je možné, aby byla dále transformována mechanismem zvaným stránkování
  • 32bitová lineární adresa je rozdělena na tři části:
  • Adresář: tvořen nejvyššími 10 bity, slouží jako index tabulky zvané adresář, odkud je vybrána 20bitová báze tabulky stránek.
  • Tabulka: tvořena nižšími 10 bity, slouží jako index do tabulky stránek. Z této tabulky se vyzvedne 20 bitová báze stránky, která tvoří 20 nejvyšších bitů fyzické adresy.
  • Offset: tvořen nejnižšími 12 bity a je potom sečten s o 12 bitů posunutou (vynásobenou 4096) bází stránky tak, že tvoří nejnižších 12 bitů fyzické adresy
  • Mechanismus stránkování
  • Nese problém dvou přístupů do tabulek uložených v operační paměti, což může procesor zdržovat
  • Za účelem zrychlení má procesor vestavěnou vyrovnávací cache paměťzvanou TLB, ve které jsou uloženy posledně použité lineární adresy a k nim odpovídající fyzické adresy
  • virtuální režim
  • tomto režimu procesor 80386 pracuje podobně jako procesor 8086 (8088), ale je plně podřízen režimu chráněnému
  • Je možné takto virtualizovat 1 MB operační paměti, který mohl adresovat procesor 8086 a uložit jej kamkoliv do 4 GB operační paměti
  • – Compaq byl první významnou firmou, která představila počítač sestavený s procesorem 80386 a tím na trhu porazila IBM

Intel i 80486 SX

  • Uveden 1989
  • Procesor je stále samostatný přídavný čip
  • Přidaná interní cache
  • Počet instrukcí 220
  • Plně 32 bitový
  • Počet tranzistorů 1,18 milionu

Intel i 80486

  • Uveden 1989
  • Integrace matematického koprocesoru přímo do jádra
  • Varianty: DX2 (zdvojnásobovala) a DX3 (ztrojnásobovala) základní taktovací frekvenci
  • Počet instrukcí 220
  • Počet tranzistorů 1,18 milionu

Intel Pentium

  • Uvedení: listopad 19993
  • 32 bitový procesor
  • Datová sběrnice 64 bitů
  • Počet tranzistorů 3,1 – 3,3 milionu
  • Vybaven 2 ALU
  • Technologie Plug and Play
  • Plug & Play je společným projektem Microsoft, Intel a Compaq
  • Myšlenka Plug & Play (zapoj a hraj) spočívá v přidání obvodů na karty tak, aby bylo možné desky automaticky nastavovat a vznášet dotazy na požadované zdroje
  • Plug & Play umožňuje OS automaticky konfigurovat desky a dotazovat se na ně, což snižuje nutnost otevření PC na minimum

Intel Pentium Pro

  • Uvedení: podzim roku 1995
  • Počet bitů 32
  • Je vytvářen druhý cache čipem, který zvyšuje rychlost (integrovaná cache L2 v tele procesoru o velikosti až 1024 bitů
  • Počet tranzistorů 5,5 milionu

Intel Pentium MMX

  • Datum uvedení: 1997
  • Soubor instrukcí rozšířen o soubor instrukcí pro multimediální operace
  • Počet tranzistorů 4,5 milionu
  • Procesor 32 bitů
  • Sběrnice 64 bitů
  • techniky19Technologie MMX využívá techniky SIMD(Single Instruction Multiple Data), která dovoluje zpracovat mnoho informací během jediné instrukce
  •  Možnosti MMX technologie využívají především aplikace pro práci s: 2D / 3D grafikou zvukem rozpoznáváním řeči videem kompresí dat
  •  Procesory s touto technologií jsou plně kompatibilní se všemi předchůdci řady Intel 80×86

Intel Pentium II

  • Uvedení roku 1997
  • Počet bitů: 32
  • Počet tranzistorů 7,5 milionu
  • Podobné vlastnosti jako Intel Pentium Pro
  • Vybaven technologií MMX
  • Levnější variantou je Intel Celeron (duben 1998) – nemá tecnologii 2L cache a chybí zapoudření
  • Frekvence: 233 – 450 MHz

Intel Pentium II Xeon

  • Uvedení roku 1998
  • Vyvynut pro servry a počítače sloužící jako pracovní stanice
  • Hlavní výhodou je využití mutltiprocesorových systémech
  • Muže mít cache až 2MB
  • Počet tranzistorů 7,5 milionu
  • 32 bitový
  • Frekvence 233 – 450 MHz

Intel Pentium III

  • Uvedení: 1999
  • Je určen pro práci s internetem a pro uživatele vyžadující rychlý přenos dat
  • 70 nových instrukcí pro blokové zpracování dat pro více dat zpracovaných jednou instrukcí
  • Počet bitů: 32
  • Frekvence 400 MHz – 1,4 GHz

Intel Pentium 4

  • Uvedení: 2000
  • Počet bitů 32
  • Frekvence 1,3 – 3,2 GHz
  • Používá řízený pokles napětí s rostoucím odběrem
  • Jiná logika sběrnice
  • Vylepšené technologie výroby
  •  Má velký příkon => všechny základové desky určené pro tento procesor mají nový regulátor napětí, na jehož vstupu je 12 V
  • Varianty: Xeon (32 bitů, frekvence 1,4 – 1,7 GHz) a Prescott (uveden 2004, frekvence 2,8 – 3,6 GHz)

Intel Itanium

  • Uveden v květnu 2001
  • Počet bitů: 64
  • Frekvence: 733 – 800 MHz
  • Šíře sběrnice 64 bitů

Intel Itanium 2

  • Uvedení: červenec 2002
  • Počet bitů 64
  • Frekvence 1,3 – 1,5 GHz
  • Zcela nové výpočetní jádro
  • Integrováno 3MB cache
Posted in: Windows server

Jak přenést či zálohovat role a funkce Windows Serveru?

Dnes si představíme malý PowerShell skript, který Vám pomůže přenést všechny role a funkce z jednoho serveru na druhý. Na takto připraveném serveru je možné následně využít nástrojů pro migraci serveru, které dokáže exportovat a importovat jednotlivé konfigurace různých rolí a funkcí serveru. Základem ovšem zůstává mít instalované stejné role a funkce na starém i novém stroji a to jak vše provést na 2 spuštění sktriptu a přenesené jednoho TXT souboru si ukážeme. Nejprve je potřeba si uložit následující skript:

Function MigraceRoliFunkci
{
    Param(
        [Parameter(Mandatory=$true)]
        [String]$soubor = "C:\Users\Public\features.txt",
        [Parameter(Mandatory=$false)]
        [Switch]$Import
    )
    if($Import)
    {
        $file = Get-Content $soubor;
    	$radek = ($file.Count) - 3;
    	$role = Get-Content E:\funkce.txt -Tail $radek
        foreach ($f in $role)
        {
            Install-WindowsFeature -Name $f -IncludeManagementTools
        }
        Write-Host "Restartujte server co nejdříve!"
	}

     else

     {

	Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | select name | Out-File -FilePath $soubor
        
	Write-Host "Vyzvednete si vygenerovany soubor pro import."
    
     }

}

Nyní jej můžeme spustit na starém serveru a následně zavolat funkci například takto:
MigraceRoliFunkci -soubor E:\funkce.txt
Nyní skriprt spustí export seznamu rolí a funkcí za našeho starého serveru na náš disk E do souboru funkce.txt.
Disk E přeneseme na nový server, kde pro zjednodušení bude mít také písmeno E, spustíme náš skript a opět budeme volat funkci:
MigraceRoliFunkci -soubor E:\funkce.txt -Import
Nyní naše funkce provede instalaci všech rolí a funkcí, které nalezne v souboru funkce.csv. Po dokončení instalace máme server připraven k importu nastavení, ale o tom až někdy jindy.

Back to Top