<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Scheduling</id>
	<title>Scheduling - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Scheduling"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Scheduling&amp;action=history"/>
	<updated>2026-05-12T23:33:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Scheduling&amp;diff=1710&amp;oldid=prev</id>
		<title>Masha at 00:37, 2 December 2007</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Scheduling&amp;diff=1710&amp;oldid=prev"/>
		<updated>2007-12-02T00:37:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:37, 2 December 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Note: This is just a placeholder while I organize the information I have and create the images)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== QEMU ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== QEMU ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Where does it fit in OS architecture?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Where does it fit in OS architecture?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l46&quot;&gt;Line 46:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 44:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If the TLB misses, the kernel gets called&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* If the TLB misses, the kernel gets called&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Locality of reference: for data and for code, can be spatial and temporal&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Locality of reference: for data and for code, can be spatial and temporal&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--[[User:Masha|Masha]] 00:30, 22 November 2007 (EST)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Masha</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Scheduling&amp;diff=1707&amp;oldid=prev</id>
		<title>Masha: Initial outline commit</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Scheduling&amp;diff=1707&amp;oldid=prev"/>
		<updated>2007-11-22T05:30:07Z</updated>

		<summary type="html">&lt;p&gt;Initial outline commit&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(Note: This is just a placeholder while I organize the information I have and create the images)&lt;br /&gt;
&lt;br /&gt;
== QEMU ==&lt;br /&gt;
* Where does it fit in OS architecture?&lt;br /&gt;
* Simply a procdess, so: [Image 1 goes here]&lt;br /&gt;
* If a shell is running in QEMU, it is not seen from the regular terminal&lt;br /&gt;
* Quite analogous to the J(ava) V(irtual) M(achine)&lt;br /&gt;
&lt;br /&gt;
== Virtual Machine Monitor ==&lt;br /&gt;
* What do you emulate?&lt;br /&gt;
** QEMU emulates &amp;#039;&amp;#039;everything&amp;#039;&amp;#039; (like PowerPC binaries for Intel x86 chip) [Image 2 goes here]&lt;br /&gt;
* If data coming in is the Linux kernel, it expects to be run in supervisor mode, so QEMU has to emulate supervisor mode (otherwise cannot process privileged instructions)&lt;br /&gt;
* If a program in user mode executes a privileged instruction, a software interrupt gets generated, and the kernel is called to look up the trap table&lt;br /&gt;
** Example: division by zero&lt;br /&gt;
* We would like to emulate any hardware we want; so, why not just dump code directly on the CPU without QEMU in-between?&lt;br /&gt;
** Cannot do this, because regular Linux kernel will catch the interrupts&lt;br /&gt;
*** One possible way to get around this is to take out privileged instructions from binaries (essentially rewrite them)&lt;br /&gt;
&lt;br /&gt;
== Hypervisor ==&lt;br /&gt;
* The kernel&amp;#039;s kernel [Image 3 goes here]&lt;br /&gt;
&lt;br /&gt;
=== Ring Model ===&lt;br /&gt;
* Unix only has two rings: kernel = 0, user = 3 [Image 4 hoes here]&lt;br /&gt;
* If hypervisor runs in -1, we can run multiple operating systems on top of the hypervisor [Image 5 goes here]&lt;br /&gt;
* The hypervisor is part of the mechanism that prevents pirated games from playing on the Play Station 3&lt;br /&gt;
* Hypervisor does not really affect performance, because it is tacked onto the I/O part of system calls&lt;br /&gt;
* Translating memory access from applications in user spaces means switching to kernel (supervisor), and then again from supervisor to hypervisor&lt;br /&gt;
* If running multiple operating systems, hypervisor designates one operating system to be the host or root access&lt;br /&gt;
* &amp;quot;Server consolidation&amp;quot; - using machines to the best of their abilities to conserve power&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Blue Pill&amp;quot; ===&lt;br /&gt;
* When an attacker comes in, they have to run as a user process&lt;br /&gt;
* To hide, try to modify kernel code to camouflage processes&lt;br /&gt;
* Put security code in hypervisor - only good if attacker does not get there first&lt;br /&gt;
* Apparently, Windows kernel can actually tell if it has been virtuatlized, because there is one process that cannot be changed - the clock, so determine virtualization by checking the timing of I/O and interrupts&lt;br /&gt;
* &amp;quot;Halting problem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== MMU ==&lt;br /&gt;
* How do we translate addresses? For some process, looking at address 2000 actually means looking at 8420&lt;br /&gt;
* Every instruction accessing memory has to perform this translation&lt;br /&gt;
* There exist tables that keep these - in page intervals (a pages is approximately a 4KB block)&lt;br /&gt;
* MMU needs a cache (very fast) to keep these tables&lt;br /&gt;
* MMU also requires a special kind of memory called associative memory (not like computers&amp;#039; main memory)&lt;br /&gt;
** Content-based access, not address-based&lt;br /&gt;
* TLB - translational lookaside buffer is the table with tags (directly on MMU), &amp;lt;64K&lt;br /&gt;
* If the TLB misses, the kernel gets called&lt;br /&gt;
* Locality of reference: for data and for code, can be spatial and temporal&lt;br /&gt;
&lt;br /&gt;
--[[User:Masha|Masha]] 00:30, 22 November 2007 (EST)&lt;/div&gt;</summary>
		<author><name>Masha</name></author>
	</entry>
</feed>