<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://so.v2.cs.unibo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Edux</id>
	<title>Sistemi Operativi - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://so.v2.cs.unibo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Edux"/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php/Special:Contributions/Edux"/>
	<updated>2026-05-13T18:44:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1266</id>
		<title>Lezioni Anno Accademico 2015/16</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1266"/>
		<updated>2015-11-11T19:40:29Z</updated>

		<summary type="html">&lt;p&gt;Edux: /* Lezione del 18 novembre 2015 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''scrivete qui idee, riassunti dei concetti espressi, commenti approfondimenti sulle lezioni.''&lt;br /&gt;
&lt;br /&gt;
== Lezione del 22 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Introduzione al corso di Sistemi Operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Hardware vs. Software&lt;br /&gt;
* Informatica&lt;br /&gt;
* Scienza vs. Tecnologia&lt;br /&gt;
* Informazione (vs. Dato)&lt;br /&gt;
* Linguaggio&lt;br /&gt;
* Elaborazione-Memorizzazione-Comunicazione&lt;br /&gt;
* Algoritmo vs. Programma&lt;br /&gt;
* Hacker/Hacking (vs. Cracker)&lt;br /&gt;
* Maker&lt;br /&gt;
* Analogico-Digitale&lt;br /&gt;
&lt;br /&gt;
== Lezione del 23 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Storia dei Sistemi.... anche operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Architettura a livelli (Layer)&lt;br /&gt;
* SO come livello di astrazione (semplificazione, portabilita')&lt;br /&gt;
* SO come gestore di risorse (controllo, sicurezza, continuita' di servizio)&lt;br /&gt;
* Storia le generazioni: ingranaggi-&amp;gt;Valvole termoioniche-&amp;gt;Transistor-&amp;gt;Circuiti integrati-&amp;gt;Microprocessori&lt;br /&gt;
* I &amp;quot;ruoli&amp;quot; dell'informatica: ideatore, costruttore, programmatore, operatore, utente&lt;br /&gt;
* Multitasking (perche' e' possibile? perche' e quando e' necessario?)&lt;br /&gt;
* Interattivita'&lt;br /&gt;
* TIme sharing&lt;br /&gt;
* Multiuser (multiutente)&lt;br /&gt;
* UNIX&lt;br /&gt;
* Personal Computer (e i sistemi operativi)&lt;br /&gt;
&lt;br /&gt;
== Lezione del 30 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Il materiale per poter replicare l'esperimento sulla portabilit&amp;amp;agrave; dei compilatori &amp;amp;egrave; [http://www.cs.unibo.it/~renzo/so/tools/portability3.tgz qui]. &lt;br /&gt;
&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:38, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Per gli esperimenti con le macchine virtuali:&lt;br /&gt;
* il file debian_wheezy_i386_desktop.qcow2 l'ho preso da qui: https://people.debian.org/~aurel32/qemu/i386/.&lt;br /&gt;
il comando per kvm &amp;amp;egrave;:&lt;br /&gt;
  kvm -m 1G -drive file=$(echo debian_wheezy*.qcow2),cache=writeback -monitor stdio&lt;br /&gt;
* chi volesse provare debian hurd pu&amp;amp;ograve; scaricare l'immagine: debian-hurd-20150424.img da qui: https://www.debian.org/ports/hurd/hurd-install. Nella pagina &amp;amp;egrave; anche indicato come lanciare kvm (io aggiungerei -monitor stdio in fondo per avere la console di qemu-kvm).&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:47, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Conoscenze a breve, medio e lungo termine dell'informatica&lt;br /&gt;
* Linguaggio dell'Hardware&lt;br /&gt;
* X ''Virtuale'' (dove X rappresenta qualsiasi cosa)&lt;br /&gt;
* Emulazione/Simulazione&lt;br /&gt;
* virtualizzazione senza emulazione&lt;br /&gt;
* Cosa e', cosa non e' e dov'e' (realmente) il sistema operativo&lt;br /&gt;
* macchine virtuali&lt;br /&gt;
* Distribuzione e Ambiente Operativo&lt;br /&gt;
* [http://www.gnu.org/philosophy/open-source-misses-the-point.it.html Licenze: differenza fra Software Libero e Open Source]&lt;br /&gt;
&lt;br /&gt;
== Lezione del 07 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Ricordo che &amp;amp;egrave; in sospeso una domanda: [[&amp;quot;l'arduino ha un sistema operativo?&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Concetti: ripasso linguaggio C ===&lt;br /&gt;
* Compilatori vs. Interpreti&lt;br /&gt;
* Programmi vs. Script&lt;br /&gt;
* Le classi di linguaggi di programmazione&lt;br /&gt;
* Il &amp;quot;livello&amp;quot; dei linguaggi di programmazione&lt;br /&gt;
* Cosa e', cosa non e' il Linguaggio C&lt;br /&gt;
* [[Genesi del linguaggio C: intenzioni degli autori]]&lt;br /&gt;
* Le '''vere''' novita' del linguaggio C&lt;br /&gt;
&lt;br /&gt;
=== concetti: ripasso architettura ===&lt;br /&gt;
* Modelli architetturali: von Neumann vs. Harvard&lt;br /&gt;
* Gerarchia di Memoria&lt;br /&gt;
* Cache&lt;br /&gt;
* Indirizzi Logici, Indirizzi Fisici&lt;br /&gt;
* Rilocazione&lt;br /&gt;
&lt;br /&gt;
=== strumenti utilizzati durante la lezione ===&lt;br /&gt;
* Arduino, hardware e sistema di sviluppo. Nelle distribuzioni debian-like c'e' il pacchetto denominato &amp;quot;Arduino&amp;quot;&lt;br /&gt;
  apt-get install arduino&lt;br /&gt;
* Una scheda con il solo microcontrollore atmega (nella scheda in aula era un atmega168). Ho tratto ispirazione da [http://www.tuxgraphics.org/electronics/200411/article352.shtml questo articolo di tuxgraphics]. Non e' necessario fare tutte le fasi iniziali di &amp;quot;software installation&amp;quot; perche' sono tutti software pacchettizzati debian. Se avete installato il pacchetto arduino tutti i cross compiler e lo strumento per caricare il firmware li trovate gia' disponibili. &lt;br /&gt;
* Il programma C senza librerie e' il seguente:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef unsigned long uint32_t;&lt;br /&gt;
typedef unsigned short uint16_t;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  *((volatile uint8_t *) 0x2B) = 0x00;&lt;br /&gt;
  *((volatile uint8_t *) 0x2A) = 0xFF;&lt;br /&gt;
&lt;br /&gt;
  while (1) {&lt;br /&gt;
    volatile uint16_t t;&lt;br /&gt;
    for (t=0; t&amp;lt;10000; t++)&lt;br /&gt;
      ;&lt;br /&gt;
    *((volatile uint8_t *) 0x2B) += 1;&lt;br /&gt;
  }&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
per vedere il led lampeggiare occorre collegarlo (con la resistenza di limitazione della corrente) al pin 2 (porta D0) poi al pin 3 (porta D1) etc... (spostate il circuito disegnato alla porta 28 nella pagina sopra citata di tuxgraphics ai pin 2, 3 etc). NB: se volete collegare le porte GPIO o i2c di arduino o di un atmega ad un raspberry PI controllate che la tensione di lavoro dell'arduino/atmega sia 3.3v e NON 5v.&lt;br /&gt;
&lt;br /&gt;
== Lezione del 14 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. [[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 15:43, 10 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Linguaggio C ===&lt;br /&gt;
* Preprocessori: inclusione, compilazione condizionale macro&lt;br /&gt;
* Macro vs. funzioni inline&lt;br /&gt;
* Static vs. Extern&lt;br /&gt;
* Static vs. Auto&lt;br /&gt;
* Register&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Bus Indirizzi, Bus Dati, Gerarchie di Bus&lt;br /&gt;
* Interrupt (e Trap)&lt;br /&gt;
* Mascheramento degli Interrupt&lt;br /&gt;
* Gestione nidificata degli interrupt&lt;br /&gt;
* DMA (Direct Memory Access)&lt;br /&gt;
&lt;br /&gt;
=== temi accennati: ===&lt;br /&gt;
* [http://mellotanica.github.io/uARM/ uarm]: l'emulatore per il progetto&lt;br /&gt;
&lt;br /&gt;
== Lezione del 21 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
(Correzione) Compiti a casa:&lt;br /&gt;
* Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. Sono da provare e commentare. E' possibile proporne di nuovi.&lt;br /&gt;
* Provare a installare [http://mellotanica.github.io/uARM/ uarm: l'emulatore per il progetto] nei propri sistemi.&lt;br /&gt;
&lt;br /&gt;
=== argomenti trattati ===&lt;br /&gt;
* vettori, strutture e puntatori in C&lt;br /&gt;
* il debugging: gdb&lt;br /&gt;
* la funzione _start nei sistemi UNIX like.&lt;br /&gt;
&lt;br /&gt;
Ecco l'esempio di funzione start minimale:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=asm&amp;gt;&lt;br /&gt;
.text&lt;br /&gt;
.global _start&lt;br /&gt;
&lt;br /&gt;
_start:&lt;br /&gt;
  xor %rbp, %rbp&lt;br /&gt;
  popq %rdi&lt;br /&gt;
  movq %rsp, %rsi&lt;br /&gt;
  andq $~15, %rsp&lt;br /&gt;
  call main&lt;br /&gt;
  //nuova interfaccia syscall&lt;br /&gt;
  mov %rax, %rdi&lt;br /&gt;
  mov $231, %rax&lt;br /&gt;
  syscall&lt;br /&gt;
  //vecchia interfaccia syscall&lt;br /&gt;
  //mov %eax, %ebx&lt;br /&gt;
  //mov $252, %eax&lt;br /&gt;
  //int $0x80&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E il sorgente C usato nell'esperimento di debugging:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
struct test {&lt;br /&gt;
  int a[16];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct test x={{42,73,51}};&lt;br /&gt;
&lt;br /&gt;
int f(struct test t) {&lt;br /&gt;
  return t.a[0]+t.a[1]+t.a[2];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  volatile int sum=f(x);&lt;br /&gt;
  return argc;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lezione del 28 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== argomenti trattati ===&lt;br /&gt;
* uARM interfaccia&lt;br /&gt;
* uARM esecuzione di programmi e debug&lt;br /&gt;
* cross-compilazione per uARM&lt;br /&gt;
* la libreria libuarm&lt;br /&gt;
* analisi della funzione tprint (polling di output)&lt;br /&gt;
* debug tramite variabili e funzioni dummy&lt;br /&gt;
&lt;br /&gt;
* _start per ARM:&lt;br /&gt;
&amp;lt;source lang=asm&amp;gt;&lt;br /&gt;
.global _start&lt;br /&gt;
_start:&lt;br /&gt;
  sub     lr, lr, lr&lt;br /&gt;
  ldr     r0, [sp]&lt;br /&gt;
  add     r1, sp, #4&lt;br /&gt;
  bl main&lt;br /&gt;
  mov R7, #1&lt;br /&gt;
  swi 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ripasso di architettura ===&lt;br /&gt;
* la pipeline del processore&lt;br /&gt;
* Struttura del processore: Control Path, Data Path&lt;br /&gt;
* CISC vs RISC&lt;br /&gt;
&lt;br /&gt;
== Lezione del 4 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== argomenti da trattare/rivedere ===&lt;br /&gt;
* Sistemi Real Time&lt;br /&gt;
* I sistemi operativi per sistemi multiprocessore (SMP e non SMP)&lt;br /&gt;
* gestione nidificata degli Interrupt nidificati&lt;br /&gt;
* gli stack del kernel&lt;br /&gt;
* programmed I/O (polling) vs interrupt&lt;br /&gt;
* dispositivi &amp;quot;memory mapped&amp;quot; e non (come si interfacciano i dispositivi)&lt;br /&gt;
* componenti del SO: gestore processi, gestore memoria primaria, gestione memoria secondaria, file system, I/O, protezione, networking&lt;br /&gt;
* compilazione del kernel&lt;br /&gt;
&lt;br /&gt;
== Lezione del 11 novembre 2015 ==&lt;br /&gt;
* Awsome Lecture by Prof. Goldweber and Prof. Davoli!&lt;br /&gt;
&lt;br /&gt;
== Lezione del 18 novembre 2015 ==&lt;br /&gt;
* Scheduling / Schedulers&lt;br /&gt;
* Memory Management / Virtual Memory / Swapping Area&lt;br /&gt;
* Replacement Algorithm's&lt;br /&gt;
* uARM further examination&lt;br /&gt;
* threads in C and how to use them...&lt;br /&gt;
&lt;br /&gt;
== Lezione del 25 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 2 dicembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 16 dicembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== CAPITOLI del corso da svolgere ==&lt;br /&gt;
* Sruttura del SO&lt;br /&gt;
* Scheduler&lt;br /&gt;
* Gestione risorse (deadlock)&lt;br /&gt;
* Gestione memoria centrale (paginazione, segmentazione, memoria virtuale)&lt;br /&gt;
* Gestione memoria secondaria&lt;br /&gt;
* File system&lt;br /&gt;
* Sicurezza&lt;br /&gt;
&lt;br /&gt;
* Strumenti per lo sviluppo, la portabilita' e la collaborazione (make, autotool, versioning)&lt;br /&gt;
* System Call POSIX&lt;br /&gt;
* Principali librerie (LibC, Pthreads, Socket...)&lt;br /&gt;
* Bash (uso avanzato e scripting)&lt;br /&gt;
* Python&lt;br /&gt;
&lt;br /&gt;
* uMPS&lt;br /&gt;
* progetto prima fase&lt;br /&gt;
* progetto seconda fase&lt;br /&gt;
&lt;br /&gt;
== Argomenti proposti dagli studenti ==&lt;br /&gt;
* System Call's e/o esempi di uso&lt;br /&gt;
* Instruction Set &amp;amp; Assembly&lt;br /&gt;
* Memoria Centrale, Indirizzamento, Memoria Virtuale, Swapping, Traduzione Indirizzi logici in indirizzi fisici (metodi e circuiteria usata)&lt;br /&gt;
* Scheduling dei processi e tipi di Scheduler&lt;br /&gt;
* Linguaggi nuovi (esempio: Python)&lt;br /&gt;
* Scripting &lt;br /&gt;
* Tool di programmazione (make, automake ecc)&lt;br /&gt;
* Differenze Linker, Loader ecc&lt;br /&gt;
* Crittografia e uso nei sistemi operativi&lt;br /&gt;
* Extreme C (esempi di uso (DIsuso) del linguaggio C.&lt;/div&gt;</summary>
		<author><name>Edux</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1265</id>
		<title>Lezioni Anno Accademico 2015/16</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1265"/>
		<updated>2015-11-11T19:40:16Z</updated>

		<summary type="html">&lt;p&gt;Edux: /* Lezione del 11 novembre 2015 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''scrivete qui idee, riassunti dei concetti espressi, commenti approfondimenti sulle lezioni.''&lt;br /&gt;
&lt;br /&gt;
== Lezione del 22 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Introduzione al corso di Sistemi Operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Hardware vs. Software&lt;br /&gt;
* Informatica&lt;br /&gt;
* Scienza vs. Tecnologia&lt;br /&gt;
* Informazione (vs. Dato)&lt;br /&gt;
* Linguaggio&lt;br /&gt;
* Elaborazione-Memorizzazione-Comunicazione&lt;br /&gt;
* Algoritmo vs. Programma&lt;br /&gt;
* Hacker/Hacking (vs. Cracker)&lt;br /&gt;
* Maker&lt;br /&gt;
* Analogico-Digitale&lt;br /&gt;
&lt;br /&gt;
== Lezione del 23 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Storia dei Sistemi.... anche operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Architettura a livelli (Layer)&lt;br /&gt;
* SO come livello di astrazione (semplificazione, portabilita')&lt;br /&gt;
* SO come gestore di risorse (controllo, sicurezza, continuita' di servizio)&lt;br /&gt;
* Storia le generazioni: ingranaggi-&amp;gt;Valvole termoioniche-&amp;gt;Transistor-&amp;gt;Circuiti integrati-&amp;gt;Microprocessori&lt;br /&gt;
* I &amp;quot;ruoli&amp;quot; dell'informatica: ideatore, costruttore, programmatore, operatore, utente&lt;br /&gt;
* Multitasking (perche' e' possibile? perche' e quando e' necessario?)&lt;br /&gt;
* Interattivita'&lt;br /&gt;
* TIme sharing&lt;br /&gt;
* Multiuser (multiutente)&lt;br /&gt;
* UNIX&lt;br /&gt;
* Personal Computer (e i sistemi operativi)&lt;br /&gt;
&lt;br /&gt;
== Lezione del 30 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Il materiale per poter replicare l'esperimento sulla portabilit&amp;amp;agrave; dei compilatori &amp;amp;egrave; [http://www.cs.unibo.it/~renzo/so/tools/portability3.tgz qui]. &lt;br /&gt;
&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:38, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Per gli esperimenti con le macchine virtuali:&lt;br /&gt;
* il file debian_wheezy_i386_desktop.qcow2 l'ho preso da qui: https://people.debian.org/~aurel32/qemu/i386/.&lt;br /&gt;
il comando per kvm &amp;amp;egrave;:&lt;br /&gt;
  kvm -m 1G -drive file=$(echo debian_wheezy*.qcow2),cache=writeback -monitor stdio&lt;br /&gt;
* chi volesse provare debian hurd pu&amp;amp;ograve; scaricare l'immagine: debian-hurd-20150424.img da qui: https://www.debian.org/ports/hurd/hurd-install. Nella pagina &amp;amp;egrave; anche indicato come lanciare kvm (io aggiungerei -monitor stdio in fondo per avere la console di qemu-kvm).&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:47, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Conoscenze a breve, medio e lungo termine dell'informatica&lt;br /&gt;
* Linguaggio dell'Hardware&lt;br /&gt;
* X ''Virtuale'' (dove X rappresenta qualsiasi cosa)&lt;br /&gt;
* Emulazione/Simulazione&lt;br /&gt;
* virtualizzazione senza emulazione&lt;br /&gt;
* Cosa e', cosa non e' e dov'e' (realmente) il sistema operativo&lt;br /&gt;
* macchine virtuali&lt;br /&gt;
* Distribuzione e Ambiente Operativo&lt;br /&gt;
* [http://www.gnu.org/philosophy/open-source-misses-the-point.it.html Licenze: differenza fra Software Libero e Open Source]&lt;br /&gt;
&lt;br /&gt;
== Lezione del 07 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Ricordo che &amp;amp;egrave; in sospeso una domanda: [[&amp;quot;l'arduino ha un sistema operativo?&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Concetti: ripasso linguaggio C ===&lt;br /&gt;
* Compilatori vs. Interpreti&lt;br /&gt;
* Programmi vs. Script&lt;br /&gt;
* Le classi di linguaggi di programmazione&lt;br /&gt;
* Il &amp;quot;livello&amp;quot; dei linguaggi di programmazione&lt;br /&gt;
* Cosa e', cosa non e' il Linguaggio C&lt;br /&gt;
* [[Genesi del linguaggio C: intenzioni degli autori]]&lt;br /&gt;
* Le '''vere''' novita' del linguaggio C&lt;br /&gt;
&lt;br /&gt;
=== concetti: ripasso architettura ===&lt;br /&gt;
* Modelli architetturali: von Neumann vs. Harvard&lt;br /&gt;
* Gerarchia di Memoria&lt;br /&gt;
* Cache&lt;br /&gt;
* Indirizzi Logici, Indirizzi Fisici&lt;br /&gt;
* Rilocazione&lt;br /&gt;
&lt;br /&gt;
=== strumenti utilizzati durante la lezione ===&lt;br /&gt;
* Arduino, hardware e sistema di sviluppo. Nelle distribuzioni debian-like c'e' il pacchetto denominato &amp;quot;Arduino&amp;quot;&lt;br /&gt;
  apt-get install arduino&lt;br /&gt;
* Una scheda con il solo microcontrollore atmega (nella scheda in aula era un atmega168). Ho tratto ispirazione da [http://www.tuxgraphics.org/electronics/200411/article352.shtml questo articolo di tuxgraphics]. Non e' necessario fare tutte le fasi iniziali di &amp;quot;software installation&amp;quot; perche' sono tutti software pacchettizzati debian. Se avete installato il pacchetto arduino tutti i cross compiler e lo strumento per caricare il firmware li trovate gia' disponibili. &lt;br /&gt;
* Il programma C senza librerie e' il seguente:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef unsigned long uint32_t;&lt;br /&gt;
typedef unsigned short uint16_t;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  *((volatile uint8_t *) 0x2B) = 0x00;&lt;br /&gt;
  *((volatile uint8_t *) 0x2A) = 0xFF;&lt;br /&gt;
&lt;br /&gt;
  while (1) {&lt;br /&gt;
    volatile uint16_t t;&lt;br /&gt;
    for (t=0; t&amp;lt;10000; t++)&lt;br /&gt;
      ;&lt;br /&gt;
    *((volatile uint8_t *) 0x2B) += 1;&lt;br /&gt;
  }&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
per vedere il led lampeggiare occorre collegarlo (con la resistenza di limitazione della corrente) al pin 2 (porta D0) poi al pin 3 (porta D1) etc... (spostate il circuito disegnato alla porta 28 nella pagina sopra citata di tuxgraphics ai pin 2, 3 etc). NB: se volete collegare le porte GPIO o i2c di arduino o di un atmega ad un raspberry PI controllate che la tensione di lavoro dell'arduino/atmega sia 3.3v e NON 5v.&lt;br /&gt;
&lt;br /&gt;
== Lezione del 14 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. [[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 15:43, 10 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Linguaggio C ===&lt;br /&gt;
* Preprocessori: inclusione, compilazione condizionale macro&lt;br /&gt;
* Macro vs. funzioni inline&lt;br /&gt;
* Static vs. Extern&lt;br /&gt;
* Static vs. Auto&lt;br /&gt;
* Register&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Bus Indirizzi, Bus Dati, Gerarchie di Bus&lt;br /&gt;
* Interrupt (e Trap)&lt;br /&gt;
* Mascheramento degli Interrupt&lt;br /&gt;
* Gestione nidificata degli interrupt&lt;br /&gt;
* DMA (Direct Memory Access)&lt;br /&gt;
&lt;br /&gt;
=== temi accennati: ===&lt;br /&gt;
* [http://mellotanica.github.io/uARM/ uarm]: l'emulatore per il progetto&lt;br /&gt;
&lt;br /&gt;
== Lezione del 21 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
(Correzione) Compiti a casa:&lt;br /&gt;
* Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. Sono da provare e commentare. E' possibile proporne di nuovi.&lt;br /&gt;
* Provare a installare [http://mellotanica.github.io/uARM/ uarm: l'emulatore per il progetto] nei propri sistemi.&lt;br /&gt;
&lt;br /&gt;
=== argomenti trattati ===&lt;br /&gt;
* vettori, strutture e puntatori in C&lt;br /&gt;
* il debugging: gdb&lt;br /&gt;
* la funzione _start nei sistemi UNIX like.&lt;br /&gt;
&lt;br /&gt;
Ecco l'esempio di funzione start minimale:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=asm&amp;gt;&lt;br /&gt;
.text&lt;br /&gt;
.global _start&lt;br /&gt;
&lt;br /&gt;
_start:&lt;br /&gt;
  xor %rbp, %rbp&lt;br /&gt;
  popq %rdi&lt;br /&gt;
  movq %rsp, %rsi&lt;br /&gt;
  andq $~15, %rsp&lt;br /&gt;
  call main&lt;br /&gt;
  //nuova interfaccia syscall&lt;br /&gt;
  mov %rax, %rdi&lt;br /&gt;
  mov $231, %rax&lt;br /&gt;
  syscall&lt;br /&gt;
  //vecchia interfaccia syscall&lt;br /&gt;
  //mov %eax, %ebx&lt;br /&gt;
  //mov $252, %eax&lt;br /&gt;
  //int $0x80&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E il sorgente C usato nell'esperimento di debugging:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
struct test {&lt;br /&gt;
  int a[16];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct test x={{42,73,51}};&lt;br /&gt;
&lt;br /&gt;
int f(struct test t) {&lt;br /&gt;
  return t.a[0]+t.a[1]+t.a[2];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  volatile int sum=f(x);&lt;br /&gt;
  return argc;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lezione del 28 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== argomenti trattati ===&lt;br /&gt;
* uARM interfaccia&lt;br /&gt;
* uARM esecuzione di programmi e debug&lt;br /&gt;
* cross-compilazione per uARM&lt;br /&gt;
* la libreria libuarm&lt;br /&gt;
* analisi della funzione tprint (polling di output)&lt;br /&gt;
* debug tramite variabili e funzioni dummy&lt;br /&gt;
&lt;br /&gt;
* _start per ARM:&lt;br /&gt;
&amp;lt;source lang=asm&amp;gt;&lt;br /&gt;
.global _start&lt;br /&gt;
_start:&lt;br /&gt;
  sub     lr, lr, lr&lt;br /&gt;
  ldr     r0, [sp]&lt;br /&gt;
  add     r1, sp, #4&lt;br /&gt;
  bl main&lt;br /&gt;
  mov R7, #1&lt;br /&gt;
  swi 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ripasso di architettura ===&lt;br /&gt;
* la pipeline del processore&lt;br /&gt;
* Struttura del processore: Control Path, Data Path&lt;br /&gt;
* CISC vs RISC&lt;br /&gt;
&lt;br /&gt;
== Lezione del 4 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== argomenti da trattare/rivedere ===&lt;br /&gt;
* Sistemi Real Time&lt;br /&gt;
* I sistemi operativi per sistemi multiprocessore (SMP e non SMP)&lt;br /&gt;
* gestione nidificata degli Interrupt nidificati&lt;br /&gt;
* gli stack del kernel&lt;br /&gt;
* programmed I/O (polling) vs interrupt&lt;br /&gt;
* dispositivi &amp;quot;memory mapped&amp;quot; e non (come si interfacciano i dispositivi)&lt;br /&gt;
* componenti del SO: gestore processi, gestore memoria primaria, gestione memoria secondaria, file system, I/O, protezione, networking&lt;br /&gt;
* compilazione del kernel&lt;br /&gt;
&lt;br /&gt;
== Lezione del 11 novembre 2015 ==&lt;br /&gt;
* Awsome Lecture by Prof. Goldweber and Prof. Davoli!&lt;br /&gt;
&lt;br /&gt;
== Lezione del 18 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 25 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 2 dicembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 16 dicembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== CAPITOLI del corso da svolgere ==&lt;br /&gt;
* Sruttura del SO&lt;br /&gt;
* Scheduler&lt;br /&gt;
* Gestione risorse (deadlock)&lt;br /&gt;
* Gestione memoria centrale (paginazione, segmentazione, memoria virtuale)&lt;br /&gt;
* Gestione memoria secondaria&lt;br /&gt;
* File system&lt;br /&gt;
* Sicurezza&lt;br /&gt;
&lt;br /&gt;
* Strumenti per lo sviluppo, la portabilita' e la collaborazione (make, autotool, versioning)&lt;br /&gt;
* System Call POSIX&lt;br /&gt;
* Principali librerie (LibC, Pthreads, Socket...)&lt;br /&gt;
* Bash (uso avanzato e scripting)&lt;br /&gt;
* Python&lt;br /&gt;
&lt;br /&gt;
* uMPS&lt;br /&gt;
* progetto prima fase&lt;br /&gt;
* progetto seconda fase&lt;br /&gt;
&lt;br /&gt;
== Argomenti proposti dagli studenti ==&lt;br /&gt;
* System Call's e/o esempi di uso&lt;br /&gt;
* Instruction Set &amp;amp; Assembly&lt;br /&gt;
* Memoria Centrale, Indirizzamento, Memoria Virtuale, Swapping, Traduzione Indirizzi logici in indirizzi fisici (metodi e circuiteria usata)&lt;br /&gt;
* Scheduling dei processi e tipi di Scheduler&lt;br /&gt;
* Linguaggi nuovi (esempio: Python)&lt;br /&gt;
* Scripting &lt;br /&gt;
* Tool di programmazione (make, automake ecc)&lt;br /&gt;
* Differenze Linker, Loader ecc&lt;br /&gt;
* Crittografia e uso nei sistemi operativi&lt;br /&gt;
* Extreme C (esempi di uso (DIsuso) del linguaggio C.&lt;/div&gt;</summary>
		<author><name>Edux</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1264</id>
		<title>Lezioni Anno Accademico 2015/16</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1264"/>
		<updated>2015-11-11T19:39:20Z</updated>

		<summary type="html">&lt;p&gt;Edux: /* Lezione del 11 novembre 2015 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''scrivete qui idee, riassunti dei concetti espressi, commenti approfondimenti sulle lezioni.''&lt;br /&gt;
&lt;br /&gt;
== Lezione del 22 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Introduzione al corso di Sistemi Operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Hardware vs. Software&lt;br /&gt;
* Informatica&lt;br /&gt;
* Scienza vs. Tecnologia&lt;br /&gt;
* Informazione (vs. Dato)&lt;br /&gt;
* Linguaggio&lt;br /&gt;
* Elaborazione-Memorizzazione-Comunicazione&lt;br /&gt;
* Algoritmo vs. Programma&lt;br /&gt;
* Hacker/Hacking (vs. Cracker)&lt;br /&gt;
* Maker&lt;br /&gt;
* Analogico-Digitale&lt;br /&gt;
&lt;br /&gt;
== Lezione del 23 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Storia dei Sistemi.... anche operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Architettura a livelli (Layer)&lt;br /&gt;
* SO come livello di astrazione (semplificazione, portabilita')&lt;br /&gt;
* SO come gestore di risorse (controllo, sicurezza, continuita' di servizio)&lt;br /&gt;
* Storia le generazioni: ingranaggi-&amp;gt;Valvole termoioniche-&amp;gt;Transistor-&amp;gt;Circuiti integrati-&amp;gt;Microprocessori&lt;br /&gt;
* I &amp;quot;ruoli&amp;quot; dell'informatica: ideatore, costruttore, programmatore, operatore, utente&lt;br /&gt;
* Multitasking (perche' e' possibile? perche' e quando e' necessario?)&lt;br /&gt;
* Interattivita'&lt;br /&gt;
* TIme sharing&lt;br /&gt;
* Multiuser (multiutente)&lt;br /&gt;
* UNIX&lt;br /&gt;
* Personal Computer (e i sistemi operativi)&lt;br /&gt;
&lt;br /&gt;
== Lezione del 30 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Il materiale per poter replicare l'esperimento sulla portabilit&amp;amp;agrave; dei compilatori &amp;amp;egrave; [http://www.cs.unibo.it/~renzo/so/tools/portability3.tgz qui]. &lt;br /&gt;
&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:38, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Per gli esperimenti con le macchine virtuali:&lt;br /&gt;
* il file debian_wheezy_i386_desktop.qcow2 l'ho preso da qui: https://people.debian.org/~aurel32/qemu/i386/.&lt;br /&gt;
il comando per kvm &amp;amp;egrave;:&lt;br /&gt;
  kvm -m 1G -drive file=$(echo debian_wheezy*.qcow2),cache=writeback -monitor stdio&lt;br /&gt;
* chi volesse provare debian hurd pu&amp;amp;ograve; scaricare l'immagine: debian-hurd-20150424.img da qui: https://www.debian.org/ports/hurd/hurd-install. Nella pagina &amp;amp;egrave; anche indicato come lanciare kvm (io aggiungerei -monitor stdio in fondo per avere la console di qemu-kvm).&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:47, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Conoscenze a breve, medio e lungo termine dell'informatica&lt;br /&gt;
* Linguaggio dell'Hardware&lt;br /&gt;
* X ''Virtuale'' (dove X rappresenta qualsiasi cosa)&lt;br /&gt;
* Emulazione/Simulazione&lt;br /&gt;
* virtualizzazione senza emulazione&lt;br /&gt;
* Cosa e', cosa non e' e dov'e' (realmente) il sistema operativo&lt;br /&gt;
* macchine virtuali&lt;br /&gt;
* Distribuzione e Ambiente Operativo&lt;br /&gt;
* [http://www.gnu.org/philosophy/open-source-misses-the-point.it.html Licenze: differenza fra Software Libero e Open Source]&lt;br /&gt;
&lt;br /&gt;
== Lezione del 07 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Ricordo che &amp;amp;egrave; in sospeso una domanda: [[&amp;quot;l'arduino ha un sistema operativo?&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Concetti: ripasso linguaggio C ===&lt;br /&gt;
* Compilatori vs. Interpreti&lt;br /&gt;
* Programmi vs. Script&lt;br /&gt;
* Le classi di linguaggi di programmazione&lt;br /&gt;
* Il &amp;quot;livello&amp;quot; dei linguaggi di programmazione&lt;br /&gt;
* Cosa e', cosa non e' il Linguaggio C&lt;br /&gt;
* [[Genesi del linguaggio C: intenzioni degli autori]]&lt;br /&gt;
* Le '''vere''' novita' del linguaggio C&lt;br /&gt;
&lt;br /&gt;
=== concetti: ripasso architettura ===&lt;br /&gt;
* Modelli architetturali: von Neumann vs. Harvard&lt;br /&gt;
* Gerarchia di Memoria&lt;br /&gt;
* Cache&lt;br /&gt;
* Indirizzi Logici, Indirizzi Fisici&lt;br /&gt;
* Rilocazione&lt;br /&gt;
&lt;br /&gt;
=== strumenti utilizzati durante la lezione ===&lt;br /&gt;
* Arduino, hardware e sistema di sviluppo. Nelle distribuzioni debian-like c'e' il pacchetto denominato &amp;quot;Arduino&amp;quot;&lt;br /&gt;
  apt-get install arduino&lt;br /&gt;
* Una scheda con il solo microcontrollore atmega (nella scheda in aula era un atmega168). Ho tratto ispirazione da [http://www.tuxgraphics.org/electronics/200411/article352.shtml questo articolo di tuxgraphics]. Non e' necessario fare tutte le fasi iniziali di &amp;quot;software installation&amp;quot; perche' sono tutti software pacchettizzati debian. Se avete installato il pacchetto arduino tutti i cross compiler e lo strumento per caricare il firmware li trovate gia' disponibili. &lt;br /&gt;
* Il programma C senza librerie e' il seguente:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef unsigned long uint32_t;&lt;br /&gt;
typedef unsigned short uint16_t;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  *((volatile uint8_t *) 0x2B) = 0x00;&lt;br /&gt;
  *((volatile uint8_t *) 0x2A) = 0xFF;&lt;br /&gt;
&lt;br /&gt;
  while (1) {&lt;br /&gt;
    volatile uint16_t t;&lt;br /&gt;
    for (t=0; t&amp;lt;10000; t++)&lt;br /&gt;
      ;&lt;br /&gt;
    *((volatile uint8_t *) 0x2B) += 1;&lt;br /&gt;
  }&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
per vedere il led lampeggiare occorre collegarlo (con la resistenza di limitazione della corrente) al pin 2 (porta D0) poi al pin 3 (porta D1) etc... (spostate il circuito disegnato alla porta 28 nella pagina sopra citata di tuxgraphics ai pin 2, 3 etc). NB: se volete collegare le porte GPIO o i2c di arduino o di un atmega ad un raspberry PI controllate che la tensione di lavoro dell'arduino/atmega sia 3.3v e NON 5v.&lt;br /&gt;
&lt;br /&gt;
== Lezione del 14 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. [[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 15:43, 10 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Linguaggio C ===&lt;br /&gt;
* Preprocessori: inclusione, compilazione condizionale macro&lt;br /&gt;
* Macro vs. funzioni inline&lt;br /&gt;
* Static vs. Extern&lt;br /&gt;
* Static vs. Auto&lt;br /&gt;
* Register&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Bus Indirizzi, Bus Dati, Gerarchie di Bus&lt;br /&gt;
* Interrupt (e Trap)&lt;br /&gt;
* Mascheramento degli Interrupt&lt;br /&gt;
* Gestione nidificata degli interrupt&lt;br /&gt;
* DMA (Direct Memory Access)&lt;br /&gt;
&lt;br /&gt;
=== temi accennati: ===&lt;br /&gt;
* [http://mellotanica.github.io/uARM/ uarm]: l'emulatore per il progetto&lt;br /&gt;
&lt;br /&gt;
== Lezione del 21 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
(Correzione) Compiti a casa:&lt;br /&gt;
* Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. Sono da provare e commentare. E' possibile proporne di nuovi.&lt;br /&gt;
* Provare a installare [http://mellotanica.github.io/uARM/ uarm: l'emulatore per il progetto] nei propri sistemi.&lt;br /&gt;
&lt;br /&gt;
=== argomenti trattati ===&lt;br /&gt;
* vettori, strutture e puntatori in C&lt;br /&gt;
* il debugging: gdb&lt;br /&gt;
* la funzione _start nei sistemi UNIX like.&lt;br /&gt;
&lt;br /&gt;
Ecco l'esempio di funzione start minimale:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=asm&amp;gt;&lt;br /&gt;
.text&lt;br /&gt;
.global _start&lt;br /&gt;
&lt;br /&gt;
_start:&lt;br /&gt;
  xor %rbp, %rbp&lt;br /&gt;
  popq %rdi&lt;br /&gt;
  movq %rsp, %rsi&lt;br /&gt;
  andq $~15, %rsp&lt;br /&gt;
  call main&lt;br /&gt;
  //nuova interfaccia syscall&lt;br /&gt;
  mov %rax, %rdi&lt;br /&gt;
  mov $231, %rax&lt;br /&gt;
  syscall&lt;br /&gt;
  //vecchia interfaccia syscall&lt;br /&gt;
  //mov %eax, %ebx&lt;br /&gt;
  //mov $252, %eax&lt;br /&gt;
  //int $0x80&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E il sorgente C usato nell'esperimento di debugging:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
struct test {&lt;br /&gt;
  int a[16];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct test x={{42,73,51}};&lt;br /&gt;
&lt;br /&gt;
int f(struct test t) {&lt;br /&gt;
  return t.a[0]+t.a[1]+t.a[2];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
  volatile int sum=f(x);&lt;br /&gt;
  return argc;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lezione del 28 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== argomenti trattati ===&lt;br /&gt;
* uARM interfaccia&lt;br /&gt;
* uARM esecuzione di programmi e debug&lt;br /&gt;
* cross-compilazione per uARM&lt;br /&gt;
* la libreria libuarm&lt;br /&gt;
* analisi della funzione tprint (polling di output)&lt;br /&gt;
* debug tramite variabili e funzioni dummy&lt;br /&gt;
&lt;br /&gt;
* _start per ARM:&lt;br /&gt;
&amp;lt;source lang=asm&amp;gt;&lt;br /&gt;
.global _start&lt;br /&gt;
_start:&lt;br /&gt;
  sub     lr, lr, lr&lt;br /&gt;
  ldr     r0, [sp]&lt;br /&gt;
  add     r1, sp, #4&lt;br /&gt;
  bl main&lt;br /&gt;
  mov R7, #1&lt;br /&gt;
  swi 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ripasso di architettura ===&lt;br /&gt;
* la pipeline del processore&lt;br /&gt;
* Struttura del processore: Control Path, Data Path&lt;br /&gt;
* CISC vs RISC&lt;br /&gt;
&lt;br /&gt;
== Lezione del 4 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== argomenti da trattare/rivedere ===&lt;br /&gt;
* Sistemi Real Time&lt;br /&gt;
* I sistemi operativi per sistemi multiprocessore (SMP e non SMP)&lt;br /&gt;
* gestione nidificata degli Interrupt nidificati&lt;br /&gt;
* gli stack del kernel&lt;br /&gt;
* programmed I/O (polling) vs interrupt&lt;br /&gt;
* dispositivi &amp;quot;memory mapped&amp;quot; e non (come si interfacciano i dispositivi)&lt;br /&gt;
* componenti del SO: gestore processi, gestore memoria primaria, gestione memoria secondaria, file system, I/O, protezione, networking&lt;br /&gt;
* compilazione del kernel&lt;br /&gt;
&lt;br /&gt;
== Lezione del 11 novembre 2015 ==&lt;br /&gt;
* Scheduling / Schedulers&lt;br /&gt;
* Memory Management / Virtual Memory / Swapping Area&lt;br /&gt;
* Replacement Algorithm's&lt;br /&gt;
* uARM further examination&lt;br /&gt;
* threads in C and how to use them...&lt;br /&gt;
&lt;br /&gt;
== Lezione del 18 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 25 novembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 2 dicembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 16 dicembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
== CAPITOLI del corso da svolgere ==&lt;br /&gt;
* Sruttura del SO&lt;br /&gt;
* Scheduler&lt;br /&gt;
* Gestione risorse (deadlock)&lt;br /&gt;
* Gestione memoria centrale (paginazione, segmentazione, memoria virtuale)&lt;br /&gt;
* Gestione memoria secondaria&lt;br /&gt;
* File system&lt;br /&gt;
* Sicurezza&lt;br /&gt;
&lt;br /&gt;
* Strumenti per lo sviluppo, la portabilita' e la collaborazione (make, autotool, versioning)&lt;br /&gt;
* System Call POSIX&lt;br /&gt;
* Principali librerie (LibC, Pthreads, Socket...)&lt;br /&gt;
* Bash (uso avanzato e scripting)&lt;br /&gt;
* Python&lt;br /&gt;
&lt;br /&gt;
* uMPS&lt;br /&gt;
* progetto prima fase&lt;br /&gt;
* progetto seconda fase&lt;br /&gt;
&lt;br /&gt;
== Argomenti proposti dagli studenti ==&lt;br /&gt;
* System Call's e/o esempi di uso&lt;br /&gt;
* Instruction Set &amp;amp; Assembly&lt;br /&gt;
* Memoria Centrale, Indirizzamento, Memoria Virtuale, Swapping, Traduzione Indirizzi logici in indirizzi fisici (metodi e circuiteria usata)&lt;br /&gt;
* Scheduling dei processi e tipi di Scheduler&lt;br /&gt;
* Linguaggi nuovi (esempio: Python)&lt;br /&gt;
* Scripting &lt;br /&gt;
* Tool di programmazione (make, automake ecc)&lt;br /&gt;
* Differenze Linker, Loader ecc&lt;br /&gt;
* Crittografia e uso nei sistemi operativi&lt;br /&gt;
* Extreme C (esempi di uso (DIsuso) del linguaggio C.&lt;/div&gt;</summary>
		<author><name>Edux</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1188</id>
		<title>Lezioni Anno Accademico 2015/16</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1188"/>
		<updated>2015-10-15T10:01:04Z</updated>

		<summary type="html">&lt;p&gt;Edux: /* argomenti da trattare: ripasso Architettura degli Elaboratori */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''scrivete qui idee, riassunti dei concetti espressi, commenti approfondimenti sulle lezioni.''&lt;br /&gt;
