Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
Ph.D. - geht es zur Homepage der Informatik des Fachbereiches 3 ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Chapter 6. Security in Open Source Software<br />
pp. 353-453]. Static partitioning is very easy to implement, but it provid<strong>es</strong> a very<br />
inefficient usage of the main memory. In a fixed environment, like in embedded systems,<br />
it can be used as a very simple but efficient memory management strategy due to the<br />
systems constrains.<br />
For example, the ARINC specification 653P1-2 [3], which is applicable for avionics software<br />
standard interfac<strong>es</strong>, requir<strong>es</strong> the usage of static partitioning for operating systems for the<br />
corr<strong>es</strong>ponding embedded systems.<br />
Dynamic partitioning: The memory M is divided in m = {1, 2, 3, . . . } partitions p j with<br />
∑<br />
dynamic siz<strong>es</strong>: ∀j : length(p j ) > 0, M = {p 0 , p 1 , . . . , p m−1 } while length(M) ≥<br />
m−1<br />
j=0 length(p j) [77, pp. 353-453]. Compared to static partitioning, dynamic partitioning<br />
provid<strong>es</strong> a more efficient usage of the main memory but needs in general more<br />
computation time for its management.<br />
6.1.2. Paging<br />
For paging with virtual memory, the virtual memory V consists of the main memory M and<br />
the swap space S: V = M ∪ S. This virtual memory V is divided in pag<strong>es</strong> p k , which all have<br />
the same size: ∀k : length(p k ) = s. Programs or proc<strong>es</strong>s<strong>es</strong> are loaded in different but not<br />
nec<strong>es</strong>sarily sequential pag<strong>es</strong> depending on their required memory. Pag<strong>es</strong> of a program can be<br />
loaded on demand and do not need to be loaded completely at program start. A program can<br />
acc<strong>es</strong>s its memory in a sequential manner because the physical memory addr<strong>es</strong>s<strong>es</strong> are mapped.<br />
Therefore, a program can only acc<strong>es</strong>s pag<strong>es</strong> that belong to it [77, pp. 353-453]. Paging with<br />
virtual memory provid<strong>es</strong> an effective way of memory management for multiproc<strong>es</strong>sing operating<br />
systems, but it is quite complex to implement.<br />
6.1.3. Segmentation<br />
For segmentation with virtual memory, also the virtual memory V consists of the main memory<br />
M and the swap space S: V = M ∪ S. A program e ∈ {0, 1, 2, . . . , n} is divided in certain<br />
number of segments s e,l (l ∈ {1, 2, 3, . . . m}), which have a dynamic size. This size can<br />
be influenced by the developer of a program or the used compiler for high-level languag<strong>es</strong>:<br />
∀e : ∀l : length(s e,l ) > 0 while V ≥ ∑ n ∑ m<br />
e=0 l=1 length(s e,l).<br />
As in paging, the segments are not nec<strong>es</strong>sarily sequential and not all segments of a program<br />
must be loaded at its start. Also, the physical memory is mapped to provide each program a<br />
sequential acc<strong>es</strong>s to its allocated memory / segments [77, pp. 353-453]. The main difference,<br />
compared with the advantag<strong>es</strong> of paging, is that a developer can influence the size of the<br />
segments. This can also be used to define areas of shared data segments, where several programs<br />
have acc<strong>es</strong>s to. Its implementation is even more complex as for paging.<br />
6.1.4. Segmentation combined with Paging<br />
To gain the advantag<strong>es</strong> from paging and segmentation together, another more sophisticated<br />
strategy is to combine both strategi<strong>es</strong>. This means that segmentation is used for programs<br />
while the segments s e,l of each program e ∈ {0, 1, 2, . . . , n} are again divided in pag<strong>es</strong> p e,l,k of<br />
68