Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.

Slides:



Advertisements
Hasonló előadás
A Windows Azure egy skálázható számításifelhő-platform, amelyet a Microsoft hosztol a világ több pontján lévő adatközpontjaiban. Az Azure egyszerű,
Advertisements

KEVESEBB FELÜGYELET ÚJ ÜZLETI MODELLEK NAGYOBB TERMELÉKENYSÉG.
... manapság BizSpark WebsiteSpark Empower for ISVs MAPS (Web Solutions Toolkit ) Microsoft Partner Network Regisztrált szintCertified és Gold Certified.
A LabVIEW használata az oktatásban
Licencelés Kovács Nóra Ker-Soft Kft.
LDV Project  Szeretettel köszönjük Önöket Egerben a Leonardo Projekt Workshopján  We welcome - with much love - our dear guests!
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
A Windows 7 automatizált telepítése Windows AIK használatával
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Prog2, Java befejezés Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás Dr. Bátfai Norbert egyetemi adjunktus
„High – tech networking” – szakmai konferencia informatikusoknak, szeptember 24., Debrecen, Kölcsey Központ,
Prog2, Java a gyakorlatban
Prog1, C++ a gyakorlatban
Prog2, AspectJ bevezetés Magasszintű programozási nyelvek 2 mérnök informatikus BSc előadás Dr. Bátfai Norbert egyetemi adjunktus
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
VFP programozása report készítése menü készítése dinamikus elemek
Kliensoldali Programozás
További vektor, mátrix algoritmusok
Ittzés Zsigmond Budapest Airport IT Infrastruktúra manager
Ptol-1 Ptolemy Claudius, the great Greek mathematician lived and worked in the 2 nd century B.C. An important theorem about inscribed quadrilaterals.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
ARM tanfolyam 2. előadás.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
CHINESE Kínai PROVERB Közmondás ( munkatársi csapat épités)
Slides for Quantum Computing and Communications – An Engineering Approach Chapter 7 Searching in an Unsorted Database Sándor Imre Ferenc Balázs.
Felszámolók Szakmai Felelősségbiztosítása
Konferencia Gödöllő Miről esik szó? Bevezető gondolatok Egy projekt az informatikában – Mit? – Kinek? – Milyen előnyökkel jár? Tudás és.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
From eco-efficiency to sustainable production Maria Csutora Pietro Bertazzi The workshop is based on research done in the HU-0056 “Sustainable consumption,
ZooGuide – az ismeretterjesztés és az oktatás eszköze  Érdekes és részletes leírások a park állatairól  „Audioguide” funkcióval kiegészített virtuális.
Kiss Tibor System Administrator (MCP) ISA Server 2006.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
DocBook Hogyan Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Operációs rendszerek 2 Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia.
Első magyar EUCIP konferencia Plan modul október 20. Budapest.
Script nyelvek előadás
A BCD használata üzleti partnerek felkutatásához
Maven és Ant Build eszközök bemutatása
Farkas Bálint | Technical Evangelist | Microsoft
Script nyelvek előadás
Prog2, AspectJ bevezetés
Script nyelvek előadás
EX-LH, Ex Libris bemutatkozás
International Olympiad in Informatics
ResearcherID bemutatása
Farkas Bálint | Technical Evangelist | Microsoft
FAZEKAS ANDRÁS ISTVÁN PhD c. egyetemi docens
A nagyváradi villamosok megbízhatósági modellezése
„Agilis-e vagy?” – egy váltókezelő naplója
HWSW Meetup – Felhő és ami mögötte van
Microsoft SQL licenselés a gyakorlatban
Vasas Lívia, PhD december
Lívia Vasas, PhD 2018 Disszertációk Lívia Vasas, PhD 2018.
Microsoft eszközpályázat
Függvénysablonok használata
What’s new in Java 2019 Tömösvári Imre
Előadás másolata:

Operációs rendszerek Bátfai Norbert Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia Tanszék egyetemi tanársegéd Dokumentum verzió: 0.0.1, DEIK_MIPPOS2_BN_12.odp Debrecen, december előadás – SZOFTVEREK FEJLESZTÉSE ÉS VIZSGÁLATA Programozó Páternoszter DE IK mérnök informatikus szak előadás

Operációs rendszerek előadás Bátfai, Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék Copyright © 2008 Bátfai Norbert E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Nem változtatható szakaszok: A szerzőről. Címlap szövegek: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra. Hátlap szövegek: Belépés a gépek mesés birodalmába. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being: A szerzőről, with the Front- Cover Texts being: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra, and with the Back-Cover Texts being: Belépés a gépek mesés birodalmába. Felhasználási engedély A GNU Free Documentation License nem hivatalos magyar fordítása:

