Menů principale
 Notizie
 Grafica
 Forum
 Links
 Retro Trailer
 Recensioni
 Modelli Amiga
 Storia Amiga
 Retro-Gamers
 Lista Utenti
 Contatti
 Policy sito
Ricerca Google

Login

Nick


Password


Comandi

[b]-[/b]
Attiva/disattiva il neretto

[i]-[/i]
Attiva/disattiva l'italico

[br]
Inserisce un a capo

[p]
Inserisce un interruzzione di paragrafo

[center]-[/center]
Attiva/disattiva allineamento centrato

[justify]-[/justify]
Attiva/disattiva allineamento giustificato

[box]-[/box]
Apre/chiude una tabella

[boxcell] o [boxcell=n]-[/boxcell]
Apre/chiude una cella

[boxrow]-[/boxrow]
Apre/chiude una linea di celle

[quote]-[/quote]
Crea un box per quotare commenti.

[quote=titolo]-[/quote]
Come Quote ma con titolo.

[size=valore]-[/size]
Imposta la grandezza del carattere

[color=valore]-[/color]
Imposta il colore del testo.

[url=indirizzo]-[/url]
Attiva una porzione di testo

[img]indirizzo[/img]
Visualizza l'immagine indicata in 'indirizzo'.

[img;w=px;h=px;mini=%]indirizzo[/img]
Come sopra, w ed h sono base e altezza in pixel o mini č la percentuale di riduzione dell'immagine. Con mini=std l'immagine avrŕ una grandezza predefinita

Rispondi ad un commento
Regolamento Commenti e Topic

Tutti gli utenti che usufruisco di questo servizio sono pregati di rispettare poche semplici regole:

- Non e' possibile inserire commenti/topic contenenti volgarita', torpiloquio e/o offese di vario genere.

- E' assolutamente vietato inserire immagini e/o link a sfondo pornografico.

- Sarebbe preferibile evitare commenti mirati alla polemica e alla provocazione.

- Si ricorda che per netiquette, scrivere maiuscolo equivale a "URLARE", non va quindi bene scrivere tutto un post in maiuscolo.

- E' necessario ricordare che non e' bene fare commenti sprezzanti riguardo argomenti quali: religione, politica e la multietnia

- Non sono molto tollerati commenti/topic con eccessive abbreviazioni stile SMS.

- Eventuali critiche all'operato dei moderatori saranno punite a discrezione degli stessi.

- E' consigliabile rileggere sempre i commenti/topic prima di postarli, onde evitare lo spopolare di commenti ricchi di errori che potrebbero anche essere fraintesi o non compresi da utenti non italiani che sono alle prime armi con la lingua.

- E' buona cosa inserire i Topic nelle corrette sezioni, nell'indice delle stesse e' presente una breve descrizione sul contenuto, in caso di errore i Topic possono essere spostati nella sezione corretta dagli admin (Mak73) I commenti/topic che non rispettano tali regole verranno eliminati.

I gestori del sito non si assumono nessuna responsabilita' sul contenuto dei commenti riportati.

Risposta

Stile Testo
Dimensione:  Colore:  Allinea: 

Altri comandi
Emoticons
Clicca per riportare il codice nell'area di testo oppure posizionati su un'immagine per vederne il relativo comando.
:) :( :D ;) :P Oo -.- :O :ok: :pugni: :sedia: :tsk: :morto: :vietato: :superman: :sbav: :guardati: :rolleyes: :ghgh: :asd: :specchio: :migira: :incazz: :svitato: :sese: :° :uhm: :eheh: :fii: :muro: :goccia: :clap: :wuatta: :boom: :angelo: :brill: :mhua: :rotfl: :huh: ^^ :nono: :rosso: :azz: :lol: :dmon: :dance: :cool: :bleah: :...: :cuori: :yeah: :alien:
Testo
formattazione
   

