mandag den 23. august 2010
CNDS Notater
Hvad er Kendt?
Problemformulering
Hvad er Nødvendigt?
Mulige Tiltag
Analyser indsamlede oplysninger
Nuværende resultater
tirsdag den 13. april 2010
Chain-of-Responsibility design pattern notes
Changing to the code to optimize and improve nonfunctional code in order to make the code easier to read and maintain.
___________________________________________________
CoR :
Chain of responsibility is a designpattern where chains of objects have the responsibility to try to solve the problem or send the request on to the next object in the chain.
If the object can solve the problem it will, and then return it back to the beginning of the chain. If it cant it will send it to the next object to see if that one can solve the problem.
There is no garanty that any of the objects will be able to solve the problem, they can all choose to just pass it on to the next object
___________________________________________________
Decorator Pattern (From Docjava)
Decorator Pattern kan ses som en variant af CoR Pattern. Idéen i Decorator Pattern er at man nemt kan udvide med nye GUI lag, af komponenter der både kan bidrage grafisk og funktionelt. Hver af objekterne i listen afgør om de vil håndtere requesten ud fra om de områdemæssigt er ramt af et muse-klik.
___________________________________________________
Composite Pattern (From Docjava)
CoR Pattern kan ses som en slags en-dimensionelt Composite Pattern.
Composite Pattern i den forstand, at der er tale om en Composite, der foregiver at kunne løse opgaven, selv om den i virkeligheden er hovedet i en linket liste; hvis hale's hoved ligeledes foregiver at kunne løse problemet - osv. rekursivt gennem den linkede liste.
onsdag den 24. marts 2010
Glossary - Nutt
In Computing Turnaround time is the total time taken between the submission of a program for execution and the return of the complete output to the customer.
___________________________________________
FCFS
First-come, first-served (sometimes first-in, first-served; first-come, first choice; or simply FCFS) is a service policy whereby the requests of customers or clients are attended to in the order that they arrived, without other biases or preferences.
___________________________________________
Gantt chart
A Gantt chart is a type of bar chart that illustrates a project schedule. Gantt charts illustrate the start and finish dates of the terminal elements and summary elements of a project. Terminal elements and summary elements comprise the work breakdown structure of the project. Some Gantt charts also show the dependency (i.e, precedence network) relationships between activities.