A tizenkettedik előadás vázlata Elmélet ● Nyomkövetés, tesztelés ● Buffer overflow, Memory leak ● Kolmogorov bonyolultság, Vitányi információs távolság Példák ● „Nyomkövető” printf, feltételes fordítás ● splint - A tool for statically checking C programs ● gcov - coverage testing tool ● gdb - A GNU hibakereső ● ddd - The Data Display Debugger ● valgrind - a suite of tools for debugging and profiling programs ● efence - Electric Fence Malloc Debugger ● Javát tanítok – Kolmogorov bonyolultságos részei ● CompLearn: Gyakorlat ● C forrásaink vizsgálata a fenti eszközökkel ● Számítások a CompLearn csomaggal: például manuál lapok, politikai beszédek, genomi és aminosav szekvenciák összehasonlítása

SYSCONF(3) Linux Programmer's Manual SYSCONF(3) NAME sysconf - Get configuration information at runtime SYNOPSIS #include long sysconf(int name); DESCRIPTION POSIX allows an application to test at compile- or run-time whether certain options are supported, or what the value is of certain config- urable constants or limits.... OPEN_MAX - _SC_OPEN_MAX The maximum number of files that a process can have open at any time. Must not be less than _POSIX_OPEN_MAX (20).... #include int main (void) { #ifdef OPEN_MAX #ifdef DEBUG printf ("OPEN_MAX definialt\n"); #endif printf ("OPEN_MAX=%d\n", OPEN_MAX); #else #ifdef DEBUG printf ("OPEN_MAX nem definialt\n"); #endif printf ("OPEN_MAX=%d\n", sysconf (_SC_OPEN_MAX)); #endif return 0; } Feltételes fordítás $ gcc openmax.c -o openmax $./openmax OPEN_MAX=1024 $ gcc -DDEBUG openmax.c -o openmax $./openmax OPEN_MAX nem definialt OPEN_MAX=1024

#include #define TOMB_MERET 10 #define ELOTTE 0 #define UTANA 1 char bsstomb[TOMB_MERET]; char * masol (const char *mit) { char mibe[TOMB_MERET]; char *p = mibe; char *vissza = mibe; for (; *p++ = *mit++;); // Vermen lokalisan foglalt terulet visszaadasa return vissza; } char * csmasol (char *hova) { int i = 0; for (i = -ELOTTE; i < TOMB_MERET + UTANA; ++i) *(hova + i) = '*'; // Eggyel tulirva a sztring lezarasa *(hova + TOMB_MERET) = '\0'; return hova; } int main (void) { char veremtomb[TOMB_MERET]; char *halomtomb; printf ("Verem tomb: [%s]\n", csmasol (veremtomb)); printf ("Masolt tomb: [%s]\n", masol (veremtomb)); printf ("BSS tomb: [%s]\n", csmasol (bsstomb)); halomtomb = (char *) malloc (TOMB_MERET * sizeof (char)); printf ("Heap tomb: [%s]\n", csmasol (halomtomb)); free (halomtomb); // Felszabaditott terulet hasznalata printf ("Heap tomb: [%s]\n", csmasol (halomtomb)); // Elfolyik a memoria halomtomb = (char *) malloc (TOMB_MERET * sizeof (char)); return 0; } $ gcc -O3 poloskak.c -o poloskak $./poloskak Verem tomb: [**********] Masolt tomb: [**********] BSS tomb: [**********] Heap tomb: [**********] poloskak.c