09 Aprile 2020 Postato da: AMG_Novice_Usr
Programmazione su Amiga mediante processi concorrenti o threads
Buongiorno a tutti,

vorrei avere da voi un parere su una questione di programmazione.

Mi sto dilettando, con velleità del tutto ludico-didattiche, a fare qualche programmino su Linux, per essere precisi su Raspberry PI 3,
quindi la distro è Raspbian (flavour di Debian), e la mia curiosità è la seguente: è possibile su Amiga fare le stesse cose, magari sempre
in C, oppure in Basic … non so. Al di là del linguaggio, mi interessa sapere se/come poter implementare lo stesso funzionamento.

Entriamo un po' più nel dettaglio:

date un'occhiata ai seguenti due links (nel primo ci metto il file C sorgente da compilare con GCC da riga di comando, il secondo
link è soltanto l'eseguibile.exe già compilato, lo metto solo se qualcuno volesse prima provarlo, su un Raspberry):

https://drive.google.com/file/d/12plXZBq4FHia MpMXoWE98020cTWx_P9t/view

https://drive.google.com/file/d/1d6ZRaa30-Z5F mZIsW-ui8SnKvrIs3COL/view

Come potere vedere, faccio delle cose molto semplici, ovvero chiamo una fork, dopo la quale avrò, a run-time, un processo padre
ed un processo figlio 1, e poi una seconda fork, da cui il processo padre ed un processo figlio 2, quindi abbiamo 3 processi, con 3
PID diversi, 3 processi concorrenti (stessa priorità? non so … eventualmente in Linux come si fa ad assegnare la priorità ad un
processo?).

Ciascuno di questi 3 processi incrementa un contatore "accessi", stampa a video il valore corrente del suo contatore, esegue la
stessa stampa su un file.txt.

I 3 processi devono essere sincronizzati tramite un semaforo, il quale viene creato grazie alla memoria condivisa (libreria shm.h):
un byte di shared memory viene creato e messo a disposizione di tutti e 3 i processi, quindi questi si sincronizzano fra di loro
leggendo da/scrivendo su questo semaforo fatto in casa.

La sincronizzazione è importante per consentire un accesso alternato/ordinato sia allo standard-output (il video della shell) sia
al file.txt.

Processo Padre: contatore = 1
Processo figlio1: contatore = 1
Processo figlio2: contatore = 1

Processo Padre: contatore = 2
Processo figlio1: contatore = 2
Processo figlio2: contatore = 2

Processo Padre: contatore = 3
Processo figlio1: contatore = 3
Processo figlio2: contatore = 3

ecc...

fino a 10

Non ci devono essere intrecciamenti, battimenti, casini diciamo … il sincronismo deve dare questo risultato, sia a video che sul file.txt.

In effetti tutto funziona perfettamente (provate … potete GCC-compilare il sorgente su qualunque piattaforma che abbia Linux).

La mia domanda quindi è:

vorrei fare la stessa cosa su Amiga. Come fare?

Amiga è un sistema multi-tasking, quindi mi aspetto di poter anche qui far fare una fork ad AmigaOS e gestire in modo sincronizzato
dei processi, esattamente come fatto con Linux.

Vorrei inoltre che mi suggeriate degli ambienti in cui sviluppare, possibilmente in C, queste cose.

Avevo sentito parlare di Lattice C, ovvero un compilatore (4 floppy disk) per C su Amiga.

è disponibile qualcosa del genere, magari che si possa installare su HDD di un Amiga 1200?

Ci sono alternative?

Grazie



Commenti: 20  Aggiungi  - Leggi

utente amiga quadratico medio

Post inviati: 701

Visulizza profilo Messaggio Personale
87.9.47.*** Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Commento
AMG_Novice_Usr 10 Aprile 2020    15:46:07
Citazione

Un Rasp non credo che abbia al suo interno questo tipo di separazione hardware.

