"

 Kickstart-levykkeet 

Nykyisessä artikkelissa sanotaan, että "myöhemmät Amiga-mallit käyttivät kaikki ROM-siruja" [A1000:n jälkeen] Kickstartin yhteydessä.

Muistan kuitenkin, että Amiga 3000 vaati myös tällaisen Kickstart-levykkeen. Voiko joku vahvistaa? Kiitos!

Useimmissa A3000:ssa käytettiin ROM-muisteja, mutta joissakin (kuten omassani) oli ROM-muisteissa pieni ""Super Kickstart"", joka luki Kickstartin levykkeeltä tai kovalevyltä. (Super Kickstart perustui AmigaOS 1.4:ään, joka ei koskaan ilmestynyt missään muualla). IIRC, vain Euroopassa valmistetuissa koneissa oli ""Super Kickstart"", mutta saatan olla väärässä tässä yksityiskohdassa. Sen tiedän, etten koskaan saanut konettani käynnistämään v3.x AmigaOS:ää =(. Kippis, (talk) 

 Muistin vapauttaminen 

(Tämä liittyy eri Wikipedia-artikkeliin). Minulla on edessäni lausunto, jonka mukaan kun ohjelma päättyy AmigaOS:ssä, ohjelman osoittamaa muistia ei vapauteta, ja että ohjelman on siksi tärkeää vapauttaa kaikki pyytämänsä muisti, muuten se on pysyvästi ""vuotanut"". Onko näin?  

Muisti, jota ei vapauteta ennen ohjelman päättymistä Amiga OS:ssä, vuotaa (olettaen, että se oli tarkoitus vapauttaa - joissakin tapauksissa ohjelma on saattanut varata rakenteita ja liittää ne järjestelmäobjekteihin, kuten laitesolmuun).  Yksi Amigan yleisimmistä testaustavoista oli vapaan muistin tarkistaminen ohjelman päättymisen jälkeen; oli olemassa monia työkaluja, jotka automatisoivat tämän.  Ohjelman normaalikäyttäytyminen oli vapauttaa kaikki muisti, ja kaikki mallocattu muisti vapautettiin automaattisesti poistumisajan koukkujen avulla.  (Toisin sanoen vuotavaa muistia esiintyi yleensä vain AllocMem()- ja vastaavien funktioiden kautta saadulle muistille.)   

Todellakin. AmigaOS ei tee resurssien seurantaa juuri lainkaan säästääkseen muistia, jota seurannan sisällyttäminen maksaa. Oli myös kolmannen osapuolen ohjelma, joka korjasi monia allokoi/vapauta resurssitoimintoja (esim. AllocMem/FreeMem, OpenWindow/CloseWindow) ja lisäsi niihin resurssien seurannan, mutta tämä rikkoisi kaikki ohjelmat, jotka tarkoituksellisesti varasivat muistia ja poistuivat sitten, esimerkiksi ohjelmat, jotka asensivat korjauksia järjestelmätoimintoihin. Ohjelmat ottavat vastuun kaiken varatun muistin vapauttamisesta. Useimpien Amiga C-kääntäjien C-kirjaston vakiototeutus käytti onexit-käsittelijää, joka vapautti kaiken malloc()-toteutuksella allokoidun muistin, mutta jos ohjelma kaatui tai AmigaOS:n muistin allokointirutiineja kutsuttiin suoraan, allokoitua muistia ei vapautettu. Muilla kielillä oli eriasteinen tuki muistin seurannalle, yleensä (kuten C:llä) vain, jos käytettiin kielikohtaisia muistin allokaattoreita.  

Kiitos vastauksistanne. Syy kysymykseen liittyy keskusteluun, jota olen käynyt muistivuodosta. Laitan kysymyksen, joka on hyvin subjektiivinen, mutta ehkä siitä päästään yhteisymmärrykseen. Artikkeli sisältää ""Nykyaikaisissa käyttöjärjestelmissä normaali sovelluksen käyttämä muisti vapautuu, kun sovellus lopetetaan""". Osa keskustelusta koskee sitä, onko tämä todella totta, ja pitäisikö siinä sanoa ""Joissakin käyttöjärjestelmissä..."". Johtava kysymys on: onko AmigaOS ""moderni käyttöjärjestelmä""? Täydentävä kiista, jossa sanotaan ""Sovellus olettaa, että muistipyyntö on onnistunut, ja jatkaa tältä pohjalta". Tämä johtaa tyypillisesti käyttöoikeusrikkomukseen, mutta joissakin tapauksissa se voi johtaa tämän tai (alkeellisissa järjestelmissä) jonkin toisen sovelluksen omistamien tietojen vahingoittumiseen.""" Pitäisikö tässä olla ""some systems"" eikä ""primitive systems""? Kiitos jo etukäteen.  

Amiga kuuluisi ""nykyaikaisiin käyttöjärjestelmiin"", ja se vapauttaa ""normaalia muistia"". (eli malloced), kun sovellus päättyy.  Ohjelman kaatuminen Amigalla ei vapauta muistia, joten voisi sanoa, että se vuotaa prosessin kaatuessa.  Ja ohjelma, joka käyttää esimerkiksi OpenFile():a open():n sijasta, vuotaa tiedostokahvan (ja jonkin verran muistia), jos ohjelma kutsuu exit():a sulkematta tiedostoa.  Mitä tulee toiseen kysymykseesi, vastaus on ""joissakin järjestelmissä"" - monissa ""nykyaikaisissa"" sulautetuissa järjestelmissä (mukaan lukien uclinuxin kaltaiset unix-muunnokset) ei ole muistisuojausta, ja ne voivat lukea (ja mahdollisesti kirjoittaa) rakenteita, jotka käyttävät NULL:ia osoittimena, ilman että käyttöoikeusrikkomusta tapahtuu.  Henkilökohtaisesti vihaan ohjelmia, jotka eivät tarkista mallocin (tai minkään muunkaan kutsun) epäonnistumista.  Hyvä ohjelmointikäytäntö Amigalla (VM:n puuttuessa) oli testata ohjelmia ja käyttöjärjestelmää satunnaisia muistinjakovirheitä vastaan, jotta näkyisi, palautuivatko ne siististi vai eivät.  Kaikki allokaatiot (ja kaikki järjestelmäkutsut jne.) pitäisi tarkistaa epäonnistumisen varalta ja