- Uses PAE paging.
- Higher half memory model.
Initialized in this order:
- Bootstrap PAE paging.
- Kernel heap.
- Physical allocator.
- Init process PAE paging.
00000000000000c0 <vmxoff>: | |
c0: e8 00 00 00 00 callq c5 <vmxoff+0x5> | |
c5: 55 push %rbp | |
c6: 48 89 e5 mov %rsp,%rbp | |
c9: 48 83 ec 10 sub $0x10,%rsp | |
cd: 65 48 8b 04 25 28 00 mov %gs:0x28,%rax | |
d4: 00 00 | |
d6: 48 89 45 f8 mov %rax,-0x8(%rbp) | |
da: 31 c0 xor %eax,%eax | |
dc: 0f 01 c4 vmxoff |
We're going to focus on x86 because it's the easiest to understand. I'll then explain how x86_64 is more efficient.
So the stack is where local variables are stored. It is just a chunk of memory available for the program. The top of the stack is stored in a special register called the stack pointer, or esp on x86. It grows from higher addresses to lower addresses. To put a value on the stack you can
You made a device driver! Let's say you named it sbd.
Let's start by recalling that on Linux, everything is a file. There is a file on the filesystem representing every device. On many linux laptops you can see things like /dev/mouse
, /dev/speakers
, and /dev/cpu
. Your driver acts like a hard drive as far as Linux is concerned.
Now, if you start up the vm, you'll see that the device isn't loaded by default:
$ ls /dev/sbd
No such file or directory
Description='eduroam' | |
Interface=YOUR_INTERFACE | |
Connection=wireless | |
ESSID=eduroam | |
Security=wpa-configsection | |
IP=dhcp | |
TimeoutWPA=10 | |
WPAConfigSection=( | |
'ssid="eduroam"' | |
'proto=RSN WPA' |
#include <stdio.h> | |
#include <unistd.h> | |
int main () { | |
unsigned long long i; | |
while (1) { | |
printf("tick\n"); | |
for (i = 1; i != 0; i++){} | |
} | |
} |
[iankronquist@teleport.com][1]
844 West Complex • Corvallis, Oregon 97331–1801
Github: [iankronquist][2] • IRC: muricula on Freenode
Enthusiastic and experienced student of computer science, enjoys solving the difficult problems which make the field fascinating. A quick learner eager to apply new concepts and technologies.
Education
def fib (a, b, max ): | |
while (b < max): | |
tmp = a | |
a = b | |
b = a + b | |
return b |
{ | |
"defined_types": [ | |
{ | |
"docstring": "Docstring", | |
"file": "manifests/defined_type.pp", | |
"line": 6, | |
"name": "bar", | |
"parameters": { | |
"barname": null, | |
"barval": null |