Kan programmvara repareras?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Kan programmvara repareras?

Inlägg av Spisblinkaren »

Hej!

Jag undrar om programvara kan repareras genom att man laddar ner EXAKT samma mjukvara i en applikation typ telefon där telefonen har slutat fungera.

Min erfarenhet är att det faktiskt går att tanka ner exakt samma mjukvara i en applikation för att på det sättet faktiskt laga applikationen.

En skicklig kollega till mig förklarade en gång att C har vissa begränsningar, om man inte definierar storleken på arrayer så kan storleken svämma över vilket får till följd att variabeln som ligger strax efter i RAM kan bli överskriven och vid nästa anrop av variabeln...

Jag vet inte om detta stämmer men jag har upplevt många gånger att en omprogrammering av styrkort leder till att dom börjar fungera.

Idag sitter jag med en fantastisk Nokia knapptelefon men den dummar sig hela tiden, jag får typ starta om den två gånger om dan för den har stängt av sig själv eller också klagar den på att den inte får kontakt med nätet när det ENDA man behöver göra är att starta om telefonen (dvs jag gissar att det inte är glappkontakt med SIM).

Jag misstänker att processorn helt enkelt bara går vilse och att det blivit nåt problem med programmet.

Vad tror Ni?

MVH/Roger
PS
Min Nokia är nu så sliten att den är tejpad och limmad både kors och tvärs, joy-stick har också fallit bort så det är svårt att navigera men jag äger numera en Ericsson T28s som bara behöver tankas och den är tänkt att ta över samtidigt som jag älskar min Nokia och tycker det vore trevligt om den kunde vara min reserv-telefon i alla fall.
Nerre
Inlägg: 26652
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Kan programmvara repareras?

Inlägg av Nerre »

Första frågan man ska ställa sig är väl om programvaran kan gå sönder. Och i såna fall var och på vilket sätt.

Först och främst så brukar de flesta system idag skilja på kodminne och arbetsminne, d.v.s. själva programkoden kan aldrig skrivas över en en variabel.

Med t.ex. C så är det tänkt att fungera så alltid, en del av uppstarten av ett C-program är att initiera variabler genom att kopiera data från kodminnet till arbetsminnet.

Men nu pratar vi ju bara om när programmet körs, först ska ju programmet hamna i kodminnet på nåt sätt. I de flesta system idag sker det genom att programmet läser in från sekundär lagring (ex. hårddisk, flashminne etc) till primär.

Har en fil som ligger på hårddisken blivit skadad så kan den såklart repareras genom att skrivas över med en ny korrekt fil.

Men om t.ex. inställningar som lagrats i minnet skrivs över så kan du ju inte "reparera" dem om du inte har en backup. Det du möjligen kan göra är att skriva över dem med defaultinställningar (genom att göra en ominstallation).

Men nu är det så att oftast när man gör en ominstallation så skrivs in befintliga inställningar över (eftersom man antar att om användaren redan har programmet installerat så vill användaren behålla sina inställningar). Så att bara installera över är oftast inte en bra lösning, bättre att i såna fall av installera och sen installera om.

I inbyggda system kan det hända att koden körs direkt från sin lagringsplats, men då det oftast är flash så går det inte att "råka" skriva över (eftersom flash oftast måste raderas i block innan det kan skrivas om). Variabler ligger då alltså i RAM och nollställs vid omstart.

När man flashar in ny mjukvara i grejer så brukar den först lagras i RAM och sen blockvis skrivas in i flash-minnet.
Bo.Siltberg
Inlägg: 357
Blev medlem: 30 juli 2018, 06:46:13

Re: Kan programmvara repareras?

Inlägg av Bo.Siltberg »

Jag skulle säga at man aldrig kan reparera programvara genom ominstallation med samma version men däremot mildra eller dölja symptomen från buggar i programvaran, om vi bortser från HW-fel och liknande som förstör programminnet. Programkoden är som den är och slutar den fungera så beror det oftast på buggar i programvaran som kräver en ny version av programvaran. Kanske har du fått ned en ny version när du installerat om som fungerar bättre?

Program som fungerar sämre över tid har buggar som t.ex läcker minne. Programmet tar mer o mer resurser av datorn som blir segare och segare. En omstart av programmet eller omboot av telefonen räcker för att skjuta på det problemet en stund.

Det kan också beror på det data programmet hanterar i minnet eller skriver på fil. Buggar i programmet klarar inte av datamängden eller kombinationen av data. Vid ominstallation nollställs ofta vissa data på disk som gör att programmet fungerar ett tag igen. I grund o botten handlar det om att programmet har buggar som inte klarar alla kombinationer av stimuli som det får utifrån.

