Just nu i M3-nätverket
Jump to content

Windows dominerar kraftigt


XL-Dennis

Recommended Posts

Det finns inget problem så länge man följer dom standarder som finns. Gör man bara det så kan man utveckla hemsidor som fungerar i alla webbläsare (t.ex Mozilla, Internet Explorer och Opera).

 

Link to comment
Share on other sites

> Och i vad ligger problemet?

 

Men snälla nån, vad är det med dig ? Du nämnde ju själv problem med standarder eller hur ?

 

Det var endast ett exempel, numera börjar de flesta browsers vara rätt hyfsat kompatibla, det var betydligt värre förr men det var bara en illustration av problematiken och då är ändå just detta område kraftigt standardiserat.

 

Sådana saker skulle blir enormt mycket värre på ALLA områden i datorvärlden om det fanns en högre grad av fragmentering på operativ system marknanden.

 

Som sagt, kan ni få Sun, MS, företrädare för open source världen, IBM...etc..etc att komma överns om en gemensam kernel och gemensamma protokoll och API:er som alla kan använda för att basera ett system på skulle ingen bli gladare än jag.

 

Dock inget *nix tjafs som baseras på snart 50 år gamla idéer om hur ett system ska se ut och fungera.

 

[inlägget ändrat 2002-10-19 20:08:04 av XyZz]

Link to comment
Share on other sites

men att Windows dominerar kraftigt måste bero på att kunderna gillar det. Om man som kund inte vill ha det, hade andra system uppstått. Så fungerar ekonomin i stort och även operativssytemmarknaden. Nu när de fått en så stor marknadsandel kan de utöva sin dominerande ställning för att bekämpa uppstickare, men de kommer alltid att komma - det finns alltid några som inte vill vara som alla andra

 

Link to comment
Share on other sites

men att Windows dominerar kraftigt måste bero på att kunderna gillar det. Om man som kund inte vill ha det, hade andra system uppstått. Så fungerar ekonomin i stort och även operativssytemmarknaden. Nu när de fått en så stor marknadsandel kan de utöva sin dominerande ställning för att bekämpa uppstickare, men de kommer alltid att komma - det finns alltid några som inte vill vara som alla andra

 

Link to comment
Share on other sites

Lika mkt lögn som att påstå att OSX eller Linux skulle vara bättre. De är alla bra operativ, men passar till olika saker. W2000 passar till mer än de andra, pga det överlägsna stödet för hårdvara och mjukvara. Det är dock inte samma sak som att det skulle vara "bättre". Men det är definitivt ett mycket bra operativ.

 

Link to comment
Share on other sites

Pontus östlund

[OBS! Detta inlägg drar lite åt OT-hållet]

 

Detta är ju en ytterst komplex fråga som säkerligen inte har några sanningar. Vilka är bäst; Led Zeppelin eller ABBA? Det är mycket en fråga om individuell smak. Som redan påpekats så är det klart att det faktum att Windows har varit förinstallerat på datorer som sålts i allra högsta grad har påverkat (eller rent ut sagt skapat) den rådande situationen, det behöver man ju knappast vara Einstein för att begripa.

 

Eftersom MS har en så pass dominerande ställning så är den ju även svår att bryta. Till att börja med så har ju inte den gemene datorinnehavaren (skulle jag vilja påstå) den blekaste aning om att det finns andra operativsystem än det de har installerat (om de ens vet att det är ett operativsystem). Vidare; eftersom Windows är så pass spritt så finns det ju en otroligt utbredd "day-to-day"-support. D v s man har alltid en kompis, en släkting eller annan bekant man kan ring till om man stöter på patrull. Om man t ex har Linux installerat så kan det ju bli problem med den saken (i dagsläget).

 

Själv är jag mestadels Linux-användare (tack vare att jag har haft ovan nämnda day-to-day-support att tillgå för detta system) och det finns två anledningar till att jag har min Win-partition kvar, och dessa två anledningar stavas Photoshop och Flash. Tyvärr finns det inga alternativ till dessa program på Linux-sidan (Gimp suger i jämförelse till PS, och det finns inte ens ett alternativ över huvud taget till Flash), men hade de funnits hade Win-partitionen åkt i papperskorgen omedelbart. Och nu kommer vi in på ett ämne som ingen verkar ha upptäck är själva kärnfrågan (i alla fall i Linux kontra Windows-diskussionerna här på IDG):

 

IDG (alltså Eforum och Artikelforum) så finns det två rabiata läger (och nu kommer jag att hårddra det lite): Vi som älskar Linux och Vi som älskar Windows (eller om man vill se det negativt: Vi som hatar Windows coh Vi som hatar Linux). Dessa två läger försvarar sin sida till sista blodsdroppen och man viker inte en millimeter från sin ståndpunkt, och konsensus i diskussionerna ter dig ytterst avlägset Men varför är klyftan så förbannat stor? Jo, det verkar som att diskussionen egentligen handlar om kapitalism kontra anti-kapitalism, vilket ju i egentlig mening är ideologiska ställningar, och ideologiska uppfattningar är oftast svårare att rubba än andra mer vardagliga uppattningar.

 

Jag tror - utifrån mina egna värderingar - att de flesta som använder Linux i hemmet gör det för att det INTE är Microsoft. Microsoft är ju på något sätt kapitalismens högborg och är man då anti-kapitalist med datorintresse så är ju inte måltavlan speciellt svårlokaliserad. Det man i första hand vänder sig emot är MS sätt att bedriva affärer och därigenom i viss mån det kapitalistiska systemet som sådant. MS-förespråkarna å andra sidan säger ju att vaddå; MS är ju ett företag som har som uppgift att skapa profit för sin anktieinnehavare och det gör de ju, så gratta dem istället för sina framgångar. MS-förespråkarna talar om ekonomiska förutsättningar, Linux-förespråkarna talar om valrfrihet.

 

Observera att detta är en analys i koncentrat (dock till viss del baserad på verktyg från den kritiska diskursanalysen) och något tillskruvad, men jag tror ändå att jag fått med en poäng: Operativsystemfrågan är inte bara en fråga om vilket operativsystem som är bäst utan det är i många fall även en fråga om politisk ideologi (hur skruvat det än kan låta). Fast å andra sidan kan man se detta positivt eftersom det känns som politisk ideologi är lite väl utsuddat i vårt samhälle och det vore ju då lite kul om datornördar kunde lyfta upp detta ytterst fundamentala diskussionsämne (alltså politisk ideologi) på världskartan igen oavsett man är Linux-, Winows-, Mac- eller annan operativsystemanhängare.

 

# ==============================extra===

# Nordens största F l a s h community

# www.communen.com | poppa@communen.com

 

Link to comment
Share on other sites

  • 2 weeks later...

Att Windows dominerar kraftigt på persondatormarknaden beror på att det är förinstallerat på alla nya datorer. Det beror även på en rad avtal och allianser mellan Microsoft och andra företag, exempelvis Intel och Apple.

 

Rent tekniskt sett så bygger Windows, Unix och Linux på i princip samma tekniker. Sakerna som finns i Windows och Unix heter olika saker men gör i stort sett samma sak. Vissa saker som exempelvis stödet för Internet och annat nätverkande (WinSock) har de plockat rakt av från BSD UNIX.

 

När det gäller prestanda så har Microsoft gjort vissa saker långsammare helt medvetet. Detta gäller exempelvis hanteringen av processer och trådar samt anropen till operativsystemet. Detta för att lämna mer utrymme till processorintensiva programvaror som inte behöver speciellt mycket prestanda på dessa områden. Eller på ett mindre tekniskt språk: de har optimerat Windows för SPEL.

 

Systemets resurser är ju helt enkelt begränsade så ska man få något att gå fortare så får man ta ner farten för något annat.

 

För sanningen är att de flesta nog hade gjort besväret att byta till andra operativsystem om det inte hade varit för just spelen. Vilket gör att det på kort sikt bara finns ett alternativ till Windows och det hittar ni här: http://www.transgaming.com/

 

Med Microsofts satsning på .Net vilket är en javaliknande teknik så finns det stor sannolikhet att Windows programmen (inklusive Microsofts egna som skrivbordet, utforskaren mm) kommer att funka lika bra på andra operativsystem. Faktum är att själva hjärtat i tekniken, CLI-motorn som möjliggör körandet av programmen, delvis fungerar i FreeBSD. Denna satsning från Microsoft tyder på att de själva ser FreeBSD som ett alternativ till Windows, eller snarare ett framtida komplement. Faktum är ju att Microsoft inte tjänar ett öre på att sälja operativsystem, de ingår ju numera i deras användargränssnitt. De skulle alltså lika gärna kunna skippa själva operativsystemet och köra det ovanpå de operativsystem som nu är konkurrenter. De har ju redan lånat så mycket av FreeBSD så de kan ju lika gärna ta hela operativsystemet när de lika håller på…

 

Mer information om .Net och FreeBSD hittar ni här: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dndotnet/html/mssharsourcecli.asp

 

För övrigt så måste den där undersökningen enbart rikta in sig på persondatorer. Tittar vi på den största gruppen användare så blir nog ms och Windows rätt liten. Denna hittar vi bland de som har te x: TV, Stereo, processorstyrda bilar, kärnvapen, brödrostar (ja en del brödrostar har faktiskt datorer i sig.), mm. För att inte tala om alla som har ett instickskort i datorn med en egen processor som antagligen INTE kör Windows.

 

