What is a mechanism in an operating system?

Mekanisme vs. Politik i Computersystemer

24/06/2017

Rating: 4.13 (10747 votes)

Forestil dig en travl skadestue på et hospital. Overalt er der avanceret udstyr: hjerterytmemonitorer, operationsstuer, scannere og et team af dygtige læger og sygeplejersker. Alt dette udgør de værktøjer og procedurer, der er nødvendige for at redde liv. Dette er systemets mekanisme – den fortæller os, hvordan vi udfører en behandling. Men hvem skal behandles først? Patienten med et kritisk hjerteanfald eller patienten med et brækket ben? Beslutningen om prioritering tages af en triage-sygeplejerske baseret på et sæt regler. Disse regler er systemets politik – den fortæller os, hvad eller hvilken patient der skal behandles nu. Denne adskillelse mellem 'hvordan' og 'hvad' er ikke kun afgørende på et hospital; det er et af de mest fundamentale og kraftfulde designprincipper inden for operativsystemer og computerteknologi generelt.

What is the difference between policy and mechanism?
In this course, we shall distinguish between policy and mechanism. Policies are ways to choose which activities to perform. Mechanisms are the implementations that enforce policies, and often depend to some extent on the hardware on which the operating system runs.

I bogen "Operating Systems: Three Easy Pieces" af Arpaci-Dusseau-parret, fremhæves denne skelnen som central for at forstå, hvordan moderne operativsystemer fungerer. Ved at adskille de lavpraktiske mekanismer fra de overordnede, strategiske politikker, opnår udviklere en utrolig fleksibilitet. Systemer kan tilpasses, opdateres og optimeres uden at skulle genopbygge hele fundamentet. I denne artikel vil vi dykke ned i, hvad mekanismer og politikker præcist er, hvorfor deres adskillelse er så vigtig, og hvordan dette princip manifesterer sig i de systemer, vi bruger hver dag.

Indholdsfortegnelse

Hvad er en Mekanisme? Det Grundlæggende 'Hvordan'

En mekanisme er den implementering, der udfører en specifik opgave. Den svarer på spørgsmålet: "Hvordan gøres noget?" Mekanismen er ofte tæt koblet til hardwaren og udgør de byggeklodser, som systemet er konstrueret af. Den bekymrer sig ikke om, hvorfor en opgave skal udføres, kun om at den kan udføres effektivt og korrekt.

Lad os tage et andet eksempel: et adgangskontrolsystem med nøglekort til en bygning. Mekanismen her består af selve kortlæseren, den elektroniske lås i døren og netværksforbindelsen til en central server. Mekanismen ved, hvordan man læser data fra et magnetkort, hvordan man sender et signal for at låse døren op, og hvordan man kommunikerer med serveren. Mekanismen er neutral; den tager ikke stilling til, om kortet tilhører en direktør eller en rengøringsassistent.