Men jag skulle säga att program är överlag stabilare idag än förr, trots den exponentiellt ökade programvolymen. Men buggar finns, och en IT-armageddon blir nog oundviklig...

Tyvärr ser många tillverkare av programvara ominstallation som ett sätt att reparera sin programvara. Det är den första åtgärden de föreslår när man rapporterar en bugg oberoende av vad buggen handlar om. Så vi har fortfarande mycket att lära. Programmering behöver en högre status.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Kan programmvara repareras?

Inlägg av Icecap »

Som sådan "lagar" det inget att lägga in samma programversion igen.

MEN ibland händer det att programminnen inte är helt stabila och en bit kan bli fel. Den fel kan skapa allvarliga eller mindre allvarliga problem i programkörningen.

Och i DET fall kan det löna sig att uppfriska minnet.

Men med en gammal telefon är det en uppdatering som gäller, det finns orsak till att det kommer uppdateringar.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Kan programmvara repareras?

Inlägg av Spisblinkaren »

Den orsaken är i grund och botten mest för att tjäna mer pengar, typ att man inte skall bli missnöjd med märket.

Den är orsaken är inte ens för att täppa till säkerhetshål, åtminstone inte bara.

Orsaken är sällan att skapa en bättre applikation, snarare en mer invecklad applikation skulle jag vilja säga.

Och dom enda som gillar att programvara muterar hela tiden är barnungar, jag gillar det i alla fall inte :)

Tack ändå för din kommentar.

MVH/Roger
PS
Jag nästan hatar snacket om att allt skall uppgraderas/uppdateras hela tiden. Gammal mjukvara som man lärt sig och blivit bekväm med fungerar många gånger minst lika bra som 30 versioner senare, det enda som händer är att du måste byta dator om du uppgraderar till den senaste versionen för processorn måste tugga så mycket mer kod som inte bara är täckande av säkerhetsluckor utan en massa flashiga och menlösa finesser man klarade sig bra utan redan innan. Dessutom kan inte programmerare programmera kodeffektivt längre, mest för att dom inte behöver det för minne finns det ju gott om...
Senast redigerad av Spisblinkaren 6 juli 2019, 18:04:57, redigerad totalt 2 gånger.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Kan programmvara repareras?

Inlägg av Spisblinkaren »

Nerre skrev:Första frågan man ska ställa sig är väl om programvaran kan gå sönder. Och i såna fall var och på vilket sätt.

Först och främst så brukar de flesta system idag skilja på kodminne och arbetsminne, d.v.s. själva programkoden kan aldrig skrivas över en en variabel.

Med t.ex. C så är det tänkt att fungera så alltid, en del av uppstarten av ett C-program är att initiera variabler genom att kopiera data från kodminnet till arbetsminnet.

Men nu pratar vi ju bara om när programmet körs, först ska ju programmet hamna i kodminnet på nåt sätt. I de flesta system idag sker det genom att programmet läser in från sekundär lagring (ex. hårddisk, flashminne etc) till primär.

Har en fil som ligger på hårddisken blivit skadad så kan den såklart repareras genom att skrivas över med en ny korrekt fil.

Men om t.ex. inställningar som lagrats i minnet skrivs över så kan du ju inte "reparera" dem om du inte har en backup. Det du möjligen kan göra är att skriva över dem med defaultinställningar (genom att göra en ominstallation).

Men nu är det så att oftast när man gör en ominstallation så skrivs in befintliga inställningar över (eftersom man antar att om användaren redan har programmet installerat så vill användaren behålla sina inställningar). Så att bara installera över är oftast inte en bra lösning, bättre att i såna fall av installera och sen installera om.

I inbyggda system kan det hända att koden körs direkt från sin lagringsplats, men då det oftast är flash så går det inte att "råka" skriva över (eftersom flash oftast måste raderas i block innan det kan skrivas om). Variabler ligger då alltså i RAM och nollställs vid omstart.

När man flashar in ny mjukvara i grejer så brukar den först lagras i RAM och sen blockvis skrivas in i flash-minnet.
Intressant inlägg, tack!

Jag förstår inte riktigt vad du säger men jag gillar ditt engagemang.

Speciellt skillnaden på kodminne och arbetsminne förstår jag inte, för mig är något förenklat ROM (eller flash) programminne och RAM arbetsminne men jag har kanske blivit föråldrad?