Ha il suo grado di separazione HW: Rasp PI 3 possiede 4 CPU indipendenti ed una CPU grafica (GPU). Esiste un frame-buffer in SDRAM per la grafica,
accessibile dalla GPU (credo anche dalle 4 CPU), non so sull'arbitraggio come funziona (questa RAM funge da chip-ram, diciamo).

Citazione

dovresti lasciare ad AmigaOS la gestione della concorrenza

Si certo, nel senso che sarà AmigaOS (o meglio, il reskeduler facente parte di Exec, il microkernel di AmigaOS) a schedulare i miei processi:
processo1
processo2
processo3
Però tramite segnali, oppure tramite un byte di ram condivisa (???), oppure tramite semafori (???) avrei bisogno che quando processo1 fa
fatto i suoi comodi, deve dire "ho finito", e bloccarsi; a questo punto si sblocca processo2, che fa il suo lavoro, poi dice anche lui "ho finito",
bloccandosi … insomma … il tutto ciclicamente e circolarmente.
Quindi, reskeduling fatto da AmigaOS (ovviamente), ma sincronismo fatto da me con della semaforica (il semaforo protegge l'echo su schermo
oppure un file di testo, insomma la risorsa acceduta dai processi).

Citazione

Perche' chiedi di voler fare cose del genere con Amiga, quando con un Rasp le realizzi in un microsecondo ?

Per imparare


A500-Plus + A501 + switch meccanico per selezione Double-kickstart 1.3 v. 34.5 / 3.1 v. 40.63 /// A600, Rev. MB. 1.5, espansione in trap-door 1MB chip-ram, Kick-Cloanto 45.66, HDD interno a tracce da 2GB modello MK2104MAV by Toshiba su porta IDE: partizione DH1 con WB2.1 (default) + partizione DH2 con WB3.1 /// A500, Kick 1.3 v. 34.5, scheda espansione in trap-door da 512KB /// A600, espansione da 4MB-fast-ram innestata con zoccolo direttamente su 68K, Kick 2.05 v. 37.300, espansione di chip-ram in trap-door da 1MB, CF da 4GB su adattatore interno CF/IDE: partizione DH0 con CWB GAAE, partizione DH1 con WB2.1, partizione DH2 con WB1.3 /// A500, Rev. MB 6A, Kick 1.3 v. 34.5, A520-TV-RF-Modulator /// A500, PWR-LED ROSSO. Kick 1.2 v. 33.180 /// A500-Plus, PWR-LED ROSSO, Kick 2.04 v. 37.175, Driver DF1 esterno Savage DMF 322, A590 alimentato da alimentatore di CD32, con dentro espansione da 2MB di fast-ram + HDD SCSI Seagate ST32151N da 2GB - DH0 con WB 2.04 e DH1 con WB 1.2 /// A1200, 68EC020, Kick 3.0 v. 39.106, HDD a tracce Hitachi 40GB interno su porta IDE con installato CWB, espansione A1208 in trap-door da 8MB-fast-ram, PLipBox su porta parallela per collegamento via Ethernet a Internet /// Commodore 64 Assy NO. 250425 + floppy drive 5’’ 1/4 modello 1541

Utenti Online
Utenti registrati: 1206 dal 1 Gennaio 2006
di cui online: 0 registrati - 
62 non registrati

Benvenuto all'ultimo utente registrato: zulu

Buon Compleanno a Mck - jockerfox - 

© Amigapage 1998 - 2007 - Sito italiano dedicato alla piattaforma Amiga ed evoluzioni varie.
Struttura del sito interamente ideata e realizzata da Marco Lovera e Alessandra Lovera - Tutto il materiale inserito all'interno del sito č dei rispettivi autori/creatori.
E' assolutamente vietata la riproduzione o la manipolazione di tutti i contenuti o parte di essi senza l'esplicito consenso degli amministratori e degli autori/creatori.

Eseguito in 0.10129594802856 secondi