För övrigt kan jag ju tillägga att ifall tillverkaren av USB-tangentbord har skrivigt drivrutiner till Linux så är det väl lika mycket Linux fel som när mitt Windows får blåskärm hela tiden för att drivrutinerna som följer med mitt modem fungerar bra. Själv skulle jag inte drömma om att köra USB-tangentbord varken i Linux eller Windows. Köper man hårdvara som är av ett bra märke så fungerar det bra i de flesta operativsystem. Man får vad man betalar för som man brukar säga.

 

Link to comment
Share on other sites

...vissa saker långsammare helt medvetet. Detta gäller exempelvis hanteringen av processer och trådar samt anropen till operativsystemet
Kan du utveckla det där med lite fakta?

 

Link to comment
Share on other sites

Micke Hansson

Jagpratar nu inte omhur många prg som finns, utan om stabilitet hos OS:et.

Håller med om att Win 2000 är bra men tycker att OSX är betydligt stabilare.

(Kom nu inte dragande med skit bakom ratten)

 

Link to comment
Share on other sites

Micke Hansson

Det är inget problem när man följer standarden. Det är precis det jag säger, men följer du den inte och bara utv för MS explorer blir det problem (MS explorer har ingenting med HTML-standarden att göra)

 

Link to comment
Share on other sites

Vilken sorts fakta är det du vill ha? Det finns gott om information på www.microsoft.com och msdn.microsoft.com om hur Windows är uppbyggt

 

Som ett exempel kan jag ta upp detta.

 

Skriv ett litet program i C innehållande: while(1){}

Med andra ord en oändlig slinga som inte gör något alls. När detta program körs i Windows får det till resultat att hela datorn svarar dåligt eller inte alls. Kör motsvarande program i exempelvis FreeBSD och programmet kommer inte att få använda mer processortid än något annat program. Detta givetvis med resultat att programmet går långsammare än vad det hade gjort i Windows. Som jag skrev tidigare så är det fråga om olika skolor om hur resurserna ska fördelas. Microsoft fördelar mycket resurser till det (singularis) program som är aktivt medan de som gjort FreeBSD, Linux mm fördelar resurserna så jämt som möjligt mellan programmen. Dessutom byter Microsoft process så sällan som möjligt eftersom varje byte är mycket tidskrävande.

 

 

Link to comment
Share on other sites

får det till resultat att hela datorn svarar dåligt eller inte alls

 

Jag märker inte av att det körs. Det tar upp den processortid som vänteprocessen skulle ha haft :)

 

Microsoft fördelar mycket resurser till det (singularis) program som är aktivt

 

Det aktiva programmet får mer resurser som standard (vilket jag personligen tycker är bra :), men, vill man så kan man ange att alla processer ska få lika mycket resurser.

 

Ciao,

Anders

 

Link to comment
Share on other sites

Frågan var nog mer i syfte att du ska visa din kunskap, det är ju inte direkt så att kommentaren "...vissa saker långsammare helt medvetet. Detta gäller exempelvis hanteringen av processer och trådar samt anropen till operativsystemet" tyder på att du har någon större förståelse för ämnet.

 

Om du lägger ett (1) program i en tight loop kommer det få all CPU. Vad annars? Det kan ju faktiskt vara så att det gör nyttiga beräkningar, finns inte en chans för schedulern att avgöra det.

 

Kör motsvarande program i exempelvis FreeBSD och programmet kommer inte att få använda mer processortid än något annat program
Vad? Påstår du att om jag gör ett program för att faktorisera stora tal och kör på FreeBSD, så kommer det inte inte ges mer tid än något annat program. Bullshit. Ingen vill ha ett sånt OS. Så länge det finns saker att göra ska dessa scheduleras, det spelar ingen roll vilket OS du pratar om.

 

Men fallet att köra 1 program är egentligen ganska ointressant. Kör du flera program som behöver mycket CPU, kommer dessa scheduleras lika.

 

Om du kör ett Windows klient-operativsystem (Windows 2000 Pro eller Windows XP Home/Pro) kommer interaktiva processers trådar lättare scheduleras i syfte att ge bättre responstid för användaren. Det är ett medvetet val som är positivt för normala användare. Jag antar att det är vad du egentligen menar. Du hävdar däremot att det är något negativt, vilket jag inte förstår.

 

På en Windows server är det inte sant, där scheduleras alla trådar lika. Vill du uppnå samma sak med en Windows klient, är det fullt möjligt att ändra från kontroll-panelen, prova om du vill.

 

Dessutom byter Microsoft process så sällan som möjligt eftersom varje byte är mycket tidskrävande
En tråd-switch är tidskrävande, det spelar ingen roll om det är trådar i samma process eller olika processer. För vilket operativsystem hävdar du att det är BRA att byta trådar ofta? En tråd-switch är ren overhead. Det optimala för hög prestanda är 1 process per dator, och 1 tråd per processor. Men det är orealistiskt att utvecklar för en sådan plattform. Därför har man infört processer och trådar. Men för hög prestanda gäller fortfarande att man som programmerare ska hålla ett lågt antal trådar inom sin process.

 

Microsoft.com visar nog inte särskilt mycket om hur scheduleringen fungerar, det finns utsökta böcker om det, bl a Windows 2000 Internals. Dina kommentarer avslöjar att du inte förstår hur schedulern i Windwows NT fungerar, läs boken och återkom.

 

Link to comment
Share on other sites

Ett program i FreeBSD ger endast mer tid än andra program ifall de andra programmen är inaktiva eller har lägre prioritet. Vill du verkligen att din webbserver ska sluta svara för att du kör ett program som faktoriserar stora heltal? I Unixliknande miljöer kan detta enbart ske ifall man ger processen högre prioritet än webbserver eller ifall webbservern har flaggat sig själv som inaktiv. I Windows börjar exempelvis min winamp att hacka när indexeringstjänsten sätter igång att rota i mina diskar. Eftersom indexeringstjänsten är en bakgrundsprocess som rimligen borde ha lägst prioritet, och winamp har högsta möjliga prioritet så undrar jag hur det kan komma sig.

 

”Om du kör ett Windows klient-operativsystem (Windows 2000 Pro eller Windows XP Home/Pro) kommer interaktiva processers trådar lättare scheduleras i syfte att ge bättre responstid för användaren. Det är ett medvetet val som är positivt för normala användare. Jag antar att det är vad du egentligen menar. Du hävdar däremot att det är något negativt, vilket jag inte förstår.”

 

detta samt att själva schedulern tar mindre cpu genom att låta programmen köra fler steps innan de avbryts, av samma anledning.

 

Jag menar även att context switching i Windows har mindre rigorösa säkerhetskontroller i Windows, även detta för att spara cpu. Visserligen kan man hävda att en del kontroller som olika andra operativ utför täpper till stabilitetsproblem som bara är teoretiska.

 

En tråd är definierad som en process som ägs av en annan process och delar samma context som sin ägare. Att byta tråd går därmed fortare än att byta mellan suveräna processer eftersom man inte byter context när man byter process.

 

I många Unixvarianter saknas trådar helt och emuleras genom processer som delar samma minne vilket är en relativt tidskrävande process.

 

Trådar är visserligen en overhead i dagens system, men för att t.ex. utföra asynkron IO är de helt nödvändiga.

 

Hur många trådar man ska ha i sin process beror väl på hur mycket processorkraft man behöver. Ifall man skriver program för multiprocessorsystem som kräver mycket systemresurser är ju trådning nödvändigt för att fördela resurser mellan processorerna, så länge man inte klustrar på applikationsnivå.

 

Vad som är positivt eller negativt beror på vad man ska göra. Att Windows är optimerat för spel och andra interaktiva program är ju ingen nackdel om det är sådana man ska köra. Det är visserligen fullt möjligt att få Unix att prioritera det program som är aktivt för tillfället, ifall man skulle se det som nödvändigt.

 

Inget av detta säger däremot speciellt mycket av operativsystemens framtid, allt tyder idag på att de här funktionerna kommer att hanteras av processorerna i framtiden. Det är helt orimligt att fortsätta bygga processorer efter en modell som bygger på att man bara kör ett program.

 

Att byta processer ofta är bra om man har ett stort antal processer igång. För tillfället har jag 120 aktiva processer igång på min Linuxserver vilket på 700 MHz (AMD Duron.). Jag har aldrig under tre år som den har stått på och startats om för att meka med hårdvaran högst tio gånger varit med om att den börjat gå långsamt, hängt sig eller att någon av serverprocesserna dröjt med att svara. Svarstiden är ganska viktig för en server. Ännu viktigare är processernas svarstid när man skall styra utrustning, t.ex. en robotarm, utanför datorn. Ifall processen som styr robotarmen inte är aktiv när den ska byta rörelse är det ju inte svårt att räkna ut att den robotarmen inte kommer att utföra sin uppgift rätt på något sätt.

 

En tillämpning som stött på stora problem med Windows sätt att hantera trådar är Unreal, följande stycke är klippt och klistrat från manualen till UnrealScript.

 

In traditional programming terms, UnrealScript acts as if each actor in a level has its own "thread" of execution. Internally, Unreal does not use Windows threads, because that would be very inefficient (Windows 95 and Windows NT do not handle thousands of simultaneous threads efficiently). Instead, UnrealScript simulates threads. This fact is transparent to UnrealScript code, but becomes very apparent when you write C++ code which interacts with UnrealScript.

 

All UnrealScripts execute in parallel. If there are 100 monsters walking around in a level, all 100 of those monsters' scripts are executing simultaneously and independently.

 

Personligen tycker jag att inget operativsystem för persondatorer hanterar trådar på ett bra sätt. Jag ser ingen större anledning till att sköta trådar utanför libbarna så länge man inte har flera processorer att fördela dem på, eller behöver asynkron IO. I ett system med många processorer gäller givetvis det omvända. Eftersom Linux numera har stöd för asynkron IO i kernel så finns det därmed inte den anledningen i Linux längre. Vad libbarna gör har ifs inget med operativsystemets prestanda och stabilitet att göra, det är ju inte ett måste för programmen att använda just de libbar som följer med Windows. Dock så tror jag mer på att anpassa datorerna till att vi faktiskt gör mer än en sak åt gången än att anpassa libbarna efter de nuvarande systemen. HyperThreading är ett bra steg på vägen i en sådan anpassning, och ett lagom stort steg från dagens system. Tar man för stora steg riskerar man att göra misstag som är svåra att reparera i efterhand, det är svårt att ändra på en krets när den väl är etsad…

 

Eftersom vad mycket av Windows gör är svårt att veta utan källkod så finns det egentligen bara ett sätt att ta reda på vilka prestandaskillnader som finns: att sätta upp flera identiska datorer med olika operativsystem, men i övrigt samma programvara och köra stresstester. Det skulle visserligen vara intressant att köra ett sådant test men jag har varken råd att köpa utrustningen eller tid att göra själva testerna.

 

En stor uppenbar nackdel för Windows är att man alltid måste köra det grafiska användargränssnittet, när det gäller servrar är detta onödigt och tar upp ganska mycket systemresurser.

 

För övrigt så är det skillnad på hur det står i någon bok om hur schedulern fungerar och hur den fungerar i praktiken. Jag tvivlar på att det finns något sätt att exempelvis få reda på hur många steps den utför mellan byten utan att disassemblera den eller köra den i en debugger. Båda metoderna är olagliga. Dessutom så är det sannolikt även stor skillnad på hur olika versioner funkar.

 

Här är några länkat till tester som utförts av andra:

http://www.matrixlist.com/pipermail/pc_support/2001-December/000404.html

http://www.tomshardware.com/howto/02q2/020531/windows_gaming-04.html

http://www-106.ibm.com/developerworks/library/l-rt1/

Den intressantaste av dessa är den som visar att en IIS-liknande webbserver presterar mer en tre gånger bättre i Linux än Windows+IIS, det skulle dock vara intressant att veta hur testen genomförts och med vilka versioner av programmen man testat. Att tcp/ip funkar bättre i Linux än i Windows står utom allt rimligt tvivel, men enbart detta är inte nog för tre gånger bättre prestanda.

 

 

Link to comment
Share on other sites

Det enda jag kan reagera på är detta:

Eftersom indexeringstjänsten är en bakgrundsprocess som rimligen borde ha lägst prioritet, och winamp har högsta möjliga prioritet så undrar jag hur det kan komma sig.

..vilket är något jag aldrig upplevt, ens på en extremt underspecificerad windowsdator - låter som du har problem med disksystemet helt enkelt ;)

 

Sedan förstår jag inte hur ett inaktivt GUI på en windowsserver skulle påverka prestandan negativt, såvida det inte sitter en unge framför servern och leker med det konstant...

 

--

.Wey

 

..I’m the king of all time, nothing is impossible in my all powerful mind.

 

Link to comment
Share on other sites

Det är inget fel på diskarna, däremot har jag inte så snabb processor. Problemet uppstår bara när cpu-användningen kommer upp i 99 % men poängen är att det inte ska hända alls.

 

Givetvis tar inaktivt GUI upp mindre resurser än om man använder det. Men för det första tar det upp en hel del minne att ha programmen som sköter grafiken laddade. Dessutom består det av en hel del trådar som ligger igång och väntar på att de ska göra ngt. Ska jag sätta upp en Linuxserver så klarar jag mig med under 64 mb ram och har då rätt god marginal. Den största anledningen att det inte går med Windows är just att man inte kan välja bort grafiken. dessutom behöver man ha ett grafikkort för att köra Windows, vilket i sig sölar ner datorn.

 

Möjligen kan man påstå att resursanvändningen for ett inaktivt GUI är försumbart, vilket inte är samma sak som ett det inte påverkar prestandan negativt.

 

 

Link to comment
Share on other sites

Men för det första tar det upp en hel del minne att ha programmen som sköter grafiken laddade.

 

Nja, det är juh en 'försumbar' mängd minne, och om guit inte är aktivt kommer det minne som det tar upp hursomhelst att swappas ut till disk förr eller senare om systemet behöver minne till annat...

 

Dessutom består det av en hel del trådar som ligger igång och väntar på att de ska göra ngt.

 

Vilket inte borde ta upp några resurser att tala om i ett modernt operativsystem, åtminstone inte procentuellt sett. NT är juh ett eventdrivet system, så en sovande tråd som inte väcks påverkar väl inte systemets prestanda?

 

Nu är jag total nybörjare på operativsystem, men det verkar i alla fall logiskt.

 

Och om något är försumbart så bör det vara samma sak som att det inte påverkar någonting åt något håll till den grad att det märks. Om det inte märks, påverkar det inte prestandan ;)

 

.wey

 

Link to comment
Share on other sites

En tråd som är idle tar inte upp mer prestanda än den extra tid det tar att gå igenom listan med processer schedulern går igenom samt hanteringen av allokerat minne. problemet är nu snarare att alla trådar inte är idle. varför vet jag inte men flera av trådarna är inte idle.

 

Dessutom tycker jag inte att över 40 mb minne är en försumbar mängd. 2-3 % CPU - användning tycker jag inte heller är försumbart. Men många delar som sagt var inte den uppfattningen. Det är ungefär lika mycket som används totalt i min Linuxserver med samtliga serverprocesser igång.

 

Link to comment
Share on other sites

Jag har inget intresse av att visa att någon viss plattform eller något visst operativsystem är snabbare än ett annat, men när du påstår att NT är dåligt jämfört med ett *nix-baserat system hävdar jag att du har fel. Någon med god förståelse för *nix, ingen kunskap om NT och som dessutom inte vill lära sig något om NT utan får sin kunskap från slashdot.org kommer troligen alltid tycka illa om NT baserat på ett religiöst beslut. Du väljer själv huruvida du vill förstå NT eller inte - ingen tvingar dig att använda NT bara för att du lär dig hur det fungerar. Men skriv helst inte felaktigheter om något du inte är påläst om.

 

Min erfarenhet är mestadels baserad på NT-plattformar, men det finns fall då jag är med i system som helt eller delvis körs i *nix miljö. Jag hävdar att man kan skriva bra applikationer på både dessa typer av system. I vilket fall är min uppfattning att plattformen/operativsystemet har en mycket mindre betydelse än de applikationer man kör. En dåligt skriven applikation på Linux är sämre än en bra skriven applikation på NT och vice versa. Väljer man att inte veta något om det man jobbar med och inte kan verktygen - ja, då blir resultatet därefter. Jag tycker det är viktigt att betänka när man läser att A är 3 gånger snabbare än B eller att C är 28 gånger snabbare än D.

 

 

Det finns flera exempel på felaktigheter i dina inlägg. Varför läser du inte på hur NT fungerar istället för att skriva pinsamma felaktigheter? Jag vill tipsa om Mark Russinovichs genomgång av NTs scheduler i dessa två artiklar. Helt gratis läsning :)

 

- http://www.winntmag.com/Articles/Print.cfm?ArticleID=302

- http://www.winntmag.com/Articles/Print.cfm?ArticleID=303

 

Dessa är för Windows 2000, men skillnaden är principellt inte särskilt stor till Windows XP. Det har införts en ny typ av lås för kernelmode för att minska kostnaden av låsning och för att öka skalbarhet över flera CPUer, transitionen mellan kernel/user går snabbare i XP, man har dessutom optimerat bort lås kring minnespoolerna som fanns i kärnan i syfte att öka skalbarhet för flera processorer (se MSDN magazine december 2001).

 

Som exempel på okunskap skriver du att man behöver många trådar för att åstadkomma asynkron I/O. Så är inte fallet i NT, det är klart i strid med design guidelines. Istället använder man en teknik som heter I/O completion ports (påminner lite om non-blocking i/o i Java), då man istället använder (ungefär) två trådar per processor i datorn och köar upp de asynkrona jobben. Om man inte läser design-rekommendationer för NT, utan kodar naivt med många trådar, får man dålig prestanda. Skriver man rätt, med I/O completion ports, får man bra prestanda.

 

Läs mer om I/O completion ports här:

- http://msdn.microsoft.com/library/en-us/fileio/base/i_o_completion_ports.asp