I et operativsystem er et klassisk eksempel på en mekanisme et kontekstskifte (context switch). Når en computer med en enkelt CPU-kerne skal køre flere programmer samtidigt (multitasking), skal den lynhurtigt skifte mellem de forskellige programmer (processer). Mekanismen for et kontekstskifte er den specifikke, tekniske procedure, der gør det muligt at stoppe én proces, gemme dens nuværende tilstand (f.eks. værdierne i CPU'ens registre) og indlæse tilstanden for en anden proces, så den kan fortsætte, hvor den slap. Mekanismen definerer de præcise trin for at opnå dette skifte, men den beslutter ikke, hvornår skiftet skal ske, eller hvilken proces der skal køres næste gang.

What is a mechanism in a system implementation?
It states that mechanisms (those parts of a system implementation that control the authorization of operations and the allocation of resources) should not dictate (or overly restrict) the policies according to which decisions are made about which operations to authorize, and which resources to allocate.

Hvad er en Politik? Det Strategiske 'Hvad' og 'Hvilken'

Hvis mekanismen er 'hvordan', er politikken 'hvad', 'hvilken' eller 'hvorfor'. Politikken er det sæt af regler, retningslinjer eller algoritmer, der bruger mekanismerne til at træffe overordnede beslutninger og styre systemets adfærd. Den opererer på et højere abstraktionsniveau.

I vores eksempel med nøglekortsystemet er politikken defineret i den centrale serveres database. Her står der, hvilke personer (hvilke kort) der har adgang til hvilke døre og på hvilke tidspunkter. Politikken kan være: "Direktøren har adgang til alle døre 24/7, mens rengøringspersonalet kun har adgang til kontorområderne mellem kl. 18:00 og 06:00." Når et kort scannes, udfører kortlæseren (mekanismen) sin opgave ved at sende kortets ID til serveren. Serveren konsulterer så sin database (politikken) og sender en 'lås op'- eller 'afvis'-kommando tilbage til mekanismen.

I operativsystemet, i forbindelse med kontekstskiftet, er politikken kendt som en CPU-planlægningsalgoritme (CPU scheduling policy). Mens kontekstskiftet er mekanismen til at skifte proces, beslutter planlægningsalgoritmen, hvilken proces der skal have CPU-tid nu. En meget simpel politik er "First-In, First-Out" (FIFO). Ligesom en kø i supermarkedet får den proces, der ankom først, lov til at køre, indtil den er færdig. Dette er én mulig politik, men der findes mange andre, hver med sine egne fordele og ulemper i forhold til f.eks. responstid og systemets samlede effektivitet.

Skønheden ved Adskillelse: Ultimativ Fleksibilitet

Hvorfor er det så vigtigt at holde disse to koncepter adskilt? Svaret er fleksibilitet og vedligeholdelse. Når mekanismer og politikker er adskilt, kan man ændre den ene uden at påvirke den anden.

What is X-Windows policy?
X-Windows is all about mechanism, not policy. The policy is provided by the widget toolkit, by the window manager, and by other things added to the system later.
  • Ændring af politik uden ny mekanisme: Hospitalet kan beslutte at ændre sin triage-politik fra "først til mølle" til "mest kritisk først". Denne ændring kræver ikke, at de køber nye scannere eller bygger nye operationsstuer. De eksisterende mekanismer er de samme; det er kun beslutningsreglerne, der opdateres. Ligeledes kan en systemadministrator skifte CPU-planlægningspolitikken fra FIFO til en mere avanceret som "Shortest Job First" (SJF) for at optimere systemets ydeevne, uden at skulle omprogrammere den lavpraktiske mekanisme for kontekstskifte.
  • Forbedring af mekanisme uden ny politik: En producent udvikler en ny, hurtigere type elektronisk lås. Bygningens administrator kan udskifte alle de gamle låse (mekanismen) med de nye, uden at skulle ændre en eneste linje i adgangsdatabasen (politikken). Systemet bliver mere effektivt, men reglerne for, hvem der må komme ind, er uændrede.

Denne adskillelse gør systemer fremtidssikrede. Det er umuligt at forudse alle fremtidige behov. Ved at levere robuste mekanismer giver man brugerne og administratorerne mulighed for at implementere de politikker, der passer bedst til deres specifikke situation – nu og i fremtiden.

Et Praktisk Eksempel: Kontekstskifte Trin for Trin

For at gøre det mere konkret, lad os se på en forenklet procedure for et kontekstskifte (mekanismen) fra Proces P1 til Proces P2. Dette sker, når operativsystemet beslutter (baseret på sin politik), at det er tid til at skifte.

  1. Et hardware-interrupt (f.eks. fra en timer) eller et systemkald fra P1 afbryder den normale eksekvering.
  2. Hardwaren gemmer P1's bruger-registre (midlertidig hukommelse i CPU'en) på P1's kerne-stak.
  3. Systemet skifter fra brugertilstand (user mode) til kernetilstand (kernel mode), hvilket giver operativsystemet fuld kontrol.
  4. Systemet hopper til den specifikke kode, der håndterer denne type afbrydelse (trap handler).
  5. Operativsystemets logik køres. Her kan planlægningspolitikken beslutte, at P2 nu skal køre.
  6. De resterende dele af P1's tilstand gemmes i en datastruktur kaldet P1's Process Control Block (PCB).
  7. Operativsystemet indlæser P2's tilstand fra dens PCB.
  8. Systemet skifter til at bruge P2's kerne-stak.
  9. Koden returnerer fra afbrydelsen, men nu ind i P2's kontekst.
  10. P2's bruger-registre gendannes fra dens kerne-stak.
  11. Systemet skifter tilbage fra kernetilstand til brugertilstand.
  12. CPU'en hopper til det sted i P2's kode, hvor den sidst blev afbrudt, og P2 fortsætter sin eksekvering.