På ditt resonemang så får jag dock ingen riktig förklaring på om det min kollega sa om att variabler kan skrivas över, den här killen var fysiker och mycket duktig på elektroteknik men fick tyvärr sitta och harva med programmering i säkert 5 år innan han till slut gav upp och skaffade nytt jobb, men bra på programmering var han tydligen.

Och jag undrar om det inte är det han säger som händer med min telefon för har variabler i RAM väl skrivits över så måste man göra en omstart men styret/hanteringen av dom borde inte ändras (för det ligger i ROM) men hur kan det då gå att "laga" mjukvara genom att ladda in exakt samma mjukvara?

För när du laddar in ny mjukvara laddar du ju till ROM, om man säger.

MVH/Roger
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Kan programmvara repareras?

Inlägg av TomasL »

Nu pratar du ånyo i nattmössan.
Uppdateringlr är buggfixar, dvs fixa till olika fel i applikationen.
Uppgraderingar kan vara nya fterlängtade funktioner eller ny hårdvara.
Ev säkerhetshål brukar i allmänhet fixa till då de blir kända.

Det går inte att skriva felfri programvara då det är omöjligt att testa alla scenariot.
Nerre
Inlägg: 26652
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Kan programmvara repareras?

Inlägg av Nerre »

rogerk8 skrev: Speciellt skillnaden på kodminne och arbetsminne förstår jag inte, för mig är något förenklat ROM (eller flash) programminne och RAM arbetsminne men jag har kanske blivit föråldrad?
Ja, på en PC ligger ju inte programmen i ROM utan på hårddisken, sen läses de in till RAM för att exekveras. Men de lagras i en annan del av RAM än variabler etc. Och moderna processorer ser alltså till att skydda koden mot skrivning (förr i tiden kunde man skriva kod som modifierade sig själv, men det går inte längre).
På ditt resonemang så får jag dock ingen riktig förklaring på om det min kollega sa om att variabler kan skrivas över, den här killen var fysiker och mycket duktig på elektroteknik men fick tyvärr sitta och harva med programmering i säkert 5 år innan han till slut gav upp och skaffade nytt jobb, men bra på programmering var han tydligen.
Det gick förr, när processorerna inte var så noga med att hålla reda på vad som är kod och data. Med moderna processorer isolerar dessa från varandra.

Om det finns buggar i programmet så kan variabler skrivas över av data som ska ligga i andra variabler (gäller främst strängar). Men i moderna processorer så kan alltså en variabel inte skriva över programkod. (Främsta orsaken är kanske inte processorns minnesskydd utan att programkoden ligger på lägre adresser än variablerna. Om koden ligger på adresserna 001-100 och variablerna börjar på 101 så kommer ju en variabel som skrivs för långt att hamna på en adress över 101, och knappast på en under 100.

Även om flera program körs samtidigt så är det oftast så att koden för program B ligger efter koden för program A, och sen ligger variablerna i en annan del av minnet.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Kan programmvara repareras?

Inlägg av Spisblinkaren »

TomasL skrev:Nu pratar du ånyo i nattmössan.
Uppdateringlr är buggfixar, dvs fixa till olika fel i applikationen.
Uppgraderingar kan vara nya fterlängtade funktioner eller ny hårdvara.
Ev säkerhetshål brukar i allmänhet fixa till då de blir kända.

Det går inte att skriva felfri programvara då det är omöjligt att testa alla scenariot.
Du verkar fortfarande vara full för man kan knappt förstå vad du skriver :)

MVH/Roger
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Kan programmvara repareras?

Inlägg av TomasL »

Suck :!:
Palle500
Inlägg: 4484
Blev medlem: 6 juni 2015, 14:53:06

Re: Kan programmvara repareras?

Inlägg av Palle500 »

Det som oftast händer vid en ominstallation om du verkligen tagit bort alla sparade värden är att du börjar med "rätt" värden på div inställningar, detta upplevs som att programmet blivit reparerat.

Men visst kan program skriva sönder sina egna variabler i RAM minnet. Händer ofta och beror på feltänkt i logiken, eller allmänt kallat en bugg. Åtgärdas oftast genom omstart av programmet.

Pratar vi sen PC med tex Windows som OS så är det skillnad på omstart eller att du stänger av datorn. Det är olika varianter på reset. Vid omstart blir inte all hårdvara återställd, detta är förklaringen till att det ibland fungerar bäst med att helt stänga av datorn.

Sen är inte uppdateringar ett kapitalistiskt djävulstyg för att göra livet surt för användarna, men visst ibland får man nya problem och känner inte igen sig i menyer och funktioner. Fast att man får problem efter en uppdatering är mycket sällan förekommande nuförtiden. Mycket av det du "klagar" på är historia och i viss mån myter som överlevt sig själva.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Kan programmvara repareras?

Inlägg av Spisblinkaren »

Jag tolkar detta, utan att förstå, som ett mycket kompetent svar.

Dessutom är det ett svar som adresserar min fråga och inte som TomasL gör dvs rabblar upp en massa saker ur ett besserwisser-perspektiv, jag lär mig ingenting av sånt.

MVH/Roger
PS
Gillar annars den här delen av kommentaren:
Sen är inte uppdateringar ett kapitalistiskt djävulstyg...
Jo, det är det :D
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Kan programmvara repareras?

Inlägg av Spisblinkaren »

@Nerre

Jag har sysslat lite med primitiva processorer modell Motorola 6809 fast då i form av att jag byggt mig en egen 6809-liknade processor i CPLD-teknik (MkII i FPGA-teknik, program finns).

Min KPU MkI fungerar med avseende på en enda instruktion (JMP) men när man bygger en processor från grunden är det mycket roligt att få bekräftat att en instruktion fungerar för detta innebär nämligen att till exempel bidirektionell data-buss fungerar vilket inte var helt lätt att implementera.

Vad jag lurar på är att ett dylikt mikrodatorsystem kräver en liten stack att FILO-lagra variabler på (och registerstatus om jag kommer ihåg rätt för detta var ganska länge sedan) och det kan ju faktiskt vara här det blir problem ty allt ligger i RAM.

Nu "kan" jag bara 6809-typen av processor men jag är tämligen säker på att moderna datorer fungerar snarlikt, skillnaden är mest det som TomasL sa nyligen i en annan tråd dvs "Det kallas för utveckling" medans jag kallar det för inveckling.

Det är så mycket teknik idag som verkligen inte behövs, samhälle och vänner driver på att man skall nyttja det senaste hela tiden samtidigt som många människor är deprimerade.

Teknik gör oss nämligen inte ett dugg lyckligare, snarare tvärtom men jag är medelålders så jag lider inte så mycket av att man alltid måste anamma det senaste, däremot tycker jag faktiskt synd om dagens ungdomar för gissa hur mobbad man skulle bli om man kanske föredrar en Doro knapptelefon?

Tycker det är patetiskt att se hur folk på buss och busshållplatser pekar i sina pekmobiler hela tiden, man kan inte prata med nån som sitter bredvid men man kan chatta med nån på andra sidan jordklotet, sanslöst fantastiskt men sanslöst asocialt.

Nej, jag ger inte mycket för modern teknik.

Ericsson T28s är däremot grejer :D

MVH/Roger
PS
Teknik skall bara funka som Kjell säger.
Nerre
Inlägg: 26652
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Kan programmvara repareras?

Inlägg av Nerre »

Det är ju just såna där grejer som de som designar moderna processorer tänker på.

Men även många väldigt tidiga processorer så var kod och data separarerade, helt enkelt eftersom det var olika ordlängd. Instruktionerna kunder vara 12 bitar men data bara 7. Dessa måste då onekligen lagras i olika minnen och det finns alltså ingen möjlighet för data att skriva över kod.

Det var när man började läsa in programvara till samma minne som man lagrade data i som det kunde hända. Men där använder man idag alltså "memory management" i processorn, som ser till att separera data från kod (och även separera processer från varandra, så en process inte kan läsa eller skriva data som hör till en annan process).

https://en.wikipedia.org/wiki/Memory_management_unit

Nyckeln är väl främst om data och kod adresseras av samma adressbuss. Har de separata adressbussar så är det omöjligt att skriva över kod med data.

Delar de adressbuss och processorn saknar "memory management" så finns risken att kod skrivs över med data, men det beror då på buggar och borde ge rena krascher och hängningar snarare är instabilitet.
Användarvisningsbild
breflabb
Inlägg: 3521
Blev medlem: 8 oktober 2014, 17:00:54
Ort: 59.466579, 16.506872

Re: Kan programmvara repareras?

Inlägg av breflabb »

Ett konkret svar till roger.
Du var inne på SIM kortet i början, och det kanske inte var så dåligt tänkt.
Jag har nämligen en Nokia visserligen så kallade smrtphon som är två år gammal
och den betedde sig på ungefär samma sett efter bara fem månader.
Och efter många veckors irritasion så plockade jag ut SIM kortet och fick se
laminatet nästan genomborrat av allt för stort tryck. Tricksade med laminatet och
fick ihop hålen (nästan) sen dess har den fungerat felfritt.
Så poängen är att felet kan ligga i hållaren eller SIM kortet
Skriv svar