$ splint poloskak.c Splint Nov poloskak.c:20:10: Stack-allocated storage vissza reachable from return value: vissza... poloskak.c:42:42: Passed storage veremtomb not completely defined (*veremtomb... poloskak.c:55:41: Variable halomtomb used after being released Memory is used after it has been released (either by passing as an only param Finished checking code warnings... poloskak.c - splint - A tool for statically checking C programs // Vermen lokalisan foglalt terulet visszaadasa return vissza; // Felszabaditott terulet hasznalata printf ("Heap tomb: [%s]\n", csmasol (halomtomb)); printf ("Verem tomb: [%s]\n", csmasol (veremtomb));

$ gcc -fprofile-arcs -ftest-coverage poloskak.c $./a.out Verem tomb: [**********] Masolt tomb: [kriksz-kraksz] BSS tomb: [**********] Heap tomb: [**********] Segmentation fault (core dumped) $ gcov poloskak.c $ more poloskak.c.gcov... -: 10:char * -: 11:masol (const char *mit) 1: 12:{ -: 13: char mibe[TOMB_MERET]; 1: 14: char *p = mibe; 1: 15: char *vissza = mibe; -: 16: 11: 17: for (; *p++ = *mit++;); -: 18: -: 19: // Vermen lokalisan foglalt terulet visszaadasa 1: 20: return vissza; -: 21:} -: 22: -: 23:char * -: 24:csmasol (char *hova) 4: 25:{ 4: 26: int i = 0; 48: 27: for (i = -ELOTTE; i < TOMB_MERET + UTANA; ++i) 44: 28: *(hova + i) = '*'; -: 29: -: 30: // Eggyel tulirva a sztring lezarasa 4: 31: *(hova + TOMB_MERET) = '\0'; poloskak.c - gcov - coverage testing tool

gdb(1) GNU Eszközök gdb(1) NÉV gdb - A GNU hibakereső ÖSSZEGZÉS gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir] [prog[core|procID]] LEÍRÁS Egy olyan hibakereső, mint a GDB, célja az, hogy betekintést nyújtson egy másik program ``belsejébe'', miközben az fut--vagy arra, hogy mit csinált egy másik program abban a pillanatban, amikor összeomlott. A GDB négy fő dologra képes (és még néhány egyébre is e négy dolog támogatásához), amelyek segítenek a működés közben való hibakeresésben: o Elindítja a programot,meghatároz bármely olyan dolgot, amely befolyásolhatja a működését. o Megállítja a programot meghatározott körülmények bekövetkeztekor. o Megvizsgálja, hogy mi történt, amikor a program megállt. o Megváltoztat dolgokat a programban, hogy kísérletezni lehessen a hiba következményeinek kijavítása érdekében, és folytathassa a munkát egy másik hibán.... $ gcc -ggdb poloskak.c -o poloskak $ gdb poloskak GNU gdb 6.6-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"... Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". (gdb) break 43 Breakpoint 1 at 0x80484fd: file poloskak.c, line 43. (gdb) run Starting program: /home/norbi/OS/9/poloskak Verem tomb: [**********] Breakpoint 1, main () at poloskak.c:44 44 printf ("Masolt tomb: [%s]\n", masol (veremtomb)); (gdb) print veremtomb $1 = "**********" (gdb)... poloskak.c - gdb - A GNU hibakereső printf ("Verem tomb: [%s]\n", csmasol (veremtomb));

$ gcc -ggdb poloskak.c -o poloskak $ xxgdb poloskak poloskak.c - xxgdb - A GNU hibakereső

ddd - The Data Display Debugger

... #define ELEIRAS 0 #define TULIRAS 1... $ gcc poloskak.c -o poloskak $ valgrind -v --leak-check=full./poloskak ==6289== IN SUMMARY: 107 errors from 13 contexts (suppressed: 11 from 1) ==6289== ==6289== malloc/free: in use at exit: 10 bytes in 1 blocks. ==6289== malloc/free: 2 allocs, 1 frees, 20 bytes allocated. ==6289== ==6289== searching for pointers to 1 not-freed blocks. ==6289== checked 59,820 bytes. ==6289== ==6289== 10 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==6289== at 0x : malloc (vg_replace_malloc.c:149) ==6289== by 0x804858F: main (poloskak.c:58) ==6289== ==6289== LEAK SUMMARY: ==6289== definitely lost: 10 bytes in 1 blocks.... poloskak.c - valgrind - a suite of tools for debugging and profiling programs... #define ELEIRAS 100 #define TULIRAS $ gcc poloskak.c -o poloskak $ valgrind -v./poloskak... ==13837== More than total errors detected. I'm not reporting any more. ==13837== Final error counts will be inaccurate. Go fix your program! ==13837== Rerun with --error-limit=no to disable this cutoff. Note...

#define ELEIRAS 0 #define TULIRAS 1... $ gcc -lefence poloskak.c -o poloskak $./poloskak Verem tomb: [**********] Masolt tomb: [kriksz-kraksz] BSS tomb: [**********] Electric Fence 2.1 Copyright (C) Bruce Perens. Heap tomb: [**********] Segmentation fault (core dumped) poloskak.c - efence - Electric Fence Malloc Debugger

Otthoni feladat: az eddig bemutatott eszközök közül (kivéve a nyomkövető printf-et és a feltételes fordítást) próbálj ki kettőt egy saját C programodra! „Bizonyítékul” a programod és néhány pillanatfelvételt küldj el az címemre, az „OS-OTTHONI- DEBUG” tárggyal. Kiemelt otthoni feladat: az eddig bemutatott eszközök közül (kivéve a nyomkövető printf-et és a feltételes fordítást) próbálj ki legalább négyet egy saját C programodra! „Bizonyítékul” a munkádat bemutató, azt részletesen leíró, pillanatfelvételekel bővített DocBook dokumentumot (és egy abból generált html lapot) (vagy esetleg egy OpenOffice dokumentumot) küldj el nekem az címemre, az „OS- KIEMELTOTTHONI-DEBUG” tárggyal.

csotanyirtas.c

Verem túlcsordulás (buffer overflow, buffer overrun)

Verem túlcsordulásos támadások

A Chaitin-Kolmogorov bonyolultság

1.8. példa - A Chaitin-Kolmogorov bonyolultság nem kiszámítható!

A Chaitin-Kolmogorov bonyolultság 1.8. példa - A Chaitin-Kolmogorov bonyolultság nem kiszámítható! for(;;) { sorozat = binárisba(i); if(bonyolultság(sorozat) > ) } A bonyolultság() függvény implementációja, feltevésünk szerint betű Kilép és kiírja a sorozatot. sorozat A teljes program hossza betű

CompLearn: The similarity metric

CompLearn:

CompLearn:

CompLearn:

Tippek a gyakorlatra

Köszönöm a figyelmet Az előadások és a gyakorlatok kölcsönösen, oda-vissza építenek egymásra. Skype: batfai.norbert MSN: Az óra fóruma: