Re: Quering "System Idle Process"

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



"m4rky" <m4rky@xxxxxxxxxxxxxxx> wrote in message
news:156FE474-AB32-47AD-99FD-647F8632F2F0@xxxxxxxxxxxxx
Thanks for your help. Although, a pseudo-process is hard to
explain to those who ask me... was it a thread or a kernel driver or
a DLL?

Realize that a "process" is just a data structure in the kernel, mainly
for maintaining an address space and a collection of threads. In user
mode, this structure is created by CreateProcess call, which insists on
associating it with an EXE. But kernel has direct access to its own data
structures. When the OS is loaded, kernel creates an instance of
"process" data structure not backed by any EXE, to hold a collection of
all the threads kernel itself creates - the System process. This is done
for convenience, to make handling of all threads uniform.

Similarly, again for convenience, kernel creates System Idle Process.
This one hosts a single thread, of lowest possible priority, that simply
zeroes out unused memory pages while the processor has nothing better to
do. This simplifies the thread scheduler, which now doesn't have to deal
with an edge condition of not having any threads to schedule.

I believe it has to have a parent process like the rest.

If every process has to have a parent process, what would be the parent
process of the parent process? Would it in turn have its own parent? And
that one in turn should have a parent, right? You get my drift.
--
With best wishes,
Igor Tandetnik

With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925


.



Relevant Pages

  • Re: how to read dynamic data structures from the kernel (was Re: reading routing table)
    ... steps for any given kernel subsystem -- we have data structures, synchronization models, etc, that are all tuned to their common use requirements, and monitoring is very much an edge case. ... Then we release the global locks, and proceed lock, externalize, unlock, and copyout each individual entry, using a generation number fo manage staleness. ... It's unideal in other ways -- long lists, reference count complexity, etc, but as I mentioned, it is very much an edge case, and much of that mechanism is something we need anyway for any moderately complex kernel data structure. ...
    (freebsd-net)
  • how to read dynamic data structures from the kernel (was Re: reading routing table)
    ... The interface problem, or how to pull bits from the kernel, is so ... What we'd need is some internal representation of the data structure ... Usually the "reason" for things like this is that no one has written the ... although doing it via an interated dump rather than a simple dump operation ...
    (freebsd-net)
  • Re: Can current macro be accessed from interrupt context?
    ... I am trying to emulate thread local storage in kernel space. ... Per cpu data structures is not quite the same thing ... central data structure protected by spinlocks. ...
    (Linux-Kernel)
  • Re: [ ] in ps eaf Please Help
    ... parent. ... > the procesess' data structure in the kernel that contains the command ...
    (comp.unix.aix)
  • Re: The guts of /dev/* ?
    ... relates to the sound driver. ... There is a master table in the kernel which maps device numbers to ... device driver entry points. ... table is refereed to and the kernel creates a data structure ...
    (comp.os.linux.misc)