- http://msdn.microsoft.com/msdnmag/issues/1000/winsock/default.aspx

 

Det här betyder att ett program optimerat för Linux och som utnyttjar många trådar kommer ge sämre eller rentav dålig prestanda på ett NT system om man portar rätt av. Följer man rekommendationerna (finns ganska mycket att läsa på MSDN) och använder I/O completion ports blir prestanda bra.

 

Men jag undrar om du verkligen vill skapa en tråd per klient ens i *nix miljö. Antag att du vill göra en streamande server och vill tjäna 1000 samtidiga klienter. Du kommer då att ha 1000 trådar aktiva. Förmodligen har du 1 MB stack per tråd som default. De tinnebär 1GB virtuellt minne i bara stackutrymmen. Jag kan ha fel, men har inte många Linux-distar endast 1 GB virtuellt minne att tillgå? Asynkrona (non-blocking) sockets är nog inte så dumt ändå...

 

 

Lite kommentarer på ditt inlägg.

 

Vill du verkligen att din webbserver ska sluta svara för att du kör ett program som faktoriserar stora heltal?
Du drar en helt felaktig slutsats av mina påståenden. Om du har en webserver (IIS, Apache eller någon annan) i NT och samtidigt faktoriserar stora tal, kommer dessa prioriteras rättvist i NT. Du kan explicit ändra dessa prioriteter om du vill att webservern ska svara snabbare och låta faktoriseringsprogrammet prioriteras lägre. Operativsystemet (NT, FreeBSD eller något annat) vet inte vilken typ av arbete en process utför.

 

I Windows börjar exempelvis min winamp att hacka när indexeringstjänsten sätter igång att rota i mina diskar. Eftersom indexeringstjänsten är en bakgrundsprocess som rimligen borde ha lägst prioritet, och winamp har högsta möjliga prioritet så undrar jag hur det kan komma sig.
Alla service-processer körs normalt med prioritetsklass "Normal", så även Index-servicen. Om winamp hackar beror det troligen inte på brist på CPU, utan snarare på att diskarna stallar. Jag använder dock inte index-servicen själv och kan inte mer än gissa vad som orsakar problemen. Kanske gör den höga priotetsklassen på winamp att index servern inte får CPU när den har I/O att läsa från bussen, och genom att bussen låses långa stunder får inte winamp data - en slags svältning där winamp inte får i/o och index servern inte får CPU. Men det är bara en gissning från min sida. Jag skulle iallafall rekommendera att du ger winamp prioritetklass "Normal", vilket underlättar livet för index-servicen. Kanske har du heller inte nytta av index-servicen och kan stänga av den. Om problemet kvarstår föreslår jag att du ställer en fråga in Windows-forumet, så kanske någon kan hjälpa dig.

 

Jag menar även att context switching i Windows har mindre rigorösa säkerhetskontroller i Windows, även detta för att spara cpu. Visserligen kan man hävda att en del kontroller som olika andra operativ utför täpper till stabilitetsproblem som bara är teoretiska.
En context-switch i NT gör överhuvudtaget inga "säkerhetskontroller". Inför en context-switch ska göras väljer dispatchern i kärnan väljer ut vilken tråd som ska scheduleras in, sparar aktiva trådens state, hämtar nästa tråds state, och återuptar exekvering för nästa tråd. Som du förstår är detta inte helt gratis, och man vill hålla antal context-switchar nere. Därför man har ett relativt långt tidskvantum och därför ger det bättre prestanda genom mindre overhead då man låter trådar köra länge och sällan.

 

Vad som är positivt eller negativt beror på vad man ska göra. Att Windows är optimerat för spel och andra interaktiva program...
NT är inte "optimerat för spel", utan det är något man väljer att programmera för. De flesta gui-applikationer har en passiv mekanism för grafiken, vilket innebär att de väntar på att event ska hända. Ett spel däremot använder en aktiv mekanism där man lägger sig i en busy-wait loop och pollar efter meddelanden.

 

Att byta processer ofta är bra om man har ett stort antal processer igång... Ännu viktigare är processernas svarstid
Med andra ord, det är en avvägning prestanda/responstid beträffande hur ofta man ska göra tråd/process-switchar.

 

Personligen tycker jag att inget operativsystem för persondatorer hanterar trådar på ett bra sätt.
Hur tycker du det borde fungera?

 