&lt;br /&gt;
== Lezione del 22 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Introduzione al corso di Sistemi Operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Hardware vs. Software&lt;br /&gt;
* Informatica&lt;br /&gt;
* Scienza vs. Tecnologia&lt;br /&gt;
* Informazione (vs. Dato)&lt;br /&gt;
* Linguaggio&lt;br /&gt;
* Elaborazione-Memorizzazione-Comunicazione&lt;br /&gt;
* Algoritmo vs. Programma&lt;br /&gt;
* Hacker/Hacking (vs. Cracker)&lt;br /&gt;
* Maker&lt;br /&gt;
* Analogico-Digitale&lt;br /&gt;
&lt;br /&gt;
== Lezione del 23 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Storia dei Sistemi.... anche operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Architettura a livelli (Layer)&lt;br /&gt;
* SO come livello di astrazione (semplificazione, portabilita')&lt;br /&gt;
* SO come gestore di risorse (controllo, sicurezza, continuita' di servizio)&lt;br /&gt;
* Storia le generazioni: ingranaggi-&amp;gt;Valvole termoioniche-&amp;gt;Transistor-&amp;gt;Circuiti integrati-&amp;gt;Microprocessori&lt;br /&gt;
* I &amp;quot;ruoli&amp;quot; dell'informatica: ideatore, costruttore, programmatore, operatore, utente&lt;br /&gt;
* Multitasking (perche' e' possibile? perche' e quando e' necessario?)&lt;br /&gt;
* Interattivita'&lt;br /&gt;
* TIme sharing&lt;br /&gt;
* Multiuser (multiutente)&lt;br /&gt;
* UNIX&lt;br /&gt;
* Personal Computer (e i sistemi operativi)&lt;br /&gt;
&lt;br /&gt;
== Lezione del 30 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Il materiale per poter replicare l'esperimento sulla portabilit&amp;amp;agrave; dei compilatori &amp;amp;egrave; [http://www.cs.unibo.it/~renzo/so/tools/portability3.tgz qui]. &lt;br /&gt;
&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:38, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Per gli esperimenti con le macchine virtuali:&lt;br /&gt;
* il file debian_wheezy_i386_desktop.qcow2 l'ho preso da qui: https://people.debian.org/~aurel32/qemu/i386/.&lt;br /&gt;
il comando per kvm &amp;amp;egrave;:&lt;br /&gt;
  kvm -m 1G -drive file=$(echo debian_wheezy*.qcow2),cache=writeback -monitor stdio&lt;br /&gt;
* chi volesse provare debian hurd pu&amp;amp;ograve; scaricare l'immagine: debian-hurd-20150424.img da qui: https://www.debian.org/ports/hurd/hurd-install. Nella pagina &amp;amp;egrave; anche indicato come lanciare kvm (io aggiungerei -monitor stdio in fondo per avere la console di qemu-kvm).&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:47, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Conoscenze a breve, medio e lungo termine dell'informatica&lt;br /&gt;
* Linguaggio dell'Hardware&lt;br /&gt;
* X ''Virtuale'' (dove X rappresenta qualsiasi cosa)&lt;br /&gt;
* Emulazione/Simulazione&lt;br /&gt;
* virtualizzazione senza emulazione&lt;br /&gt;
* Cosa e', cosa non e' e dov'e' (realmente) il sistema operativo&lt;br /&gt;
* macchine virtuali&lt;br /&gt;
* Distribuzione e Ambiente Operativo&lt;br /&gt;
* [http://www.gnu.org/philosophy/open-source-misses-the-point.it.html Licenze: differenza fra Software Libero e Open Source]&lt;br /&gt;
&lt;br /&gt;
== Lezione del 07 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Ricordo che &amp;amp;egrave; in sospeso una domanda: [[&amp;quot;l'arduino ha un sistema operativo?&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Concetti: ripasso linguaggio C ===&lt;br /&gt;
* Compilatori vs. Interpreti&lt;br /&gt;
* Programmi vs. Script&lt;br /&gt;
* Le classi di linguaggi di programmazione&lt;br /&gt;
* Il &amp;quot;livello&amp;quot; dei linguaggi di programmazione&lt;br /&gt;
* Cosa e', cosa non e' il Linguaggio C&lt;br /&gt;
* [[Genesi del linguaggio C: intenzioni degli autori]]&lt;br /&gt;
* Le '''vere''' novita' del linguaggio C&lt;br /&gt;
&lt;br /&gt;
=== concetti: ripasso architettura ===&lt;br /&gt;
* Modelli architetturali: von Neumann vs. Harvard&lt;br /&gt;
* Gerarchia di Memoria&lt;br /&gt;
* Cache&lt;br /&gt;
* Indirizzi Logici, Indirizzi Fisici&lt;br /&gt;
* Rilocazione&lt;br /&gt;
&lt;br /&gt;
=== strumenti utilizzati durante la lezione ===&lt;br /&gt;
* Arduino, hardware e sistema di sviluppo. Nelle distribuzioni debian-like c'e' il pacchetto denominato &amp;quot;Arduino&amp;quot;&lt;br /&gt;
  apt-get install arduino&lt;br /&gt;
* Una scheda con il solo microcontrollore atmega (nella scheda in aula era un atmega168). Ho tratto ispirazione da [http://www.tuxgraphics.org/electronics/200411/article352.shtml questo articolo di tuxgraphics]. Non e' necessario fare tutte le fasi iniziali di &amp;quot;software installation&amp;quot; perche' sono tutti software pacchettizzati debian. Se avete installato il pacchetto arduino tutti i cross compiler e lo strumento per caricare il firmware li trovate gia' disponibili. &lt;br /&gt;
* Il programma C senza librerie e' il seguente:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef unsigned long uint32_t;&lt;br /&gt;
typedef unsigned short uint16_t;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  *((volatile uint8_t *) 0x2B) = 0x00;&lt;br /&gt;
  *((volatile uint8_t *) 0x2A) = 0xFF;&lt;br /&gt;
&lt;br /&gt;
  while (1) {&lt;br /&gt;
    volatile uint16_t t;&lt;br /&gt;
    for (t=0; t&amp;lt;10000; t++)&lt;br /&gt;
      ;&lt;br /&gt;
    *((volatile uint8_t *) 0x2B) += 1;&lt;br /&gt;
  }&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
per vedere il led lampeggiare occorre collegarlo (con la resistenza di limitazione della corrente) al pin 2 (porta D0) poi al pin 3 (porta D1) etc... (spostate il circuito disegnato alla porta 28 nella pagina sopra citata di tuxgraphics ai pin 2, 3 etc). NB: se volete collegare le porte GPIO o i2c di arduino o di un atmega ad un raspberry PI controllate che la tensione di lavoro dell'arduino/atmega sia 3.3v e NON 5v.&lt;br /&gt;
&lt;br /&gt;
== Lezione del 14 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. [[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 15:43, 10 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Linguaggio C ===&lt;br /&gt;
* Preprocessori: inclusione, compilazione condizionale macro&lt;br /&gt;
* Macro vs. funzioni inline&lt;br /&gt;
* Static vs. Extern&lt;br /&gt;
* Static vs. Auto&lt;br /&gt;
* Register&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Bus Indirizzi, Bus Dati, Gerarchie di Bus&lt;br /&gt;
* Interrupt (e Trap)&lt;br /&gt;
* Mascheramento degli Interrupt&lt;br /&gt;
* Gestione nidificata degli interrupt&lt;br /&gt;
* DMA (Direct Memory Access)&lt;br /&gt;
&lt;br /&gt;
=== temi accennati: ===&lt;br /&gt;
* [http://mellotanica.github.io/uARM/ uarm]: l'emulatore per il progetto&lt;br /&gt;
&lt;br /&gt;
== Lezione del 21 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Compiti a casa:&lt;br /&gt;
* Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. Sono da provare e commentare. E' possibile proporne di nuovi.&lt;br /&gt;
* Provare a installare [http://mellotanica.github.io/uARM/ uarm: l'emulatore per il progetto] nei propri sistemi.&lt;br /&gt;
&lt;br /&gt;
=== argomenti da trattare: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Struttura del processore: Control Path, Data Path&lt;br /&gt;
* CISC vs RISC&lt;br /&gt;
&lt;br /&gt;
=== altri argomenti da trattare ===&lt;br /&gt;
&lt;br /&gt;
== &lt;br /&gt;
* System Call's e/o esempi di uso&lt;br /&gt;
* Instruction Set &amp;amp; Assembly&lt;br /&gt;
* Memoria Centrale, Indirizzamento, Memoria Virtuale, Swapping, Traduzione Indirizzi logici in indirizzi fisici (metodi e circuiteria usata)&lt;br /&gt;
* Scheduling dei processi e tipi di Scheduler&lt;br /&gt;
* Linguaggi nuovi (esempio: Python)&lt;br /&gt;
* Scripting &lt;br /&gt;
* Tool di programmazione (make, automake ecc)&lt;br /&gt;
* Differenze Linker, Loader ecc&lt;br /&gt;
* Crittografia e uso nei sistemi operativi&lt;br /&gt;
* Extreme C (esempi di uso (DIsuso) del linguaggio C. ==&lt;br /&gt;
&lt;br /&gt;
== Lezione del 28 ottobre 2015 ==&lt;/div&gt;</summary>
		<author><name>Edux</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1187</id>
		<title>Lezioni Anno Accademico 2015/16</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Lezioni_Anno_Accademico_2015/16&amp;diff=1187"/>
		<updated>2015-10-15T09:55:24Z</updated>

		<summary type="html">&lt;p&gt;Edux: /* altri argomenti da trattare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''scrivete qui idee, riassunti dei concetti espressi, commenti approfondimenti sulle lezioni.''&lt;br /&gt;
&lt;br /&gt;
== Lezione del 22 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Introduzione al corso di Sistemi Operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Hardware vs. Software&lt;br /&gt;
* Informatica&lt;br /&gt;
* Scienza vs. Tecnologia&lt;br /&gt;
* Informazione (vs. Dato)&lt;br /&gt;
* Linguaggio&lt;br /&gt;
* Elaborazione-Memorizzazione-Comunicazione&lt;br /&gt;
* Algoritmo vs. Programma&lt;br /&gt;
* Hacker/Hacking (vs. Cracker)&lt;br /&gt;
* Maker&lt;br /&gt;
* Analogico-Digitale&lt;br /&gt;
&lt;br /&gt;
== Lezione del 23 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Storia dei Sistemi.... anche operativi.&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Architettura a livelli (Layer)&lt;br /&gt;
* SO come livello di astrazione (semplificazione, portabilita')&lt;br /&gt;
* SO come gestore di risorse (controllo, sicurezza, continuita' di servizio)&lt;br /&gt;
* Storia le generazioni: ingranaggi-&amp;gt;Valvole termoioniche-&amp;gt;Transistor-&amp;gt;Circuiti integrati-&amp;gt;Microprocessori&lt;br /&gt;
* I &amp;quot;ruoli&amp;quot; dell'informatica: ideatore, costruttore, programmatore, operatore, utente&lt;br /&gt;
* Multitasking (perche' e' possibile? perche' e quando e' necessario?)&lt;br /&gt;
* Interattivita'&lt;br /&gt;
* TIme sharing&lt;br /&gt;
* Multiuser (multiutente)&lt;br /&gt;
* UNIX&lt;br /&gt;
* Personal Computer (e i sistemi operativi)&lt;br /&gt;
&lt;br /&gt;
== Lezione del 30 settembre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Il materiale per poter replicare l'esperimento sulla portabilit&amp;amp;agrave; dei compilatori &amp;amp;egrave; [http://www.cs.unibo.it/~renzo/so/tools/portability3.tgz qui]. &lt;br /&gt;
&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:38, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
Per gli esperimenti con le macchine virtuali:&lt;br /&gt;
* il file debian_wheezy_i386_desktop.qcow2 l'ho preso da qui: https://people.debian.org/~aurel32/qemu/i386/.&lt;br /&gt;
il comando per kvm &amp;amp;egrave;:&lt;br /&gt;
  kvm -m 1G -drive file=$(echo debian_wheezy*.qcow2),cache=writeback -monitor stdio&lt;br /&gt;
* chi volesse provare debian hurd pu&amp;amp;ograve; scaricare l'immagine: debian-hurd-20150424.img da qui: https://www.debian.org/ports/hurd/hurd-install. Nella pagina &amp;amp;egrave; anche indicato come lanciare kvm (io aggiungerei -monitor stdio in fondo per avere la console di qemu-kvm).&lt;br /&gt;
[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 09:47, 3 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== concetti ===&lt;br /&gt;
* Conoscenze a breve, medio e lungo termine dell'informatica&lt;br /&gt;
* Linguaggio dell'Hardware&lt;br /&gt;
* X ''Virtuale'' (dove X rappresenta qualsiasi cosa)&lt;br /&gt;
* Emulazione/Simulazione&lt;br /&gt;
* virtualizzazione senza emulazione&lt;br /&gt;
* Cosa e', cosa non e' e dov'e' (realmente) il sistema operativo&lt;br /&gt;
* macchine virtuali&lt;br /&gt;
* Distribuzione e Ambiente Operativo&lt;br /&gt;
* [http://www.gnu.org/philosophy/open-source-misses-the-point.it.html Licenze: differenza fra Software Libero e Open Source]&lt;br /&gt;
&lt;br /&gt;
== Lezione del 07 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Ricordo che &amp;amp;egrave; in sospeso una domanda: [[&amp;quot;l'arduino ha un sistema operativo?&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Concetti: ripasso linguaggio C ===&lt;br /&gt;
* Compilatori vs. Interpreti&lt;br /&gt;
* Programmi vs. Script&lt;br /&gt;
* Le classi di linguaggi di programmazione&lt;br /&gt;
* Il &amp;quot;livello&amp;quot; dei linguaggi di programmazione&lt;br /&gt;
* Cosa e', cosa non e' il Linguaggio C&lt;br /&gt;
* [[Genesi del linguaggio C: intenzioni degli autori]]&lt;br /&gt;
* Le '''vere''' novita' del linguaggio C&lt;br /&gt;
&lt;br /&gt;
=== concetti: ripasso architettura ===&lt;br /&gt;
* Modelli architetturali: von Neumann vs. Harvard&lt;br /&gt;
* Gerarchia di Memoria&lt;br /&gt;
* Cache&lt;br /&gt;
* Indirizzi Logici, Indirizzi Fisici&lt;br /&gt;
* Rilocazione&lt;br /&gt;
&lt;br /&gt;
=== strumenti utilizzati durante la lezione ===&lt;br /&gt;
* Arduino, hardware e sistema di sviluppo. Nelle distribuzioni debian-like c'e' il pacchetto denominato &amp;quot;Arduino&amp;quot;&lt;br /&gt;
  apt-get install arduino&lt;br /&gt;
* Una scheda con il solo microcontrollore atmega (nella scheda in aula era un atmega168). Ho tratto ispirazione da [http://www.tuxgraphics.org/electronics/200411/article352.shtml questo articolo di tuxgraphics]. Non e' necessario fare tutte le fasi iniziali di &amp;quot;software installation&amp;quot; perche' sono tutti software pacchettizzati debian. Se avete installato il pacchetto arduino tutti i cross compiler e lo strumento per caricare il firmware li trovate gia' disponibili. &lt;br /&gt;
* Il programma C senza librerie e' il seguente:&lt;br /&gt;
&amp;lt;source lang=C&amp;gt;&lt;br /&gt;
typedef unsigned char uint8_t;&lt;br /&gt;
typedef unsigned long uint32_t;&lt;br /&gt;
typedef unsigned short uint16_t;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  *((volatile uint8_t *) 0x2B) = 0x00;&lt;br /&gt;
  *((volatile uint8_t *) 0x2A) = 0xFF;&lt;br /&gt;
&lt;br /&gt;
  while (1) {&lt;br /&gt;
    volatile uint16_t t;&lt;br /&gt;
    for (t=0; t&amp;lt;10000; t++)&lt;br /&gt;
      ;&lt;br /&gt;
    *((volatile uint8_t *) 0x2B) += 1;&lt;br /&gt;
  }&lt;br /&gt;
  return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
per vedere il led lampeggiare occorre collegarlo (con la resistenza di limitazione della corrente) al pin 2 (porta D0) poi al pin 3 (porta D1) etc... (spostate il circuito disegnato alla porta 28 nella pagina sopra citata di tuxgraphics ai pin 2, 3 etc). NB: se volete collegare le porte GPIO o i2c di arduino o di un atmega ad un raspberry PI controllate che la tensione di lavoro dell'arduino/atmega sia 3.3v e NON 5v.&lt;br /&gt;
&lt;br /&gt;
== Lezione del 14 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. [[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 15:43, 10 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Linguaggio C ===&lt;br /&gt;
* Preprocessori: inclusione, compilazione condizionale macro&lt;br /&gt;
* Macro vs. funzioni inline&lt;br /&gt;
* Static vs. Extern&lt;br /&gt;
* Static vs. Auto&lt;br /&gt;
* Register&lt;br /&gt;
&lt;br /&gt;
=== temi trattati: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Bus Indirizzi, Bus Dati, Gerarchie di Bus&lt;br /&gt;
* Interrupt (e Trap)&lt;br /&gt;
* Mascheramento degli Interrupt&lt;br /&gt;
* Gestione nidificata degli interrupt&lt;br /&gt;
* DMA (Direct Memory Access)&lt;br /&gt;
&lt;br /&gt;
=== temi accennati: ===&lt;br /&gt;
* [http://mellotanica.github.io/uARM/ uarm]: l'emulatore per il progetto&lt;br /&gt;
&lt;br /&gt;
== Lezione del 21 ottobre 2015 ==&lt;br /&gt;
&lt;br /&gt;
Compiti a casa:&lt;br /&gt;
* Nella pagina &amp;quot;esercizi ed esperimenti&amp;quot; ho proposto degli [[Esercizi di lettura di codice C]]. Sono da provare e commentare. E' possibile proporne di nuovi.&lt;br /&gt;
* Provare a installare [http://mellotanica.github.io/uARM/ uarm: l'emulatore per il progetto] nei propri sistemi.&lt;br /&gt;
&lt;br /&gt;
=== argomenti da trattare: ripasso Architettura degli Elaboratori ===&lt;br /&gt;
* Struttura del processore: Control Path, Data Path&lt;br /&gt;
* CISC vs RISC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;=== altri argomenti da trattare ===&lt;br /&gt;
&lt;br /&gt;
0. System Call's e/o esempi di uso&lt;br /&gt;
1. Instruction Set &amp;amp; Assembly&lt;br /&gt;
2. Memoria Centrale, Indirizzamento, Memoria Virtuale, Swapping, Traduzione Indirizzi logici in indirizzi fisici (metodi e circuiteria usata)&lt;br /&gt;
3. Scheduling dei processi e tipi di Scheduler&lt;br /&gt;
4. Linguaggi nuovi (esempio: Python)&lt;br /&gt;
5. Scripting &lt;br /&gt;
6. Tool di programmazione (make, automake ecc)&lt;br /&gt;
7. Differenze Linker, Loader ecc&lt;br /&gt;
8. Crittografia e uso nei sistemi operativi&lt;br /&gt;
9. Extreme C (esempi di uso (DIsuso) del linguaggio C.&lt;br /&gt;
&lt;br /&gt;
== Lezione del 28 ottobre 2015 ==&lt;/div&gt;</summary>
		<author><name>Edux</name></author>
	</entry>
</feed>