- Page 1: Department of Computer Science and
- Page 12 and 13: 10 My friend and I daresay mentor J
- Page 15 and 16: 13 Contents Preface 9 Contents 13 L
- Page 17 and 18: 15 3.8 Attaching Components . .....
- Page 19 and 20: 17 5.5 NamespaceVirtualization ....
- Page 21 and 22: 19 List of Abbreviations ABI ASIC C
- Page 23: 21 SLIP TLS TLS UML USB VAS VM VMM
- Page 26 and 27: 24 3.22 Bridging a tap interface to
- Page 29: 27 List of Tables 2.1 Comparison of
- Page 32 and 33: 30 1.1 Challenges with the Monolith
- Page 34 and 35: 32 support for external protocols t
- Page 36 and 37: 34 2. Microkernel: the host routes
- Page 38 and 39: 36 1.6 Further Material 1.6.1 Sourc
- Page 40 and 41: 38 Code examples This dissertation
- Page 42 and 43: 40 NetBSD, both user processes and
- Page 44 and 45: 42 is because a full OS provides th
- Page 46 and 47: 44 Another example of a practical b
- Page 48 and 49: 46 (some exceptions to the file sys
- Page 50 and 51: 48 int main(int argc, char *argv[])
- Page 52 and 53: 50 Type Request Policy Access Avail
- Page 54 and 55: 52 except where the rump kernel let
- Page 56 and 57: 54 To further illustrate, we go ove
- Page 58 and 59: 56 The soft context is always set b
- Page 60 and 61:
58 We also point out that a guest C
- Page 62 and 63:
60 2.3.3 Interrupts and Preemption
- Page 64 and 65:
62 After having received a rump ker
- Page 66 and 67:
64 2.5 Distributed Services with Re
- Page 69 and 70:
67 3 Implementation The previous ch
- Page 71 and 72:
69 over splitting a file into sever
- Page 73 and 74:
71 kernel. We work on a source file
- Page 75 and 76:
73 runtime (s) 2 1.8 1.6 1.4 1.2 1
- Page 77 and 78:
75 explicit namespace: rump implici
- Page 79 and 80:
77 3.2.3 The Hypercall Interface Th
- Page 81 and 82:
79 void rumpuser_mutex_init(struct
- Page 83 and 84:
81 The Benefit of a printf-like Hyp
- Page 85 and 86:
83 void rump_schedule() { struct lw
- Page 87 and 88:
85 10 8 seconds 6 4 2 0 1CPU 2CPU n
- Page 89 and 90:
87 void schedule_cpu() { struct lwp
- Page 91 and 92:
89 void unschedule_cpu() { struct l
- Page 93 and 94:
91 is bound to a certain rump kerne
- Page 95 and 96:
93 interrupts from hardware clock i
- Page 97 and 98:
95 to secondary storage so that mem
- Page 99 and 100:
97 3. Accept that memory remapping
- Page 101 and 102:
99 implementations for these alloca
- Page 103 and 104:
101 rump kernel memory limit relati
- Page 105 and 106:
103 acquire it. Since there are no
- Page 107 and 108:
105 3.5.1 Passive Serialization Tec
- Page 109 and 110:
107 2. Check that the system call h
- Page 111 and 112:
109 5. In case we saw threads insid
- Page 113 and 114:
111 5 4.86 duration (s) 4 3 2 2.96
- Page 115 and 116:
113 any functions they desire. We d
- Page 117 and 118:
115 off_t rump___sysimpl_lseek(int
- Page 119 and 120:
117 [ .... ] 2194: e8 fc ff ff ff c
- Page 121 and 122:
119 int RUMP_VOP_READ(struct vnode
- Page 123 and 124:
121 boothowto variable. Since there
- Page 125 and 126:
123 Due to how etfs is implemented
- Page 127 and 128:
125 source loading linking initiate
- Page 129 and 130:
127 The bootstrap procedure iterate
- Page 131 and 132:
129 void *handle; const struct modi
- Page 133 and 134:
131 opposed to the host’s dynamic
- Page 135 and 136:
133 sys/arch/x86/include/pmap.h: #d
- Page 137 and 138:
135 acalltokobj_renamespace() after
- Page 139 and 140:
137 level RUMP_COMPONENT_KERN RUMP_
- Page 141 and 142:
139 An example of a component file
- Page 143 and 144:
141
- Page 145 and 146:
143 We use shared memory provided b
- Page 147 and 148:
145 Our implementation is different
- Page 149 and 150:
147 the object the data belongs to
- Page 151 and 152:
149 3.10 Hardware Device Drivers: A
- Page 153 and 154:
151 golem> rump_server -lrumpvfs -l
- Page 155 and 156:
153 the audio driver attaches to an
- Page 157 and 158:
155 can be accomplished with a hard
- Page 159 and 160:
157 host probe: uhub5 at uhub2 port
- Page 161 and 162:
159 3.11.1 Mount Utilities and File
- Page 163 and 164:
161 int p2k_node_read(struct puffs_
- Page 165 and 166:
163 Figure 3.
- Page 167 and 168:
165 function interfaces for system
- Page 169 and 170:
167 3.12.4 Communication Protocol T
- Page 171 and 172:
169 Request Arguments Response Desc
- Page 173 and 174:
171 Host syscall rump syscall 5. th
- Page 175 and 176:
173 Figure
- Page 177 and 178:
175 Note: the categories are not mu
- Page 179 and 180:
177 • The closefrom() routine clo
- Page 181 and 182:
179 pid_t rumpclient_fork() { pid_t
- Page 183 and 184:
181 25 remote (unix domain) local 2
- Page 185 and 186:
183 relegation has on the implement
- Page 187 and 188:
185 4 Evaluation This chapter evalu
- Page 189 and 190:
187 50 40 kLoC 30 20 10 0 rump Xen
- Page 191 and 192:
189 build.sh rumptest When rump ker
- Page 193 and 194:
191 for NTFS. The benefit is that f
- Page 195 and 196:
193 original rump kernel backend FF
- Page 197 and 198:
195 4.3.1 Non-native Hosting When h
- Page 199 and 200:
197 hypervisor, it is possible to c
- Page 201 and 202:
199 fromvers () { echo sed -n ’1{
- Page 203 and 204:
201 4.4 Security: A Case Study with
- Page 205 and 206:
203 be the platform hardware or a h
- Page 207 and 208:
205 ==11956== 1,048 (24 direct, 1,0
- Page 209 and 210:
207 2. Activity on the host, such a
- Page 211 and 212:
209 Standard rules still apply, and
- Page 213 and 214:
211 Multiplicity Multiplicity means
- Page 215 and 216:
213 of tests that have to be writte
- Page 217 and 218:
215 test program crashed, autolisti
- Page 219 and 220:
217 4.5.5 Development Experiences S
- Page 221 and 222:
219 4.6.1 Memory Overhead We define
- Page 223 and 224:
221 platform version kernel boot lo
- Page 225 and 226:
223 #!/bin/sh RUMP_COMP=’-lrumpne
- Page 227 and 228:
225 5 4 runtime (s) 3 2 1 0 ‘ 2.4
- Page 229 and 230:
227 RTT (ms) 10 UDP "ping" 8 6 4 2
- Page 231 and 232:
229 • Copying the large file was
- Page 233 and 234:
231 80 70 60 seconds 50 40 30 20 10
- Page 235 and 236:
233 ping rtt (us) 120 100 80 60 40
- Page 237 and 238:
235 We evaluated the portability of
- Page 239 and 240:
237 5 Related Work This chapter sur
- Page 241 and 242:
239 the same too: if one component
- Page 243 and 244:
241 environment without the interfa
- Page 245 and 246:
243 5.7 Inter-OS Kernel Code The co
- Page 247 and 248:
245 NDIS NDIS stands for “Network
- Page 249 and 250:
5.9 Testing and Development 247 Sun
- Page 251 and 252:
249 6 Conclusions We set out with t
- Page 253 and 254:
251 The key performance characteris
- Page 255 and 256:
253 translation may be needed when
- Page 257 and 258:
255 References [1] DDE/DDEKit. URL
- Page 259 and 260:
257 [20] Charles D. Cranor. 1998. D
- Page 261 and 262:
259 ments. In: Proceedings of the W
- Page 263 and 264:
261 [58] Steve R. Kleiman. 1986. Vn
- Page 265 and 266:
263 [76] Luke Mewburn. April 2009.
- Page 267 and 268:
265 [97] The Transport Layer Securi
- Page 269 and 270:
267 [115] Junfeng Yang, Can Sar, Pa
- Page 271 and 272:
A-1 Appendix A Manual Pages rump.dh
- Page 273 and 274:
A-3 RUMP.HALT(1) NetBSD General Com
- Page 275 and 276:
A-5 RUMP_SERVER(1) NetBSD General C
- Page 277 and 278:
A-7 RUMP_SERVER(1) NetBSD General C
- Page 279 and 280:
A-9 RUMP_SERVER(1) NetBSD General C
- Page 281 and 282:
A-11 SHMIF_DUMPBUS(1) NetBSD Genera
- Page 283 and 284:
A-13 P2K(3) NetBSD Library Function
- Page 285 and 286:
A-15 RUMP(3) NetBSD Library Functio
- Page 287 and 288:
A-17 RUMP(3) NetBSD Library Functio
- Page 289 and 290:
A-19 RUMP(3) NetBSD Library Functio
- Page 291 and 292:
A-21 RUMP_ETFS(3) NetBSD Library Fu
- Page 293 and 294:
A-23 RUMP_LWPROC(3) NetBSD Library
- Page 295 and 296:
A-25 RUMP_LWPROC(3) NetBSD Library
- Page 297 and 298:
A-27 RUMPCLIENT(3) NetBSD Library F
- Page 299 and 300:
A-29 RUMPCLIENT(3) NetBSD Library F
- Page 301 and 302:
A-31 RUMPCLIENT(3) NetBSD Library F
- Page 303 and 304:
A-33 RUMPHIJACK(3) NetBSD Library F
- Page 305 and 306:
A-35 RUMPHIJACK(3) NetBSD Library F
- Page 307 and 308:
A-37 RUMPUSER(3) NetBSD Library Fun
- Page 309 and 310:
A-39 UKFS(3) NetBSD Library Functio
- Page 311 and 312:
A-41 UKFS(3) NetBSD Library Functio
- Page 313 and 314:
A-43 UKFS(3) NetBSD Library Functio
- Page 315 and 316:
A-45 UKFS(3) NetBSD Library Functio
- Page 317 and 318:
A-47 SHMIF(4) NetBSD Kernel Interfa
- Page 319 and 320:
A-49 VIRT(4) NetBSD Kernel Interfac
- Page 321 and 322:
A-51 RUMP_SP(7) NetBSD Miscellaneou
- Page 323 and 324:
B-1 Appendix B Tutorial on Distribu
- Page 325 and 326:
B-3 The URL the server listens to i
- Page 327 and 328:
B-5 given, and halt the server. We
- Page 329 and 330:
B-7 While there are multiple steps
- Page 331 and 332:
B-9 golem> disklabel -re usb.img #
- Page 333 and 334:
B-11 unencrypted partition to the i
- Page 335 and 336:
B-13 offer the params file for down
- Page 337 and 338:
B-15 B.3 Networking This section ex
- Page 339 and 340:
B-17 bridge as you like. For exampl
- Page 341 and 342:
B-19 golem> rump.ping www.NetBSD.or
- Page 343 and 344:
B-21 Now we can use Firefox just li
- Page 345 and 346:
B-23 Now, we need to start a rump s
- Page 347 and 348:
B-25 the behavior by setting the RU
- Page 349 and 350:
B-27 # This script starts a rump ke
- Page 351 and 352:
B-29 B.5.2 NFS Client #!/bin/sh # #
- Page 353 and 354:
B-31 is running on your host. You c
- Page 355 and 356:
C-1 Appendix C Patches to the 5.99.
- Page 357 and 358:
C-3 { + int rfflags = 0; + + if (!s
- Page 359:
C-5 return error; } #endif @@ -525,