SJN - Shortest Job Next(Shortest Job First)
Shortest job next is a scheduling policy that selects the waiting process with the smallest execution time to execute next.
Shortest job next is advantageous because of its simplicity and because it maximizes process throughput (in terms of the number of processes run to completion in a given amount of time). It also minimizes the average amount of time each process has to wait until its execution is complete. However, it has the potential for process starvation for processes which will require a long time to complete if short processes are continually added. Highest response ratio next is similar but provides a solution to this problem.
Shortest job next scheduling is rarely used outside of specialized environments because it requires accurate estimations of the runtime of all processes that are waiting to execute.
___________________________________________Scheduling
Scheduling refers to the way processes are assigned to run on the available CPUs, since there are typically many more processes running than there are available CPUs. This assignment is carried out by softwares known as a scheduler and dispatcher.
The scheduler is concerned mainly with:
- CPU utilization - to keep the CPU as busy as possible.
- Throughput - number of processes that complete their execution per time unit.
- Turnaround - total time between submission of a process and its completion.
- Waiting time - amount of time a process has been waiting in the ready queue.
- Response time - amount of time it takes from when a request was submitted until the first response is produced.
- Fairness - Equal CPU time to each thread.
RR - Round Robin
The scheduler assigns a fixed time unit per process, and cycles through them.
- RR scheduling involves extensive overhead, especially with a small time unit.
- Balanced throughput between FCFS and SJN, shorter jobs are completed faster than in FCFS and longer processes are completed faster than in SJN.
- Fastest average response time, waiting time is dependent on number of processes, and not average process length.
- Because of high waiting times, deadlines are rarely met in a pure RR system.
- Starvation can never occur, since no priority is given. Order of time unit allocation is based upon process arrival time, similar to FCFS.
Designpatterns
Singleton Pattern
"In software engineering, the singleton pattern is a design pattern that is used to restrict instantiation of a class to one object (an implementation of the mathematical concept of singleton). This is useful when exactly one object is needed to coordinate actions across the system. The concept is sometimes generalized to systems that operate more efficiently when only one object exists, or that restrict the instantiation to a certain number of objects (say, five). Some consider it an anti-pattern, judging that it is overused, introduces unnecessary limitations in situations where a sole instance of a class is not actually required, and introduces global state into an application."
public class Singleton {
// Private constructor that prevents automatic creation of a public
private Singleton() {}
private static class SingletonHolder {
private static Singleton instance = new Singleton();
}public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
______________________________________________
Facade Pattern
The facade pattern is a software engineering design pattern commonly used with Object-oriented programming. (The name is by analogy to an architectural facade.)
A facade is an object that provides a simplified interface to a larger body of code, such as a class library. A facade can:
- make a software library easier to use and understand, since the facade has convenient methods for common tasks;
- make code that uses the library more readable, for the same reason;
- reduce dependencies of outside code on the inner workings of a library, since most code uses the facade, thus allowing more flexibility in developing the system;
- wrap a poorly-designed collection of APIs with a single well-designed API (as per task needs).
An Adapter is used when the wrapper must respect a particular interface and must support a polymorphic behavior. On the other hand, a facade is used when one wants an easier or simpler interface to work with.
______________________________________________
Mediator Pattern
(Example in the link)
- Partition a system into pieces or small objects.
- Centralize control to manipulate participating objects(a.k.a colleagues)
- Clarify the complex relationship by providing a board committee.
- Limit subclasses.
- Improve objects reusabilities.
- Simplify object protocols.
- The relationship between the control class and other participating classes is multidirectional.
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.
fredag den 12. marts 2010
"Operating Systems, 3rd.ed.", Gary Nutt - 1. Introduction
(p.1):
1. Hvilke to egenskaber ved et operativsystem er afgørende for dets anvendelighed?
Det skal være effektivt, og funktionalitet
(p.2):
2. Hvad er det mest kritiske stykke software i en computer?
Operativ systemet – alt er afhængig af det
(p.3):
3. Hvilke to elementer består computeren af?
Den består af hardware og software
4. Hvori består en computers værdi?
Man køber den til at læse et problem (i en virksomhed) – evne til at gøre det er dens værdi
Både software og hardware er en del af dens værdi
(p.4):
5. Hvad er system-software?
Operativ systemet, driver og programmeringsværktøjer
(Ikke applikationer - en applikation er et program der kun kan kører under et operativsystem)
6. Er et operativsystem også system-software?
Ja, det er system-software
7. Hvordan bør ressourcefordelingen være mellem system-softwaren og applikationerne?
System-software skal helst ikke bruge nogen ressourcer, alle skal gerne gå til applikationerne
8. Hvad var det oprindeligt der motiverede til, at man lavede system-software?
Behovet for at kunne kører og udvikle programmer nemmere.
9. Hvad er det operativsystemet administrerer?
Skal administrerer de ressourcer hardware stiller til rådighed
10. Hvad er det for to grænseflader system-softwaren laver?
En brugergrænseflade til brugeren, og en grænseflade til applikationerne
(p.5):
11. Hvad er en API?
Det er den grænseflade som applikationerne har til system-softwaren
12. Hvad er Java og C#'s API? (står ikke i teksten)
Den mænge klasser der er oprette i forvejen, interfaces, som vi importere fra (bruges fx til GUI, netværk osv.)
(p.6):
13. Hvordan starter man command line interpreteren i Windows? (står ikke i teksten)
Tekstbaseret program (fx cmd.exe)
14. Hvad er en DBMS?
En databaseserver, og det er system-software som vores applikation benytter
15. Hvad definerer applikations-domænet for en computer?
Man kan begrænse et applikations-domæne ved at sætte computeren til kun at løse et eller flere givende problemer (fx på biblioteket er opsat computer kun til søgning på bøger)
(p.7):
16. Hvad adskiller operativsystemet fra den øvrige system-software?
OS – det tilgår hardwaren
OS – det er domæne uafhængig
Hvis andet system-software skal tilgå det, skal det gå igennem operativsystemet
17. Hvad gør system-software i forhold til detaljerne i at anvende diverse former for hardware?
Den skjuler dem, system-software skjuler detaljerne.
18. Hvilke begrænsninger ligger der i at arbejde med abstraktioner over hardware?
Man behøver ikke at bekymre sig om detaljerne hvor data’ene bliver gemt osv.
Ulempen er at man ikke kan bekymre sig om detaljerne, man kan ikke tilgå det direkte.
(p.8):
19. Hvilke fordele er der ved at anvende en abstraktion over hardware?
Man behøver ikke at bekymre sig om detaljerne hvor data’ene bliver gemt osv.
Ulempen er at man ikke kan bekymre sig om detaljerne, man kan ikke tilgå det direkte.
20. Hvad vil det sige at to former for hardware har den samme abstraktion?
Når vi anvender dem kan vi ikke se forskel på dem (fx om harddisken er WD, Maxtor, Seagate).
21. Hvad kendetegner forskellen på en god og en dårlig abstraktion?
Gode abstraktioner gør det nemmere at programmer. Programmeringsvenlig.
(p.9):
22. Hvad er abstrakte ressourcer?
En abstrakt ressource er en ressource vi simulere vha. en fil – filen er en rigtig ressource
(p.11):
23. Hvordan opnår computere at give det indtryk at de laver ting samtidig?
Den deler det hele op i små bider, også arbejder den hurtigt mellem dem.
24. Hvad er forskellen på concurrency og parallelisme?
Concurrency: Når tingene sker samtidig eller ser ud til at ske samtidig (fx en cpu)
Parallelisme: Når tingene reelt set sker samtidig (fx dual cpu)
25. Hvad er transparent ressourcedeling?
Det er ressourcedeling som man ikke opdager (fx hvis to programmer deler om ressourcerne uden at vide det)
26. Hvad er eksplicit ressourcedeling?
Når man er bevidst om at man arbejder med en ressource, og hvordan ressourcen skal deles.
27. Hvordan oplever applikationer computeren, når de arbejder med en abstrakt maskine?
Applikationer oplever det som de har en computer, og kun de burger computeren. Operativsystemet sørger for at skabe den illusion over for applikationer, at de er den eneste der bruger computeren.
28. Hvad er en proces?
En applikation under udførelse – en applikation der kører i øjeblikket.
(p.12):
29. Hvordan kan et operativsystem lave en abstrakt maskine?
Ved at simulere en computer.
30. Hvad er (a) plads-multiplexing og (b) tids-multiplexing?
Plads-multiplexing: At man opdeler ressoursen – den deles op i stykker (fx bus/tog – mange på en gang)
Tids-multiplexing: Den deles ikke op i stykker, men man skiftes til at bruge den (fx taxa – den skifter kunder)
(p.13):
31. Hvilken form for multiplexing anvendes i forbindelse med (a) memory og (b) processoren?
Memory: Plads- multiplexing
Processoren: Tids- multiplexing
32. Hvad er en time-slice?
Den tid en proces får lov at køre på processoren ad gange.
33. Hvad er multi-programmering?
Når man programmer så der kan kører flere programmer på en gang.
(p.14):
34. Kan multi-programmering forbedre performance for en proces? (figur 1.7)
Nej det kan ikke forbedre performance for en proces.
(p.15):
35. Hvilken egenskab ved I/O kan udnyttes til at opnå parallelisme? (figur 1.8)
I/O operationer skal ud på bussen og videre rundt, så det er de langsomme processer. Der er lang ventetid, og i den ventetid kan andre processer udføres, så her opnås parallelisme.
(p.16):
36. Hvorfor skal systemet være i stand til at isolere resource-adgangen? Og hvorfor er det så vigtigt?
Sikre at operativsystemet, aggregere ressourcerne. Ingen kan tage ressourcerne uden at spørge operativsystemet. Ellers kan den ikke skabe den illusion at der en computer til hver applikation.
(p.17):
37. Hvad er trusted software?
Kerne i et operativsystem er trusted software. Det er software skal virke for at systemet kan fungere. Det skal virke for at operativsystemet kan fungere.
(p.18):
38. Hvad menes der med "strategi" for operativsystemer?
Hvilke abstrakte maskiner stilles der til rådighed – hvilken computer lader vi som om der er til rådighed overfor applikationen.
(p.19):
39. Hvorfor var operativsystemet ikke så værentligt i starten?
I starten afviklede man et program, lukkede det og afviklede et nyt – man kørte kun et program ad gangen. Derfor var det ikke så væsentligt for et operativsystem.
40. Hvornår begyndte man at lave operativsystemer?
Omkring 1960
41. Hvordan fungerer batch jobs?
Man laver et program der kører uden brugerinteraktion
42. Hvad er et timesharing system?
Et system hvor man kan være flere burgere samtidig på.
(p.20):
43. Hvad er et embedded system?
Et system der er sat ind i et andet system. Der er her tale om elektronik, en maskine.
44. Hvilke udfordringer står et operativsystem med, når det skal fungere på en mobil?
Der er begrænset og ustabile ressourcer
45. Hvilken form for interaktion anvender batch jobs?
Ingen!
(p.21):
46. Hvor kommer data fra, til et batch job?
Det kommer fra filer – det bliver bare læst fra filer.
(p.22):
47. Hvilke udfordringer stod udviklere med når de skulle compilere og teste programmer på batch
systemer?
Det tog lang tid!
(p.23):
48. Hvornår fremkom time-sharing systemer?
De kom i 1970’erne
(p.24):
49. Hvad er det mest kendte time-sharing system?
UNIX!
50. Hvad er en session?
Det er fra man logger ind til man logger ud.
51. Hvordan kommunikerer brugeren med et time-sharing system?
Han sidder ved en terminal og arbejder.
(p.25):
52. Hvad kalder man et time-sharing system, der kan køre flere processer samtidigt?
Multi-tarsk, man kaldte processerne tarsk til at starte med.
53. Hvilket sikkerhedsproblem opstod der med time-sharing systemer?
Man kunne læse hinandens hukommelse (derved programmer)
(p.26):
54. Hvem lavede UNIX?
AT&T af Ritchie og Thompson – de lavede programmeringssproget C til det.
55. Hvad var fordelen ved UNIX?
Det var meget lille, og let at porte til andre systemer.
56. Hvilke to versioner af UNIX fandtes der i midt-firserne?
System 5 og BSD-UNIX
57. Hvad hed det operativsystem der samlede de to versioner?
Sun Solaris
58. Hvad er POSIX?
Det er en applikations API – grænsefalden til programmer
(p.27):
59. Hvilket operativsystem baserer sig meget på UNIX?
Mac
60. Hvad hed den første PC? Og hvornår så den dagens lys?
Apple 2 og den blev udgivet i April 1977
61. Hvordan havde disse tidlige PC'ere det med flere brugere og flere processer?
Man kunne køre et program ad gangen, og der kunne kun være en bruger ad gangen
62. Hvornår uddøde denne tidlige generation af PC'ere?
Sidst i 80’erne
63. Hvad specielt var der ved Sun's workstations ifht. PC'erne? Hvornår kom de på markedet?
De kom på markedet i 1982, og de kunne flere bruger og processor på en gang.
(p.28):
64. Hvornår blev Sun's workstations indhentet af PC'erne?
1995 til 1997 – der var stor forskel i prisen (workstation ca. 70.000, PC ca. 15.000)
65. Hvad kendetegner en micro-computer?
CPU kan være på en chip
66. Hvilken CPU blev brugt til de tidligere micro-computere?
En 8008 8-bit processor af intel
67. Hvilket operativsystem var det mest populære blandt de tidlige PC'ere?
CPM – man læser det hele på disketter
68. Hvornår døde MS-DOS?
Sidst i 90’erne, først i 2000’erne
(p.29):
69. Hvorfor implementerede visse Windows operativsystemer kun dele af Win32 API?
Fordi det var rigtig rigtig stort og omfattende
(p.31):
70. Hvilke operativsystemer har hele Win32 API'en implementeret? Og hvilke havde kun en del af API'en?
Hele API’en: Windows NT, 2000, XP osv.
Dele af API’en: 95, 98, Me
71. Hvad er brugeren af et embedded system?
Bruger af et embedded system, er det system, som systemet er embedded i.
(p.32):
72. Hvad er garanterede responstider? Hvorfor er de væsentlige for et embedded system?
At de kan garantere at de er færdige inden for en bestem tid. (Man kan fx sige at et menneske er et embedded system i en bil)
73. Hvad er forskellen på en soft og en hard deadline?
Hard deadline: Du skal være her præcis!
Soft deadline: Du skal være her indenfor ca.
(p.34):
74. Hvilke begrænsinger har mobil'er, PDA'ere ol.
De har begrænset ressourcer
(p.35):
75. Hvilke problemer kan der være med netværk på disse maskiner?
Forbindelse kan være meget tynd, ikke så stor båndbredde. Skal kunne håntere at nogle ressourcer nogle gang er til rådighed, andre gang ikke.
76. Nævn nogle af de operativsystemer der kører på sådanne maskiner?
Windows Mobile, Android, Symbian OS osv.
(p.37):
77. Hvornår begyndte man for alvor at lave netværk?
I starten af 80’erne
78. Hvornår begyndte man at få trådløse netværk?
Omkring år 2000
(p.38):
79. Hvilken applikation er blevet det store "hit" på internettet?
Browserne (HTTP-browseren)
søndag den 28. februar 2010
SWD sikkerheds noter
Physical Security - Beskyttelse imod fysiske trusler som f.eks miljø, teknisk og menneske skabte problemer.
Premises Secutiry - Beskyttelse imod trusler på områder, bygninger og personale etc. som er lovpligtigt.
Under dette ligger:
ting som brand sikring (alarmer),
adgangs kontrol (adgangs kort),
område sikkerhed (video overvågning etc.).
____________________________________________________________________