Denne komplekse sekvens er ren mekanisme. Den definerer præcist, hvordan skiftet sker. Beslutningen i trin 5 er derimod ren politik.

Sammenligning af Politikker: Et Valg med Konsekvenser

Valget af politik har stor indflydelse på et systems ydeevne. Her er en kort sammenligning af forskellige CPU-planlægningspolitikker, der alle kan bruge den samme kontekstskifte-mekanisme.

Does changing a policy require a new mechanism?
First, the same mechanism can be used to implement a variety of policies, so changing the policy might not require the development of a new mechanism, but just a change in parameters for that mechanism, but just a change in parameters for that mechanism from a library of mechanisms.
Politik (Planlægning)BeskrivelseFordelUlempe
FIFO (First-In, First-Out)Den første proces, der ankommer, køres færdig først. Ikke-præemptiv.Meget simpel at implementere og forstå.En lang proces kan blokere for mange korte (convoy effect), hvilket giver dårlig gennemsnitlig ventetid.
SJF (Shortest Job First)Processen med den korteste estimerede køretid vælges. Kan være præemptiv.Teoretisk optimal for gennemsnitlig gennemløbstid.Kræver forudsigelse af fremtidig køretid. Risikerer at "sulte" lange processer.
Round RobinHver proces tildeles en lille tidsenhed (quantum). Roterer mellem alle klar-processer. Præemptiv.Fair. Giver god responstid, hvilket er vigtigt for interaktive systemer.Hyppige kontekstskift kan skabe overhead, hvis tidsenheden er for lille.

Ofte Stillede Spørgsmål (FAQ)

Kan en mekanisme eksistere uden en politik?

Teknisk set ja, men den ville være formålsløs. En dørlås (mekanisme) uden en regel for, hvem der har nøglen eller koden (politik), er enten altid låst eller altid åben. Mekanismen giver potentialet, men politikken realiserer potentialet ved at anvende det til et bestemt formål inden for systemets rammer for ressourcestyring.

Hvorfor ikke bare bygge politikken direkte ind i mekanismen?

Det skaber et ufleksibelt og rigidt system. Tænk på en fysisk nøgle, der er skåret til en specifik lås. Her er mekanismen (låsen) og politikken (hvem der har adgang) tæt sammenkoblet. For at ændre politikken – f.eks. at fjerne en persons adgang – skal du fysisk ændre låsen og udstede nye nøgler til alle andre. Det er dyrt og besværligt. Med et nøglekortsystem (adskilt mekanisme og politik) kan du ændre adgangsrettigheder med et enkelt klik i en database.

Gælder dette princip kun for operativsystemer?

Absolut ikke. Det er et universelt designprincip, der findes overalt. I designet af grafiske brugerflader som X-Windows systemet, leverer systemet mekanismerne til at tegne vinduer og modtage input, mens en separat "window manager" leverer politikken for, hvordan vinduerne ser ud og opfører sig (f.eks. med titellinjer, knapper osv.). Princippet ses også i samfundsstrukturer, hvor lovgivningen (politikken) er adskilt fra retssystemet og politiet (mekanismerne), der håndhæver den.

Konklusionen er klar: ved bevidst at adskille de midler, hvormed noget gøres (mekanisme), fra de regler, der bestemmer, hvad der skal gøres (politik), bygger vi systemer, der er mere robuste, tilpasningsdygtige og langtidsholdbare. Det er en lektie fra computerverdenen, der har relevans langt ud over bits og bytes, lige fra organiseringen af en skadestue til arkitekturen i de komplekse digitale systemer, der definerer vores moderne verden.

Hvis du vil læse andre artikler, der ligner Mekanisme vs. Politik i Computersystemer, kan du besøge kategorien Teknologi.

Go up