Академический Документы
Профессиональный Документы
Культура Документы
Creating a Process
Thread Structures
Creating a Thread
Scheduling
Jobs
1. Open the image to be executed
2. Create the Windows executive process object
a) Set up executive process block
b) Create initial process address space
c) Create kernel process block
d) Finish setup of process address space
e) Set up the process environment block
f) Finish setup of executive process block
3. Create initial thread and its stack and context
4. Notify the Windows subsystem about the
new process
5. Start execution of initial thread
6. Perform process initialization in the context
of the new process
1. Create a user-mode stack in the process’s
address space
2. Initialize the thread’s hardware context
3. Create the executive thread object in the
suspended state
4. Notify the Windows subsystem about the
new thread (so it can do some setup work)
5. Return thread handle and thread ID to caller
Scheduling is done at the thread level
Time quanta (time slices)
Dynamic or “boostable”
Controllable by the user
Stored in “thirds” for partial quantum usage
Priorities
32 levels, divided into two categories
▪ 16 “real-time” levels (16–31)
▪ 15 variable (dynamic) levels (1–15)
▪ 1 system level (0), reserved for the zero page thread
One queue per priority level
Boostable also
Windows can boost a thread’s priority in
these cases:
On completion of I/O operations
After waiting for executive events or semaphores
After threads in a foreground process complete a
wait operation
When GUI threads wake up because of windowing
activity
When a thread that’s ready to run hasn’t been
running for some time (CPU starvation)
A job object is “a nameable, securable,
shareable kernel object that allows control of
one or more processes as a group.”
Allows for management of groups of
processes as a unit
A process can be a member of only one job
Holds basic accounting information for all
processes in the job, whether terminated or
running
Jobs allow for setting limits on processes:
Maximum number of active processes in the job
Job-wide user-mode CPU time limit
Per-process user-mode CPU time limit
Job scheduling class—set the quantum length for
processes in the job
Job processor affinity
Job process priority class
Default working set minimum and maximum
Process and job committed virtual memory limit
Debugging Tools for Windows
http://www.microsoft.com/whdc/devtools/debugging/
Windows Debugger
Windows Sysinternals
http://www.sysinternals.com/
Lots of wonderful utilities:
▪ Process Explorer
▪ Live Kernel Debugger
▪ Lots of other goodies
The Windows API Reference at MSDN Library
http://msdn.microsoft.com/en-
us/library/aa383749(VS.85).aspx
Kernel function reference
Microsoft Windows Internals
Especially chapter 6
Fifth edition coming in January 2009
▪ Windows Vista
▪ Windows Server 2008
“Mark’s Blog”:
http://blogs.technet.com/markrussinovich/
Don’t forget Google