Om processer och trådar
Varje process tillhandahåller de resurser som behövs för att köra ett program. En process har ett virtuellt adressutrymme, körbar kod, öppna referenser till systemobjekt, en säkerhetskontext, en unik processidentifierare, miljövariabler, en prioritetsklass, minsta och högsta arbetsuppsättningsstorlekar och minst en körningstråd. Varje process startas med en enda tråd, ofta kallad den primära tråden, men kan skapa ytterligare trådar från någon av dess trådar.
En tråd är entiteten i en process som kan schemaläggas för körning. Alla trådar i en process delar dess virtuella adressutrymme och systemresurser. Dessutom underhåller varje tråd undantagshanterare, en schemaläggningsprioritet, trådlokal lagring, en unik trådidentifierare och en uppsättning strukturer som systemet använder för att spara trådkontexten tills den schemaläggs. Trådkontexten innehåller trådens uppsättning av datorregister, kärnstacken, ett trådmiljöblock och användarstacken i processens adressutrymme. Trådar kan också ha en egen säkerhetskontext som kan användas för att personifiera klienter.
Microsoft Windows stöder förebyggande multitasking, vilket skapar effekten av samtidig körning av flera trådar från flera processer. På en dator med flera processorer kan systemet samtidigt köra lika många trådar som det finns processorer på datorn.
Ett jobbobjekt gör att grupper av processer kan hanteras som en enhet. Jobbobjekt är namngivningsbara, säkringsbara, delningsbara objekt som styr attributen för de processer som är associerade med dem. Åtgärder som utförs på jobbobjektet påverkar alla processer som är associerade med jobbobjektet.
Ett program kan använda trådpoolen för att minska antalet programtrådar och tillhandahålla hantering av arbetstrådarna. Applikationer kan köa arbetsobjekt, associera arbete med väntbara handtag, automatiskt köa baserat på en timer och binda med I/O.
schemaläggning av användarläge (UMS) är en enkel mekanism som program kan använda för att schemalägga sina egna trådar. Ett program kan växla mellan UMS-trådar i användarläge utan att den systemschemaläggaren och återfå kontrollen över processorn om en UMS-tråd blockerar i kerneln. Varje UMS-tråd har en egen trådkontext i stället för att dela trådkontexten för en enda tråd. Möjligheten att växla mellan trådar i användarläge gör UMS effektivare än trådpooler för kortvariga arbetsobjekt som kräver få systemanrop.
En fiber är en körningsenhet som måste schemaläggas manuellt av applikationen. Fibrer körs inom ramen för de trådar som schemalägger dem. Varje tråd kan schemalägga flera fibrer. I allmänhet ger fibrer inte fördelar jämfört med ett väldesignat flertrådat program. Att använda fibrer kan dock göra det enklare att porta program som har utformats för att schemalägga sina egna trådar.
Mer information finns i följande avsnitt:
- Multitasking
- schemaläggning
- flera trådar
- underordnade processer
- Trådpooler
- jobbobjekt
- User-Mode schemaläggning
- fibrer