Säkrare minneshantering med ny modell för parallellisering av processer

4/08/2010

Ett nytt koncept för att parallellisera exekveringen av program har publicerats:

New Software Design Technique Allows Programs to Run Faster | Sciencedaily

Jag tror forskarna har rätt i att konceptet att separera minneshantering till en separat specialiserad tråd också (huvudsyftet är att höja prestandan) kan öka säkerheten. Det liknar (men ej nödvändigtvis parallelliserat) hur jag själv hanterade minne när fortfarande programmerade i C:

1. Sätt upp egna grundläggande funktioner för allt rörande allokering och återlämnande av minne.

2. Låt dessa hantera minnet med viss grundläggande extra säkerhet. Däribland att minnet allokeras i stora bitar mycket större än något enskilt kräver.

3. Programmet har i någon mening ett stort stycke minne allokerat samlat en gång som sedan delas ut i egentligen större bitar än som efterfrågas.

4. Det kunde förr (men knappast numera) kraftigt för hårdvara som var aktuell tillsammans med den typ av beräkningar det handlade om (kryptering) för vad jag skrev förbättra prestandan då särskilt malloc var ganska kostsam att göra.

5. Dessutom gällde ju detta inte bara vad man skrev själv utan jag kompilerade bibliotek m.m. mot det. Orsaken var att de ofta satt med många hundra arrayer och andra strukturer känsliga för indata. På det här sättet klarar inte korrumperat data att skriva över något som inte är korrekt allokerat (eller det blir mycket svårare och kombinerat med andra åtgärder kan man stänga ner det ännu mer) och praktiskt viktigare gav det mycket stabilare program vilket då för aktuella bibliotek då var mer problematiskt eftersom de var omogna.

Faktiskt har jag inte annat än på universitet någonsin skrivit ett C-program där jag inte sett till att använda egna funktioner för minneshantering m.m. grundläggande. Det är verkligen när det gäller komplexa saker nödvändigt med C för att nå acceptabel säkerhet. Idag finns bättre lösningar för att göra detta som i de fall de då fanns var tämligen omogna och inte något man använde.

Sådant är av praktiskt värde men inte vad som direkt lärs på universiteten och om någon har kulturen att bedöma från vad folk tidigare i karriären skapar idag försämrats rörande defensiv programmering, program som är vettigt optimerade o.s.v. Nu för tiden tycks många inte ens längre strukturera vad de kodar. Inte på de nivåer som gällde förr när slarv annars gjorde att saker inte gick att köra under testning. Däremot går ramverk, bibliotek, OS m.m. till att få allt fler skydd naturligt inbyggda.

Intressant nog tycks det för mig att nivåerna på dagens programmerare rörande detta skiljer sig mellan olika länder. Sverige och USA är tror jag en aning bättre än de flesta i övrigt.

Rörande program för webben i script (PHP m.m.) verkar dock alla koda slarvigt. Bland det värsta jag sett kommer från stora internationella amerikanska företag som utvecklat olika presentationssystem för webben vilka inte sällan genererar så mycket överflödigt att det direkt kan slöa ner en webbläsare på en modern dator. Det är så långt ifrån defensiv programmering du kan komma eftersom det skapar en komplexitet vars påverkan svårare går att bedöma. Vidare är det självklart icke optimerat från alla aspekter. De i öppen källkod är däremot bättre vilket indikerar att aktuella företag inte korrekt prioriterar kvalitet och det kan förklara varför de tappar utrymme.

0 kommentarer

Kommentera