Omvandlingen av ett program till en process involverar flera viktiga steg:
1. sammanställning (eller tolkning): Ett program skrivet på ett högnivåspråk (som C ++, Java, Python) måste översättas till maskinförståeliga instruktioner. Detta händer på två huvudsakliga sätt:
* sammanställning: Kompilatorn översätter hela programmet till en fullständig körbar fil (t.ex. en ".exe" -fil på Windows eller en binär fil på Linux/MacOS). Denna körbara innehåller maskinkod som är specifik för måldatorns arkitektur.
* Tolkning: En tolk översätter och kör programlinjen för rad utan att skapa en separat körbar. Detta är långsammare än sammanställning men erbjuder mer plattformsoberoende. Språk som Python och JavaScript tolkas vanligtvis (även om just-in-time [JIT] sammanställning ofta används för att förbättra prestandan).
2. Lastning: Operativsystemets lastare ansvarar för att ladda programmets körbara till minnet. Detta innebär:
* Hitta den körbara: Lastaren lokaliserar programfilen på lagringsenheten (hårddisk, SSD, etc.).
* Tilldelning av minne: Den reserverar utrymme i datorns RAM för programmets kod, data och stack. Stacken används för tillfälliga data och funktionssamtal. Högen används för dynamiskt tilldelat minne.
* Relocation: Lastaren justerar minnesadresserna i programmet för att återspegla dess faktiska plats i RAM.
* länkning: Om programmet använder externa bibliotek eller moduler länkar lastaren dem till programmet.
3. Skapande av processkontrollblocket (PCB): Operativsystemet skapar en PCB, en datastruktur som innehåller all information som behövs för att hantera processen. Denna information inkluderar:
* Process -ID (PID): En unik identifierare för processen.
* Programräknare: Pekar på nästa instruktion som ska utföras.
* CPU -register: Förvara tillfälliga data som används av CPU.
* Information om minneshantering: Detaljer om minnet som tilldelats processen.
* I/O -status: Information om processens I/O -operationer.
* State: Anger om processen körs, klar, blockerad, etc.
4. exekvering: När programmet har laddats och PCB har skapats tilldelar operativsystemets schemaläggning processen till en CPU -kärna. CPU:er hämtar sedan instruktioner från programmets kod i minnet, kör dem och uppdaterar PCB i enlighet därmed. Processen fortsätter att utföra tills den är klar eller avslutas.
Kort sagt, ett program är en statisk uppsättning instruktioner, medan en process är en dynamisk instans av ett program i exekvering. Processen har sitt eget minnesutrymme, resurser och en PCB som hanteras av operativsystemet. Flera processer kan köras samtidigt (men inte nödvändigtvis samtidigt på en enkelkärnig CPU).