mandag den 15. marts 2010

"Operating Systems, 3rd.ed.", Gary Nutt - 2. Using the Operating System

(p.43):

1. Hvordan kan man sammenligne et cockpit med en abstrakt maskine?

Fordi det kan benytte de fysiske komponenter i flyveren til at forstælle piloten om fart, højde osv.

2. Hvorfor er et cockpits instrumenter mere komplicerede end dem man finder i en bil?

Fordi det kan benytte de fysiske komponenter i flyveren til at forstælle piloten om fart, højde osv. modsat bilen hvor man kun skal koncentrere sig om at styre, give gas og bremse.

3. Hvad er det for en balance man skal finde når man laver en anstrakt maskine?

Man skal minimere behovet for detaljeret viden samtidig med at man skal optimere muligheden for konkurrente processer.

(p.44):

4. Hvad er sekventiel udførelse, og hvordan kan fravige dette?

At en instruktion bliver udført af gangen i en bestemt given rækkefølge. Afvigelser kan ske ved brug af if-then-else sætninger eller løkker.

(p.45):

5. Hvad er det man populært kalder: "the binary"?

En repræsentation af algoritmer der direkte kan udføres af hardwaren.

Det er den oversatte kode, som kan bruges direkte i maskinen.

6. Hvordan skal man som programmør forholde sig til at en computer udfører flere programmer samtidigt?

Det skal man ikke. Man skal bare vide det. OS'et sørger for at resourcerne bliver fordelt.

(p.46):

7. Hvad er et flertrådet program? (figur 2.3)

At to eller flere af det samme program arbejder på de samme data, samtidigt.

8. Hvad betyder "kloning" i den sammenhæng?

At de to eller flere programmer som kører er identiske.

(p.47):

9. Bliver tråde håndteret af operativsystemet?

Nej, de bliver håndteret af f.eks. JVM.

Senere hen er det dog kommet at OS’en selv kan.

10. Hvad er resourcer i relation til et program?

Alle fysiske og logiske enheder i den abstrakte maskine som programmet har brug for.

Hvad der er behov for, for at et program kan blive udført.

11. Hvad sker der med en proces når den requester en resource?

Den bliver smidt i en kø og venter på at denne resource er til rådighed.

12. Hvad specielt er der i den forbindelse med processeren og arbejdslageret som resourcer?

En proces requester implicit processoren og memory, hvor alle andre resourcer requestes eksplicit.

13. Hvad er den mest almindelige resource man explicit requester?

En fil.

(p.48):

14. Hvordan frigiver man en file resource man er færdig med at bruge?

Med et close() kald.

15. Bruges file abstraktionen kun til filer?

Nej, den bruges også til mange andre ting.

(p.52):

16. Hvad sker der hvis man requester en resource der ikke er ledig?

Processen suspenderes normalt indtil resourcen bliver ledig.

17. Hvad består en proces af?

Et binært program, data som programmet udføres på og resourcer (herunder filer).

(p.53):

18. Hvad er forskellen på en klassisk og en moderne proces?

Klassisk: Kun én execution engine pr. proces. (kun en tråd)

Moderne: Trådet - en proces kan bruge flere engines. (flere tråde)

19. Hvad er trådene i en proces fælles om?

Trådens data er private og dens status er unique.

De er fælles om det processen har.

(p.54):

20. Hvornår begyndte operativsystemer at understøtte moderne processer?

Sidst i 1990'erne.

21. Hvad var de motiverende faktorer bag flertrådede processer?

At kunne lave en simpel OS abstraction hvor flere indgange kunne udføre det samme program ved brug at de samme filer og hardware.

Grafisk brugergrænseflade kom frem.

Flere tråde server skulle kunne virke.

(p.55):

22. Hvordan lavede man sine egne tråde før tråde blev understøttet af operativsystemer, og hvilke problemer gav det?

Man brugte en single classic proces til at lave en illusion af multithreading.

Hvis en tråd requster en ressource der allerede bruges kan hele programmet blive blokeret

23. Hvad gjorde den FORK-funktion som Conway opfandt??

Lavede en ny proces som udfører det samme program ud fra en given parameter.

(p.57):

24. Hvornår begyndte processer at ligne rigtige processer (og ikke tråde, som de faktisk lignede i starten)?

1970.

(p.58):

25. Hvad er den simpleste måde at lave en ny proces på?

Ved at kopiere en allerede eksisterende.

26. Hvad er base tråden (også kaldet main tråden)?

En tråd der er nødvendig for at resten af processen kan udføres. Det er den der starter alle de andre tråde op.

I klassisk proces er det den eneste tråd der er.

27. Hvad er en Unix proces opdelt i?

Text – den binære kode

Data – de data som programmet skal bruge

Stack – det man bruger til at lave metode kald og lokale variabler

(p.59):

28. Hvad er text segmentet?

Den indeholde de komplilerede binære instruktioner.

29. Hvad er pid?

Proces identifier.

(p.60):

30. Hvad sker der ved et kald af fork i UNIX? Og hvad returnerer fork?

Der laves en child af parent processen med sine egne kopier af text, data og stack.

fork() returnerer PID for child processen.

(p.61):

31. Hvad kan wait og waitpid bruges til?

Til at oplyse en parent proces om terminering af en child proces.

(p.65):

32. Hvilken funktionen bruges i Win32 API'en til at lave processer?

CreateProcess().

(p.72):

33. Hvilket programmeringssprog var det første der havde klasse-begrebet? Og hvornår kom det frem?

I Simula 67 i 1967.

(p.73):

34. Hvor slog objektbegrebet først igennem?

User interface systemer.

35. Hvad hed Sun's forsøg på at lave et objektorienteret operativsystem? Hvorfor slog det ikke igennem?

The Sun Spring OS. Det kunne ikke levere høj nok performance.

Ingen kommentarer:

Send en kommentar