Multiprogramming er en teknik til operativsystemdesign, hvor flere programmer udføres samtidig på en computer. Dette er i modsætning til enkeltprogrammering, hvor kun et program udføres ad gangen.
Multiprogramming muliggøres ved hjælp af en hukommelsesstyringsenhed (MMU) , som gør det muligt for operativsystemet at opdele den tilgængelige hukommelse mellem flere programmer. Hvert program får sin egen del af hukommelsen, og MMU sikrer, at intet program kan få adgang til mindet om et andet program.
For at multiprogrammering kan fungere effektivt, skal operativsystemet også tilvejebringe en mekanisme til planlægning programmerne, så de udføres på en retfærdig og effektiv måde. Scheduleren bruger typisk en rund-robin Algoritme, der giver hvert program en tidsskive med samme længde til at udføre. Når et programs tidsskive er oppe, er det undtaget, og det næste program i køen får en chance for at køre.
Multiprogrammering har flere fordele i forhold til enkelt programmering. For det første forbedrer det den samlede gennemstrømning af systemet, da flere programmer kan udføres på samme tid. For det andet reducerer det mængden af tid, som en bruger skal vente på, at et program skal begynde at udføre, da operativsystemet kan skifte mellem programmer meget hurtigt. For det tredje gør det det muligt at køre flere programmer på samme tid, selvom nogle programmer er mere I/O-intensive end andre.
Den største ulempe ved multiprogramming er, at det kan øge mængden af omkostning, der er forbundet med operativsystemet, da operativsystemet skal styre hukommelsen og planlægningen af flere programmer. Imidlertid er denne overhead typisk lille, og fordelene ved multiprogrammering langt opvejer omkostningerne.
Her er et forenklet eksempel på, hvordan multiprogramming fungerer:
1. operativsystemet tildeler en del af hukommelsen til hvert af de programmer, der skal udføres.
2. Operativsystemet placerer det første program i køen af Ready -programmer.
3. CPU udfører det første program i en tidsskive af en specificeret varighed.
4. Når tidsskiven er oppe, forhindrer operativsystemet det første program og placerer det i slutningen af køen af Ready -programmer.
5. Operativsystemet placerer derefter det næste program i køen af Ready -programmer foran på køen og giver det en tidsskive af en bestemt varighed.
6. Processen gentages, indtil alle programmer er blevet udført.