Lecture 2 on Windows CE files and processes
Download
Report
Transcript Lecture 2 on Windows CE files and processes
Operating systems
Windows CE files.
Windows CE databases.
Windows CE processes.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE file system
Designed for devices without rotating
storage.
May use disk drives.
Based upon object store.
Object store is undocumented---can’t
determine format in memory.
API is fairly complete version of Win32 file
system.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Object store
Default file system in WinCE.
Stores files in compressed form.
Applications cannot easily distinguish
between RAM and ROM files.
Limited to 256 MB of RAM.
Individual file limited to 32 MB.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Other WinCE file systems
Installable file system (IFS): up to 256 storage
devices with file systems.
Every storage device is a directory from root.
Doesn’t use drive letters C: etc.
Doesn’t have size limitations of object store.
Uses Windows-style file names.
Supports many attribute flags: read-only,
system, hidden, etc.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Memory-mapped files
Can use memory reads/writes to read and
write file.
Don’t need FileRead(), FileWrite().
Opened with specialized calls
CreateFileForMapping(),
CreateFileMapping().
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE registry
Database that stores data on configuration of
WinCE and applications.
Used to store data that needs to be saved.
Contains keys, values.
Multiple levels of keys separated by ‘\’.
Registry access:
Key containing value is opened.
Value read or written.
Key is closed.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE databases
Designed for address lists, etc.
Provides basic database functions:
One level.
At most four sort indexes.
Not supported by other Windows
platforms.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Database records
Database: set of records.
Record: unlimited number of properties.
Property types:
2-byte signed integer.
2-byte unsigned integer.
4-byte signed integer.
4-byte unsigned integer.
Time/date structure.
Null-terminated Unicode string.
Collection of bytes.
Boolean.
8-byte signed value.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Database volumes
Volume: format for storing database in a
file.
Can be stored in compact flash, etc.
Must be mounted and dismounted.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Windows CE modules and
processes
Types of executable code:
Applications .exe.
Dynamically linked libraries .dll.
A process is an instance of an application.
Each process has its own thread.
© 2004 Wayne Wolf
Overheads for Computers as
Components
DLLs vs EXEs
An executable can be executed.
A DLL cannot be directly executed.
Must be called by an EXE or DLL.
EXE can list the DLL in its import table.
DLL can be loaded explicitly.
Share file format.
Only difference is markers in the header.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE processes
Only 32 processes can execute at any one
time.
WinCE processes contain less state than
other Windows processes.
No current directory, etc.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE startup
When started, WinCE starts four
processes:
Kernel NK.exe.
System services FileSys.exe.
GUI support GWES.exe.
Device drivers Device.exe.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE threads
A thread is a flow of control.
Has its own stack and register set.
A process has one or more threads.
Primary process for threads.
Process can create an arbitrary number of
additional threads.
All threads in a process share the same
address space.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Threads and scheduling
The kernel schedules threads.
Preemptive scheduling.
Time sliced into quanta.
Preemptive scheduling:
Higher priority ready thread runs first.
Thread can be blocked.
Scheduler supports priority inheritance to solve
priority inversion.
256 possible scheduling priorities.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Priorities and quanta
Priority can be changed by the thread or
by another thread.
0 is highest priority, 255 is lowest.
Each thread may have its own time
quantum.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE fibers
Fiber: thread-like object that is scheduled
by the application, not the system.
Application creates thread, then turns it into
a fiber.
Introduced for better compatibility with
Unix.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Thread local storage
Each thread that calls a routine can have
its own local storage.
Persistent.
Unique to a thread.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE synchronization
Based on synchronization objects.
Thread waits on synchronization object.
Signal to objectd causes thread to unblock.
© 2004 Wayne Wolf
Overheads for Computers as
Components
WinCE events
Event object capture signals:
Named objects.
In signaled or nonsignaled state.
Event object must be created in each
process that wants to use it.
Processes can wait on objects.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Semaphore objects
Counting semaphores.
Zero count is not signaled.
Non-zero count is signaled.
Threads can wait on semaphore objects.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Mutexes
Used to make sure that only one process
at a time works on a resource.
Signal is on when not owned by a thread.
Signal is off when owned by a thread.
© 2004 Wayne Wolf
Overheads for Computers as
Components
Critical sections
Critical section of code must not be
executed at same time as another critical
section.
Controlled by EnterCriticalSection(),
LeaveCriticalSection().
© 2004 Wayne Wolf
Overheads for Computers as
Components