Jag ser ingen större anledning till att sköta trådar utanför libbarna så länge man inte har flera processorer att fördela dem på, eller behöver asynkron IO. I ett system med många processorer gäller givetvis det omvända. Eftersom Linux numera har stöd för asynkron IO i kernel så finns det därmed inte den anledningen i Linux längre. Vad libbarna gör har ifs inget med operativsystemets prestanda och stabilitet att göra, det är ju inte ett måste för programmen att använda just de libbar som följer med Windows. Dock så tror jag mer på att anpassa datorerna till att vi faktiskt gör mer än en sak åt gången än att anpassa libbarna efter de nuvarande systemen. HyperThreading är ett bra steg på vägen i en sådan anpassning, och ett lagom stort steg från dagens system. Tar man för stora steg riskerar man att göra misstag som är svåra att reparera i efterhand, det är svårt att ändra på en krets när den väl är etsad…
Eh... Jaha.

 

...flera identiska datorer med olika operativsystem, men i övrigt samma programvara och köra stresstester...
Jag antar att du menar prestandatester och inte stresstester (eftersom stresstester används för att påvisa stabilitet och inte säger något om prestanda). Precis som jag sa, om du skriver ditt program optimerat för *nix trådmodell kommer det gå bra på en *nix plattform, men dåligt på NT. Tycker du det är ett bra test?

 

Det är i min mening en nackdel att man inte bara kan ta ett unix-projekt och köra under NT, det går inte att därför göra kopplingen att NT är dåligt. Rätt skrivna applikationer ger bra prestanda och det gäller både *nix och NT. Precis som att dåligt skrivna program ger dålig prestanda.

 

En stor uppenbar nackdel för Windows är att man alltid måste köra det grafiska användargränssnittet, när det gäller servrar är detta onödigt och tar upp ganska mycket systemresurser
En "tråd med grafik" har samma scheduleringsintervall som vilken annan tråd som helst på en NT server (på en klient kommer den "boostas" för att ge snabbare respons till användaren). Om du inte använder det grafiska gränssnittet finns bara en process som visar ett login-fönster. Eftersom tråden som visar fönstret är idle, kommer den inte ta någon CPU-tid alls. För mig är det inte uppenbart hur den tar upp "ganska mycket systemresurser". Man kan administrera allting som finns i grafiska gränssnittsverktygen i NT med WMI. Dock föredrar många den grafiska varianten. Hävdar du att rita ut fönstren i administrationsverktygen tar "ganska mycket systemresurser"?

 

För övrigt så är det skillnad på hur det står i någon bok om hur schedulern fungerar och hur den fungerar i praktiken. Jag tvivlar på att det finns något sätt att exempelvis få reda på hur många steps den utför mellan byten utan att disassemblera den eller köra den i en debugger.
Tro och tvivla gör man i kyrkan. Jag föreslår att du läser boken jag rekommenderade om du är intresserad av fakta, David Solomon and Mark Russinovich är två av de större namnen när det gäller att skaffa sig kunskap om NT. Du hittar även många av deras artiklar på http://www.sysinternals.com

 

Att tcp/ip funkar bättre i Linux än i Windows står utom allt rimligt tvivel...
Jag har hört de som tycker att NTs TCP/IP stack är tagen från FreeBSD, men att TCP/IP fungerar på ett annorlunde sätt i Linux än i NT kände jag inte till.

 

Link to comment
Share on other sites

Det roligaste i hela tråden är att jag faktiskt hänger med på allt developer skriver, trots att jag bara fått de första föreläsningarna i kursen 'operativsystem' =D (som för övrigt hanterar os-nära programmering för nt och unix)

 

Jag rekommenderar dessutom boken som tillhör då jag finner den väldigt lättläst och hyfsat djupgående och modern: Modern Operating Systems, av en nisse som typ heter något i stil med Tannenbaum om jag inte minns fel ;)

 

--

.Wey

 

..I’m the king of all time, nothing is impossible in my all powerful mind.

 

Link to comment
Share on other sites

Micke Hansson

det stämmer faktiskt det han säger.

Mång sidor har som krav att man skall ha IE 5 för att komma in. Jag själv använder OmniWeb eller Chimera för OSX och har ständigt IE5 Windows emulering i kryssat

 

Link to comment
Share on other sites

Tannenbaum .. åhhh .. denna guru =)

 

Jag har en bok med honom hemma .. han inkluderade hela Minix-koden i boken ..

 

Tannembaums lilla röda =)

 

 

 

Link to comment
Share on other sites

Såpass :)

 

...tja, boken är lite partisk mot unixvärlden, men senaste upplagan tar med win2k på ett ganska positivt sätt.

 

Själv är jag mest fascinerad över att ett ämne som ändå är såpass komplext blir väldigt intressant och tja, faktiskt roligt att lära sig om genom den här boken. Vad som gör det, språket, faktan eller filosoferandet, det vete tusan, men något visst är det med den... :)

 

--

.Wey

 

..I’m the king of all time, nothing is impossible in my all powerful mind.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...