Module 3: Kernel Features

Size: px
Start display at page:

Download "Module 3: Kernel Features"

Transcription

1 Module 3: Kernel Features Contents Overview 1 Definition of Real Time 2 Windows CE Kernel Features 4 Handling Processes, Threads, and Fibers 6 Protecting Applications 17 Synchronization Objects 23 Memory Model 28 Structured Exception Handling 33 Optimizing a Windows CE Device 37 Lab 3: Kernel Tracking Thread Priorities 45 Review 46 Module 3: Kernel Features

2 Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, domain names, addresses, logos, people, places, and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, address, logo, person, places or events is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation. Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property Microsoft Corporation. All rights reserved. Microsoft, MS-DOS, Windows, Windows NT, Visual Studio are either registered trademarks or trademarks of Microsoft Corporation in the U.S.A. and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

3 Module 3: Kernel Features iii Instructor Notes Presentation: 75 Minutes Lab: 40 Minutes Materials and Preparation This module provides students with an understanding of the kernel features that are supported by Microsoft Windows CE.NET. Students will be able to optimize the Real-time systems by using various optimizing tools and techniques. After completing this module, students will be able to: Describe the real time operating system. State the Windows CE kernel features. Describe the process, thread, and fiber handling in Windows CE.NET. Protect threads from unauthorized priority or quantum modification. Explain synchronization objects in Windows CE.NET. Describe the memory model in Windows CE.NET. Perform structured exception handling. Measure and fine-tune time-critical operations. This section provides the materials and preparation tasks that you need to teach this module. Required Materials To teach this module, you need the following materials: Microsoft PowerPoint file 2535A_03.ppt Module 3, Kernel Features Preparation Tasks To prepare for this module: Read all the materials for this module. Read the instructor notes and margin notes for the module. Practice and complete all the labs pertaining to this module. Read the Platform Builder documentation on Building a Windows CE Platform.

4 iv Module 3: Kernel Features Module Strategy Use the following strategy to present this module: Definition of Real Time Discuss the various terms that are used with real-time systems. Windows CE Kernel Features Briefly describe the kernel features of Windows CE.NET. Describe the basic features of processes, threads, and synchronization. Handling Processes, Threads, and Fibers Explain how scheduling is improved in Windows CE.NET by providing features such as more thread priorities and better synchronization support. Protecting Applications Explain how to secure an application and a platform by using OEMCertifyModule to protect thread quantum and priority, and the registry. Synchronization Objects Discuss the purpose of synchronization using critical sections, mutexes, and semaphores. Memory Model Discuss how to attach to virtual memory in Windows CE.NET. Structured Exception Handling Discuss the exception handling techniques used in Windows CE.NET. Explain the try-except pair and different structured exception handling expressions, such as filter and exception API. Optimizing a Windows CE Device Discuss how the code for Windows CE.NET real-time performance can be optimized. Explain the measurement tools and the measurement Application Programming Interface (APIs) that can be used for optimization.

5 Module 3: Kernel Features 1 Overview To provide an overview of the module topics and objectives. In this module, you will learn about basic kernel features utilized by CE developers. Definition of Real Time Windows CE Kernel Features Handling Processes, Threads, and Fibers Protecting Applications Synchronization Objects Memory Model Structured Exception Handling Optimizing a Windows CE Device This module covers the relevant kernel features that are used in building a CE Platform. Windows CE.NET is a real time operating system. This module covers what that means in actual timing terms. In this module, you will learn about how the kernel handles and schedules processes and threads. When utilizing resources on a device, you often have multiple access or dual-port issues requiring synchronization. You will learn about the physical to virtual mapping used by the Windows CE kernel in memory mapping. Another kernel feature is the ability to protect your individual applications and your device as a whole from malicious applications by utilizing the certification security system. The module provides the security measures used by Windows CE.NET to protect your application. Finally, the module provides some optimization tips for speeding up your system s performance. After completing this module, you will be able to: Describe the real time operating system. State the Windows CE kernel features. Describe the process, thread, and fiber handling in Windows CE.NET. Protect threads from unauthorized priority or quantum modification. Explain synchronization objects in Windows CE.NET. Describe the memory model in Windows CE.NET. Perform structured exception handling. Measure and fine-tune time-critical operations.

6 2 Module 3: Kernel Features Definition of Real Time To define some terms used in this module. The term real time is pervasive in the industry. Here we define what we mean by real time. Real Time A system in which specific data collection or device control must be handled within specified time parameters. Hard Real Time Catastrophic results for failure to meet time constraints. Soft Real Time Non-catastrophic results for failing to meet time constraints Latency Is delay in response Different people use different definitions to explain the term Real-time based on their solutions. Arriving at the correct solution involves performing calculation within a defined time constraint. Quite often, this time constraint is an issue because of the need to coordinate applications with external devices. Some external devices are used for data collection. For example, the need to collect a specific number of samples from a photo-eye per unit time to gauge how many units have passed it. Other external devices involve direct control by the realtime system. Characteristics of Real-Time Performance Windows CE.NET provides the following characteristics for its real-time performance: Guaranteed upper bounds on high-priority thread scheduling. It is provided only for the highest-priority thread among all the scheduled threads. Guaranteed upper bounds on delay in scheduling high-priority interrupt service routines (ISRs). The kernel has a few places where preemption is turned off for a short, bounded time. Fine control over the scheduler and how it schedules threads. The Real-time features of Windows CE.NET provide certain characteristics that help to meet the needs of developers who have specific time constraints for their systems. Latency Latency is delay in response. For example, the interval between the time when a sound buffer plays and the time when the speakers actually reproduce the sound. In general, embedded engineers use this term in relation to the measure of time between hardware interrupt pulsing and when the operating system responds to the request.

7 Module 3: Kernel Features 3 Delivery Tip Open this white paper for the students and show them the information on benchmarking. Note For information on Benchmarking, see article Assessing Microsoft Windows CE 3.0 Real-Time Capabilities on the Microsoft MSDN site. This article also compares several CPUs with real data.

8 4 Module 3: Kernel Features Windows CE Kernel Features To describe Windows CE kernel features. Windows CE kernel features include Multiple processes Can support maximum of 32 separate processes Multiple threads Supports 256 thread priorities Fibers Unit of execution that must be manually scheduled by the application Synchronization objects Critical Sections Mutexes Memory model Paged, No backing store Windows CE kernel features include: Multiple processes Windows CE.NET is a multi-process operating system, and can support a maximum of 32 separate processes. Each process has its own private address space, which is 32 MB in size. This is in contrast to the 2 GB address space of a Windows 2000 process. Multiple threads Threads are the unit of scheduling. Only limit is available system memory. Threads reside within a process. Threads have a priority. Prior to Windows CE 3.0, there were eight thread priorities. Windows CE.NET has 256 priorities. Fibers A fiber is a unit of execution that must be manually scheduled by the application. Synchronization objects Key issue in a multi-threaded environment is to coordinate the activity of threads, and that is the job of the synchronization objects. A critical section variable can be defined and used to pass a token to synchronize objects. A mutex is an event object that signals when it is not owned by another process. Memory model On the memory front, Windows CE.NET supports paged virtual memory. This can cause delays. The easiest way to avoid these delays is to force time-critical code to be non-paged. This can most easily be accomplished by putting such code in a dynamic link library (DLL), then loading the DLL into memory with a call to LoadDriver. Both, LoadDriver and LoadLibrary load DLLs into memory; the difference is that a DLL loaded by LoadDriver cannot be paged out of memory.

9 Module 3: Kernel Features 5 Unlike other operating systems that support paged virtual memory, Windows CE.NET does not support a backing store. Unlike desktop versions of Windows, Windows CE.NET does not have a page file to backup the virtual.

10 6 Module 3: Kernel Features Handling Processes, Threads, and Fibers To describe how Windows CE.NET handles threads, processes, and fibers. Windows CE.NET is a multi-process, multithreaded operating system. Process Management Thread Priority Priority Inversion Handling Thread Quantum Control Thread APIs Fibers Windows CE.NET provides enhanced real time support for scheduling by enhancing built in features. In the latest releases of Windows CE, the following enhancements are provided: Increased timer resolution More thread priorities for greater separation Unique thread quantum for each thread

11 Module 3: Kernel Features 7 Process Management To define what a Process is for Windows CE.NET. Processes define the basic executable program of Windows CE. The maximum number of simultaneous processes are limited 32 processes because: It is the number of bits in a DWORD It is a reasonable limit for most embedded devices, as using multi-thread is recommended over multi-processes Windows CE.NET uses the same loading and unloading mechanism as Windows NT Support for console applications Call CreateProcess() to start a process Windows CE.NET limits the number of processes that can run simultaneously to 32, mainly because that is the number of bits in a DWORD. The virtual memory system and handle-management logic in the kernel use 32-bit bitmasks as access keys. For example, every handle has a bitmask that indicates which of the applications are allowed to access it. This is a fast and efficient way of handling resource protection. Moreover, 32 simultaneous processes is a reasonable limit for most embedded devices because you are strongly advised to use multiple threads instead of multiple processes. When Windows CE starts, you do not have 32 processes available for your own use because the system loads several executable files such as the kernel (NK.EXE), GWES.EXE, FILESYS.EXE, and SHELL.EXE (if you have a shell) files. Therefore, you can count on 28 available processes for your own purposes. Comparing Windows NT and Windows CE.NET The process file format is the same as for Windows NT. Windows CE.NET uses the same loading and unloading mechanism as Windows NT. Console applications have been supported from Windows CE version 2.12 onwards. A console application is an application that does not create a window, but only produces output that is similar to a text-based application. Windows CE.NET does not support the equivalent of a Windows NT service, although you can create a process without any windows. By setting the appropriate registry key, you can cause such a process to start running at system boot time. Here is an example of calling CreateProcess to start a program running:

12 8 Module 3: Kernel Features bprocess = CreateProcess (achrun, // Exe file name. NULL, // Command line. NULL, // Process Security. NULL, // Thread Security. FALSE, // Inherit Handles? 0, // Flags. NULL, // Environment block. NULL, // Current drive & directory. #ifdef UNDER_CE NULL, // Start info must be NULL in WinCE. #else &si, // Start info non-null on desktop. #endif &pi); // Returned: Process info.

13 Module 3: Kernel Features 9 Thread Priority To graphically explain preemptive, priority based scheduling. In the illustration shown in the slide, let us take the scenario where we have three threads running on our platform. Thread A is in the highest priority If at any point while thread A is running, thread B or C wake up If A is blocked, and both B and C are awake If thread A wakes up at any point during execution of any thread below its priority level The illustration on the slide shows thread handling in Windows CE. The explanation of the illustration is as follows: 1. Thread A is in the highest priority. It runs until it blocks or puts itself to sleep. 2. If at any point while thread A is running, thread B or C wake up, they do not run until A is done. 3. If A is blocked, and both B and C are awake, B and C get scheduled in a round robin fashion inside their own priority level. Each runs for its quantum (configurable in Windows CE.NET) and then passes control to the other until they are done. 4. If thread A wakes up at any point during execution of any thread below its priority level, then that thread will be preempted. The lower thread s state will be saved off and A will be serviced immediately. When A is finished, the original lower priority thread will be restored and continue to run. Windows CE supports priority inversion, which refers to a situation in which the use of a mutex, critical section, or semaphore resource by a lower-priority thread delays the execution of a higher-priority thread, when both are contending for the same resources. To correct this situation and free the higherpriority thread, Windows CE allows the lower-priority thread to inherit the more critical thread's priority and run at the higher priority until it releases its use of the resource. Because an unbounded amount of time is needed to relinquish the inverted thread and it is out of the control of the kernel, the OEM loses control of the scheduling process. To guarantee real-time performance, OEMs should ensure that a priority inversion condition does not occur.

14 10 Module 3: Kernel Features Thread Priority (continued) To define thread priorities in Windows CE.NET. Windows CE.NET uses thread priorities to schedule its tasks. Windows CE 2.x Supported eight priorities 0 to 7 Use the SetThreadPriority(hThread, npriority) function to set the priorities Windows CE 3.0 and higher Supports 256 Priorities 0 (real-time) to 255 Uses CeSetThreadPriority(hThread, npriority) function to set priorties With previous versions of Windows CE, you used to set a version by specifying a symbolic constant like THREAD_PRIORITY_TIME_CRITICAL (highest priority) and THREAD_PRIORITY_IDLE (lowest priority). If you look in the include file, winbase.h, you find the following values: #define THREAD_PRIORITY_TIME_CRITICAL 0 #define THREAD_PRIORITY_IDLE 7 Windows CE.NET does not have 256 symbolic constants. Instead, you use integer values 0 to 255 to specify priorities, where 0 signifies the highest priority and 255 signifies the lowest priority. Delivery Tip Some drivers have default priorities set in the registry The eight priorities 0 to 8 in Windows CE 2.x get mapped to the lowest eight priorities 248 to 255 in Windows CE 3.0 or higher version. For example, you can run a program written for Windows CE 2.x on Windows CE 3.0 or higher version. Such a program sets its priorities by calling SetThreadPriority(). For example: SetThreadPriority(hThread, 0); // 0 is the highest priority If you call the equivalent Windows CE.NET function with the same parameters, the output will remain the same. For example, CeSetThreadPriority(hThread, 248); // 0 is the highest priority In other words, to access the highest thread priorities in Windows CE 3.0 or higher version, you must call the new thread priority function: CeSetThreadPriority. The default thread priority is 251. Each of the two following lines of code set the thread priority to 251 when running on Windows CE 3.0:

15 Module 3: Kernel Features 11 SetThreadPriority (hthread, THREAD_PRIORITY_NORMAL); CeSetThreadPriority (hthread, 251);

16 12 Module 3: Kernel Features Priority Inversion Handling To introduce the concept of priority inversion for threads. When using synchronization objects, there is an inherent issue with thread priority levels. Priority A Blocks on Mutex Mutex Acquires Mutex B Acquires Mutex Frees Mutex C Time Windows CE supports priority inversion, which refers to a situation in which the use of a mutex, critical section, or semaphore resource by a lower-priority thread delays the execution of a higher-priority thread, when both are contending for the same resources. To correct this situation and free the higherpriority thread, Windows CE allows the lower-priority thread to inherit the more critical thread's priority and run at the higher priority until it releases its use of the resource. Because an unbounded amount of time is needed to relinquish the inverted thread and it is out of the control of the kernel, the OEM loses control of the scheduling process. To guarantee real-time performance, OEMs should ensure that a priority inversion condition does not occur.

17 Module 3: Kernel Features 13 Thread Quantum Control To describe the thread quantum control. The thread quantum is the duration of the scheduler's time slice. Quantum defines the duration of time slice Default Quantum Value Windows CE.NET uses a default value of 100ms During call to OEMInit(), OEM can override this value Override by setting dwdefaultthreadquantum Applications Can Override for individual threads: DWORD CeGetThreadQuantum(); BOOL CeSetThreadQuantum(HANDLE hthread, DWORD dwtime) The thread quantum is the duration of the scheduler's time slice. Each Windows CE.NET system has a default quantum, which is set in the OEM Adaption Layer (OAL) in the call to OemInit by setting the dwdefaultthreadquantum global variable. In addition, individual threads can query and set the time slice by calling the CeSetThreadQuantum function. This function is defined as follows: WINBASEAPI BOOL WINAPI CeSetThreadQuantum(HANDLE hthread, DWORD dwtime); The first parameter, hthread, is either a thread handle returned by the call to CreateThread, or for the currently executing thread the value returned by GetCurrentThread. The second parameter, dwtime, is the duration in milliseconds. Incidentally, there has been an important change to the Windows CE scheduler. In Windows CE 2.0, threads with the highest priority that is, threads with a priority of THREAD_PRIORITY_TIME_CRITICAL always run to completion. This is no longer true on Windows CE.NET. Under Windows CE 3.0, any thread to become a run-to-completion thread by setting the thread quantum to zero. Such threads can still be interrupted by higher priority threads, but will never be interrupted to allow other threads at the same priority to run.

18 14 Module 3: Kernel Features Thread APIs To introduce the functions used with threads. Here are the functions you will use from your drivers and applications to implement threads on your system. Call CreateThread function to create a thread HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa, lpsa, DWORD dwstack, LPTHREAD_START_ROUTINE lpfn, lpfn, LPVOID lpparam, DWORD dwcreate, LPDWORD lpthreadid) lpsa points to a SECURITY_ATTRIBUTES structure, for the thread security dwstack is the stack size. If ZERO, the process default is used lpfn is the thread entry point lpparam is the parameter to be passed to the thread entry point function dwcreate is a flag field lpthreadid points to a DWORD location for the return value, the thread ID You can create a thread by calling CreateThread. The CreateThread function has the most features and requires the most parameters: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa, DWORD dwstack, LPTHREAD_START_ROUTINE lpfn, LPVOID lpparam, DWORD dwcreate, LPDWORD lpthreadid) lpsa lpsa points to a SECURITY_ATTRIBUTES structure, for the thread security. dwstack dwstack is the stack size. If ZERO, the process default is used. lpfn lpfn is the thread entry point. Declare as follows: DWORD WINAPI ThreadMain (LPVOID lpparam) {...} lpparam lpparam is the parameter to be passed to the thread entry point function. dwcreate dwcreate is a flag field. The only defined value is CREATE_SUSPENDED, which creates the thread in a suspended state. lpthreadid lpthreadid points to a DWORD location for the return value, the thread ID.

19 Module 3: Kernel Features 15 Fibers To introduce a new v4.0 concept called Fibers. Fibers are used by applications developers when they wish to manually schedule their own thread. Run in the context of the threads that schedule them Each thread can schedule multiple fibers Does not have the same state information as that is associated with a thread Are not preemptively scheduled You schedule a fiber by switching to it. Call SwitchToFiber ConvertThreadToFiber Must be called before scheduling the first fiber to create an area that stores fiber state information CreateFiber Is used to create a new fiber from an existing fiber DeleteFiber Cleans up the data associated with a fiber Fibers run in the context of the threads that schedule them. Each thread can schedule multiple fibers. In general, fibers do not provide advantages over a well-designed multithreaded application. However, using fibers can make it easier to port applications that were designed to schedule their own threads. From a system standpoint, a fiber assumes the identity of the thread that created it. For example, if a fiber accesses thread local storage (TLS), it is accessing the thread local storage of the thread that created it. In addition, if a fiber calls the ExitThread function, the thread that created it exits. However, a fiber does not have all the same state information associated with it as that associated with a thread. The only state information maintained for a fiber is its stack, a subset of its registers, and the fiber data provided during fiber creation. The saved registers are the set of registers typically preserved across a function call. Fibers are not preemptively scheduled. You schedule a fiber by switching to it from another fiber. The system still schedules threads to run. When a thread running fibers is preempted, its currently running fiber is preempted. The fiber runs when its thread runs. Before scheduling the first fiber, call the ConvertThreadToFiber function to create an area in which to save fiber state information. The calling thread is now the currently executing fiber. The stored state information for this fiber includes the fiber data passed as an argument to ConvertThreadToFiber. The CreateFiber function is used to create a new fiber from an existing fiber; the call requires the stack size, the starting address, and the fiber data. The starting address is typically a user-supplied function, called the fiber function that takes one parameter (the fiber data) and does not return a value. If your fiber function returns, the thread running the fiber exits. To execute any fiber created with CreateFiber, call the SwitchToFiber function. You can call SwitchToFiber with the address of a fiber created by a different thread. To do this, you must have the address returned to the other thread when it called CreateFiber and you must use proper synchronization.

20 16 Module 3: Kernel Features A fiber can retrieve the fiber data by calling the GetFiberData macro. A fiber can retrieve the fiber address at any time by calling the GetCurrentFiber macro. To clean up the data associated with a fiber, call the DeleteFiber function. You must take care when calling DeleteFiber. If you call DeleteFiber for a fiber created by another thread, you can cause the other thread to terminate abnormally. If DeleteFiber is called from the currently running fiber, its thread calls ExitThread.

21 Module 3: Kernel Features 17 Protecting Applications To describe the measures that can be used to protect the Windows CE.NET applications. The measures that can be used to protect the Windows CE.NET applications are... Protected APIs Certifying Trust Another feature of kernel allows you to protect your applications and device from malicious applications. To accomplish this, the feature uses the certification security system.

22 18 Module 3: Kernel Features Protected APIs To describe the protected APIs. To implement a trusted environment use To implement trusted environment: Use OEMCertifyModuleInit and OEMCertifyModule OEM functions Use CeGetCurrentTrust and CeGetCallerTrust APIs Certify applications at load time with signature verification Values returned by the OEMCertifyModule function are: OEM_CERTIFY_TRUST OEM_CERTIFY_RUN OEM_CERTIFY_FALSE To create a trusted environment, an original equipment manufacturer (OEM) must implement two OEM functions: OEMCertifyModuleInit and OEMCertifyModule. Once these two functions are implemented, the kernel streams every module (DLL or EXE) that does not exist in a MODULES section of a.bin file to the OEM. The OEM can then implement the type of security needed to protect the system. The kernel expects the OEM to identify which applications and modules should be trusted, not trusted, or not loaded. In addition to the OEM functions, there are two additional Application Programming Interface (APIs) that are supported: CeGetCurrentTrust and CeGetCallerTrust. These APIs enable a DLL to query the trust level of a calling application. This in turn enables a DLL to restrict an application from executing untrusted applications. You can certify applications at load time with signature verification to protect your system from unfamiliar applications. This verification ensures that your Windows CE-based platform loads an application only if it contains a valid digital signature. The load-time signature verification functions enable you to: Create a valid signature Embed the signature in a.dll or.exe file Verify that an application contains a valid signature. To create a digital signature from a file, run the file through a hash function, and then sign the resulting hash with a private key. An easy way to create a digital signature from a file is to use Signfile.exe, which is included in Platform Builder. Signfile.exe is a tool for signing an executable file with a private key supplied by a CSP. To support load-time signature verification, you must implement the OEMCertifyModuleInit and OEMCertifyModule functions. OEMCertifyModule returns the following values:

23 Module 3: Kernel Features 19 OEM_CERTIFY_TRUST This value signifies that the application is trusted by the OEM to perform any operation. OEM_CERTIFY_RUN This value signifies that the application is trusted by the OEM to run, but is restricted from making certain function calls. OEM_CERTIFY_FALSE This value signifies that the application is not trusted by the OEM, therefore, is not allowed to run.

24 20 Module 3: Kernel Features Certifying Trust To introduce the OAL component necessary for Trust. To implement a trusted system, you must have an OAL capable of managing it. OEMCertifyModule function: Allows the platform creator to control the criteria for establishing or withholding trust Untrusted Applications: Cannot call CeSetThreadPriority Cannot call CeSetThreadQuantum Checking Trust: DWORD CeGetCurrentTrust(void); DWORD CeGetCallerTrust(void); 0 = None, 1 = Some, 2 = All There are quite a few restrictions put on DLLs and EXEs based on trust, however there are two things that untrusted applications cannot do. When a platform is created, the OEMCertifyModule function allows the platform creator to control the criteria for establishing or withholding trust. To check the default trust and the trust for the currently executing module, you call these two functions: CeGetCurrentTrust. This function gets the default. CeGetCallerTrust. This function gets the current module's trust level. Incidentally, strictly speaking this is a Windows CE 2.12 feature and not Windows CE 3.0. A module is restricted from calling the following functions if it is not trusted: CeSetThreadPriority CeSetThreadQuantum DebugActiveProcess ForcePageout LockPages PowerOffSystem ReadProcessMemory SetCleanRebootFlag SetInterruptEvent SetKMode SetProcPermissions SetSystemMemoryDivision UnlockPages

25 Module 3: Kernel Features 21 VirtualCopy WriteProcessMemory In addition, the CreateProcess debug flags DEBUG_ONLY_THIS_PROCESS and DEBUG_PROCESS are restricted. If these flags are used by a non-trusted application the identified process still launches, but it does not debug. Windows CE prevents untrusted applications from changing registry keys or values in certain crucial registry directories. These registry directories are protected and can only be modified by applications certified as trusted by the OEM. Untrusted applications are unable to modify keys or values in the following protected registry directories or in any of their subdirectories: HKEY_LOCAL_MACHINE\Comm HKEY_LOCAL_MACHINE\Drivers HKEY_LOCAL_MACHINE\HARDWARE HKEY_LOCAL_MACHINE\SYSTEM HKEY_LOCAL_MACHINE\Init HKEY_LOCAL_MACHINE\WDMDrivers HKEY_LOCAL_MACHINE\Servers Untrusted applications receive the ERROR_ACCESS_DENIED error code if applications attempt to use the following registry functions in any of the above registry directories: RegSetValueEx RegCreateKeyEx RegDeleteKey RegDeleteValue All applications, including unauthorized applications, are able to read any registry key or value. Because the rest of the registry is unprotected, OEMs should place all important registry information in the protected registry directories. The following lists trusted APIs: SetInterruptEvent CeSetThreadPriority CeSetThreadQuantum ForcePageout VirtualCopy LockPages UnlockPages SetProcPermissions SetKMode ReadProcessMemory WriteProcessMemory SetCleanRebootFlag CreateFileMapping DebugActiveProcess DeleteAndRenameFile DeleteFile RemoveDirectory CreateFile MoveFile SetFileAttributes CopyFile CryptUnprotectData

26 22 Module 3: Kernel Features SetCurrentUser SetUserData Note File based APIs are based on a file having the SYSTEM attribute set.

27 Module 3: Kernel Features 23 Synchronization Objects To define the need for synchronization. You will often need to use synchronization objects to ensure the accurate handling of resources. Why Synchronize? Synchronizing with Critical Sections Synchronizing with Mutexes Synchronization Enhancements When dealing with a multithreaded operating system, a scenario exists where multiple threads attempt to access the same resource. In order to guarantee stable results, you must synchronize access to this resource.

28 24 Module 3: Kernel Features Why Synchronize? To explain the need for synchronizing Here is a simple example of showing a potential synchronization problem. int x; WinMain(HANDLE hinstance, ) { } CreateThread(, A_Main, ); CreateThread(, B_Main, ); DWORD WINAPI A_Main(LPVOID p) { } for(x=0;x<100000;x++) { /*...Work...*/ } DWORD WINAPI B_Main(LPVOID p) { } for(x=1000;x>0;x--) { /*...Work...*/ } The need to synchronize can best be demonstrated with an example. Any discussion of synchronization requires two things: a shared resource, and two or more threads that access that resource. The Shared Resource For the sake of simplicity, the shared resource in this example is the global variable x. It is declared outside the boundaries of any function, so it is visible to all functions. The Threads The code in this example represents three threads. WinMain is the entry point for a Win32 process, replacing main. When a process starts, it always gets one thread for free. After that, calling the CreateThread function creates threads. When you call CreateThread, you always pass a function name. In the two calls shown in the example, A_Main and B_Main are the two entry points for the two threads. Both threads are accessing global variable x.

29 Module 3: Kernel Features 25 Synchronizing with Critical Sections To describe the use of critical sections. One way to solve the synchronization problem is to use critical sections as shown in this example. int x; DWORD WINAPI A_Main(LPVOID p) { } CRITICAL_SECTION cs; WinMain(HANDLE hinstance, ) { InitializeCriticalSection(&cs); CreateThread(, A_Main, ); CreateThread(, B_Main, ); } { EnterCriticalSection(&cs); for(x=0;x<100000;x++) { /*...Work...*/ } LeaveCriticalSection(&cs); DWORD WINAPI B_Main(LPVOID p) } EnterCriticalSection(&cs); for(x=1000;x>0;x--) { /*...Work...*/ } LeaveCriticalSection(&cs); One way to solve the synchronization problem is to use critical sections as shown in this example. About Critical Sections A critical section is a process-specific object. You can use it to coordinate the activity between two threads in the same process, but not two threads in different processes. You define it as a global variable, for example, cs, in the above example. Then, you start it up by calling InitializeCriticalSection. Why Critical Section works? Only one thread can own a critical section at any time. You gain ownership by calling EnterCriticalSection, and relinquish ownership by calling LeaveCriticalSection. If one thread already owns the critical section, the other thread upon calling EnterCriticalSection is blocked and stopped from running until the first thread lets it go. Enhancements Starting in Windows CE 3.0 additional support for the TryEnterCriticalSection function exists. This function allows a thread to verify if a critical section is available. If it is, then the thread gains ownership of the critical section. Otherwise, the thread becomes available for other tasks. This provides a bit more flexibility than EnterCriticalSection, which keeps a thread in a blocked state until the critical section becomes available. How Critical Section Can Break Down? This is not a perfect system. It is an opt-in protection mechanism. It is easy for a third piece of code to access global variable x without requesting ownership of the critical section. To get total protection, you may want to embed this code in a library or some kind of encapsulated object.

30 26 Module 3: Kernel Features Synchronizing With Mutexes To show how the structure of the code for a mutex is identical to the code structure used for critical sections. Another synchronization object that you can use to guard access to shared objects is the mutex. DWORD WINAPI A_Main(LPVOID p) { } int x; { WaitForSingleObject(hMutex, ); for(x=0;x<100000;x++) { /*...Work...*/ } ReleaseMutex(hMutex); HANDLE hmutex; WinMain(HANDLE hinstance, ) { hmutex = CreateMutex( ); CreateThread(, A_Main, ); CreateThread(, B_Main, ); } DWORD WINAPI B_Main(LPVOID p) } WaitForSingleObject(hMutex, ); for(x=1000;x>0;x--) { /*...Work...*/ } ReleaseMutex(hMutex); The code in the slide shows how a mutex can play the same role as a critical section. A mutex can also be used to coordinate access to a shared resource. So why are there two such objects? Obtaining Mutex Ownership To gain access to the resource that the mutex protects, a thread calls WaitForSingleObject. This function returns when either the resource becomes available, or the timeout expires. The timeout is specified in milliseconds as a parameter to the function. Note A related function, WaitForMultipleObjects, lets you wait on more than one object. Releasing Mutex Ownership To release mutex ownership and allow other threads to gain ownership, a thread calls the ReleaseMutex function. Delivery Tip It is important to note the difference between Critical Sections and Mutexes. Critical Sections and Mutexes Compared The most significant difference between critical sections and mutexes is that the critical section is part of the address space of a process. The critical section is a global variable. As such, critical section can only be used to synchronize between the threads in a single process. Mutexes, however, can go across process boundaries. The advantage that a Critical Section offers over a mutex is that a critical section is faster than a mutex. Drivers often use critical Sections because a device driver is often only in one process.

31 Module 3: Kernel Features 27 Synchronization Enhancements To explain the enhancements in Synchronization that are available in Windows CE.NET. Let us take a look at some other improvements that are made to the Windows CE schedule. The two improvements for synchronization support include TryEnterCriticalSection() Allows only one thread to own a given critical section Makes it safer to request a critical section since it is nonblocking Semaphores Are mutexes with a count Are useful if you wish to limit the number of threads that can access a resource. The two main improvements in synchronization are TryEnterCriticalSection() and semaphores. TryEnterCriticalSection() TryEnterCriticalSection() attempts to enter a critical section without blocking. If the call is successful, the calling thread takes ownership of the critical section. As you may already know, critical sections are used as stop signs for the threads within a process. Only one thread may own a given critical section. This function, which has existed on desktop Windows for a while, makes it safer to request a critical section since it is non-blocking. Semaphores Semaphores are mutexes with a count. Windows CE starting in version 3.0 provides a support for semaphores. A semaphore might be useful, if you wish to limit the number of threads that can access a resource. For example, to avoid performance bottlenecks a web server might limit the number of threads that can access a particular set of pages.

32 28 Module 3: Kernel Features Memory Model To describe how Windows CE kernel performs memory mapping. In this section, you will learn about physical to virtual mapping used by the Windows CE kernel in memory mapping. Physical Memory Virtual Memory In this section, you will learn about physical to virtual mapping used by the Windows CE kernel in memory mapping.

33 Module 3: Kernel Features 29 Physical Memory To explain how Windows CE is built to use physical memory Windows CE is built to use both ROM, also known as flash memory, and RAM Physical Memory Dbg Serial Port 32 MB Flash Kernel Virtual Address Reserved 32 MB Flash 64 MB RAM 512 MB Uncached C A MB RAM 32 MB Flash 64 MB RAM 512 MB Cached 2 GB User Windows CE is built to use both ROM, also known as flash memory, and RAM. ROM The Platform Builder creates an operating system image for loading into ROM or flash memory. During developing, the contents of ROM or flash get stored in a file called NK.BIN. The Platform Builder BIB files have a MEMORY section that positions the ROM image in the virtual address space. RAM Available RAM gets split into two parts: Object store Program memory The Windows CE object store is further divided into three parts: A File system The Registry Windows CE databases

34 30 Module 3: Kernel Features Virtual Memory To explain how virtual memory is managed by the kernel. Windows CE.NET is a protected mode operating system, therefore, all threads have access only to Virtual Memory. Reserved Memory Mapping (Shared) Slot 32:Process32 2GB 2GB Virtual memory management Windows CE.NET provides only one virtual address space of 4 GB for all the applications it uses Using virtual memory Allocate large blocks of memory Does not fragment Windows CE.NET manages virtual memory in 64 KB blocks Using the local heap 32MB... Slot 1:Process1 Slot 0:Active Process Is a region of reserved virtual memory space that Windows CE.NET manages for your application Using the stack Is the storage area for variables that are referenced in a function Windows CE.NET is a protected mode operating system and therefore all threads have access only to Virtual Memory. Virtual Memory Management Windows CE.NET provides only one virtual address space of 4 GB for all the applications it uses. This address space is divided into two parts of 2 GB each. The upper part is reserved for the system. The lower part is shared between all of the applications. Delivery Tip User process can only access Virtual Memory directly. At the beginning of the virtual address space are 33 slots of 32 MB each. Slots 1 to32 correspond to applications 1to 32. This means that each application has only 32 MB of private address space. Slot 0 is a special slot that represents the memory of the current active process. Each slot is divided into 512 blocks. Each block is a region of 64 KB. Each block is in turn divided into pages of 1 KB or 4 KB, depending on the processor being used. These pages are mapped to physical memory. The area extending from the end of slot 32 to the 2 GB limit is shared, and is used for file mapping, shared memory, and large memory mapping. Using Virtual Memory Use the virtual memory API to allocate large blocks of memory. The advantage of using virtual memory is that it does not fragment. Windows CE is always allocated an integral number of pages. Because Windows CE.NET manages virtual memory in 64 KB blocks, you must ensure that you use all of the memory efficiently. Also, Windows CE requires a slight overhead for managing the memory mapping. The following represent the functions used in virtual memory management: VirtualAlloc VirtualAlloc reserves and commits virtual memory.

35 Module 3: Kernel Features 31 VirtualQuery VirtualQuery determines the read/write status of a virtual memory page. VirtualProtect VirtualProtect alters access rights on committed pages. VirtualFree VirtualFree frees virtual memory. VirtualCopy VirtualCopy maps virtual addresses to physical addresses. Using the Local Heap A heap is a region of reserved virtual memory space that Windows CE.NET manages for your application. The original heap is called the local heap. Unlike VirtualAlloc, you can allocate memory on a heap in 4-byte or 8-byte units, depending on your CPU type. In addition to being more efficient for small sizes, the heap can help you avoid having to deal with the different sizes of memory pages that different microprocessors support. The heap also has no set limit. However, any heap allocations greater than 192 KB are made by calling the VirtualAlloc function. If you attempt to allocate more memory than Windows CE originally set aside for a heap, the system tries to find unreserved memory. As with virtual memory mapping, this memory might not be physically located next to the original heap. Also, because Windows CE allocates memory in fixed blocks, the heap may become fragmented over time. Use the local heap when you need to allocate specific sizes of memory on a regular basis. Note Because Windows CE reclaims a memory page only if that page is totally free, be sure that you deallocate memory blocks correctly when you are using the heap. This becomes an issue with applications that run for a long time, such as applications designed for the PocketPC. To allocate and deallocate memory using the local heap: 1. Call the LocalAlloc function with the size of the memory block passed in the ubytes parameter. LocalAlloc returns a handle to the virtual memory block that is allocated to your application. Windows CE also maps the virtual memory block to a physical memory block at this time. 2. Call LocalLock to convert a memory handle to a memory pointer, which you need to use to access the memory allocated to your application. 3. If necessary, call the LocalSize and LocalReAlloc functions to reallocate the local heap memory. 4. If you need to increase the size of a block, call LocalSize to determine if the block contains enough space. Then, call LocalReAlloc to either add memory to the top of the allocation or move the block to a larger area. 5. Call the LocalUnlock function followed by the LocalFree function to return the memory to Windows CE.

36 32 Module 3: Kernel Features Using the Stack The stack is the storage area for variables that are referenced in a function. Windows CE allocates memory for a variable from the stack and then deallocates the memory after the function call is complete. When a thread or process begins, Windows CE allocates one page of memory to the stack for that thread. Each thread has a stack, and the default size for each stack is 65K. However, you can override this size for any application by using the /STACKSIZE linker switch.

37 Module 3: Kernel Features 33 Structured Exception Handling To explain structured exception handling. In order to keep your system from halting when your application throws an exception, you should implement the following system. try { // // Protected block. } except (/* (/* filter */ */ ) { // // Exception handler. } _try _except Exception handler The code illustration on the slide shows the syntax of a try-except pair. try The try statement precedes a compound statement that makes up the protected block. This compound statement can contain any combination of C function calls, nested exception blocks, and nested termination blocks. One restriction is that jumping - using a goto - into the body of a try block is not permitted. If any exceptions occur within the try block, the exception becomes a candidate for being handled by the exception handling code. except The except statement precedes the filter expression. The role of a filter expression is to check for exceptions that the exception handler is equipped to handle. This expression can be any combination of function calls and (commaseparated) assignment statements. The final result must be one of the following: EXCEPTION_EXECUTE_HANDLER Execute exception handler. EXCEPTION_CONTINUE_SEARCH Pass control to next filter. EXCEPTION_CONTINUE_EXECUTION Restart offending instruction. Exception Handler The exception handler is a compound block made up of any combination of C statements, including C function calls, nested exception blocks, and nested termination blocks. Just like the try-block, you cannot jump into the middle of an exception handler.

38 34 Module 3: Kernel Features Structured Exception Handling: Filter To describe the role of the filter expression. The filter expression determines how a particular exception is handled. try { } except ( ) { } // // hard hard code code a value value except (EXCEPTION_EXECUTE_HANDLER) // // expression except((getexceptioncode()== EXCEPTION_ACCESS_VIOLATION)? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) // // call call a function except (CheckIt(GetExceptionCode()) int int CheckIt (DWORD dwcode) { switch (dwcode) { case case xxxx:... } return EXCEPTION_EXECUTE_HANDLER; } The filter expression determines how a particular exception is handled. Valid Return Values A filter expression must return one of the following three values, depending on how a particular exception is to be handled: EXCEPTION_EXECUTE_HANDLER Execute exception handler. EXCEPTION_CONTINUE_SEARCH Pass control to next filter. EXCEPTION_CONTINUE_EXECUTION Restart offending instruction. Filter Expression As shown in the figure, a filter expression could be: A hard-coded return value The result of an expression, or A call to a function, which would then return one of the three valid return values.

39 Module 3: Kernel Features 35 Structured Exception Handling: Exception API To describe the functions that support exception handling. Use these functions with exception handling. Create an exception VOID VOID RaiseException(dwCode, dwflags, cargs, lpargs) Query exception DWORD DWORD GetExceptionCode (VOID) Query abnormal termination BOOL BOOL AbnormalTermination (VOID) Query exception information LPEXCEPTION_POINTERS GetExceptionInformation (void) Here are some functions which support exception handling. Creating an Exception If you define your own exceptions, you can raise them by calling RaiseException. This function is defined: VOID RaiseException (DWORD dwcode, DWORD dwflags, DWORD cargs, LPDWORD lpargs) dwcode dwcodeis the exception code. dwflags dwflags is a flag field that can be ZERO or EXCEPTION_NONCONTINUABLE, when an instruction cannot be restarted. cargs cargs is a count of the arguments in the DWORD array pointed to by lpargs. lpargs lpargs is a pointer to an array of DWORD arguments (NULL is OK also). Query an Exception Code The GetExceptionCode function returns the exception code that caused an exception to be raised. This function can only be called within a filter expression or within the exception handler.

CSE 4/521 Introduction to Operating Systems. Lecture 29 Windows 7 (History, Design Principles, System Components, Programmer Interface) Summer 2018

CSE 4/521 Introduction to Operating Systems. Lecture 29 Windows 7 (History, Design Principles, System Components, Programmer Interface) Summer 2018 CSE 4/521 Introduction to Operating Systems Lecture 29 Windows 7 (History, Design Principles, System Components, Programmer Interface) Summer 2018 Overview Objective: To explore the principles upon which

More information

SOFTWARE ARCHITECT MICROSOFT CORPORATION BLOGS.MSDN.COM/MIKEHALL

SOFTWARE ARCHITECT MICROSOFT CORPORATION BLOGS.MSDN.COM/MIKEHALL MIKE HALL SOFTWARE ARCHITECT MICROSOFT CORPORATION MIKEHALL@MICROSOFT.COM BLOGS.MSDN.COM/MIKEHALL Windows CE Backgrounder Windows Embedded CE Architecture Real-Time Architecture Tools and Application Development

More information

OVERVIEW. Last Week: But if frequency of high priority task increases temporarily, system may encounter overload: Today: Slide 1. Slide 3.

OVERVIEW. Last Week: But if frequency of high priority task increases temporarily, system may encounter overload: Today: Slide 1. Slide 3. OVERVIEW Last Week: Scheduling Algorithms Real-time systems Today: But if frequency of high priority task increases temporarily, system may encounter overload: Yet another real-time scheduling algorithm

More information

About INtime Win32 and real time extension system calls

About INtime Win32 and real time extension system calls About INtime Win32 and real time extension system calls Contents Overview How the Win32 API (iwin32) fits in the INtime environment INtime Win32 system calls Porting a Windows application to INtime Overview

More information

Module 3-1: Building with DIRS and SOURCES

Module 3-1: Building with DIRS and SOURCES Module 3-1: Building with DIRS and SOURCES Contents Overview 1 Lab 3-1: Building with DIRS and SOURCES 9 Review 10 Information in this document, including URL and other Internet Web site references, is

More information

Multi-core Architecture and Programming

Multi-core Architecture and Programming Multi-core Architecture and Programming Yang Quansheng( 杨全胜 ) http://www.njyangqs.com School of Computer Science & Engineering 1 http://www.njyangqs.com Programming with Windows Threads Content Windows

More information

Zilog Real-Time Kernel

Zilog Real-Time Kernel An Company Configurable Compilation RZK allows you to specify system parameters at compile time. For example, the number of objects, such as threads and semaphores required, are specez80acclaim! Family

More information

What s An OS? Cyclic Executive. Interrupts. Advantages Simple implementation Low overhead Very predictable

What s An OS? Cyclic Executive. Interrupts. Advantages Simple implementation Low overhead Very predictable What s An OS? Provides environment for executing programs Process abstraction for multitasking/concurrency scheduling Hardware abstraction layer (device drivers) File systems Communication Do we need an

More information

ZiLOG Real-Time Kernel Version 1.2.0

ZiLOG Real-Time Kernel Version 1.2.0 ez80acclaim Family of Microcontrollers Version 1.2.0 PRELIMINARY Introduction The (RZK) is a realtime, preemptive, multitasking kernel designed for time-critical embedded applications. It is currently

More information

Microsoft RemoteFX for Remote Desktop Virtualization Host Capacity Planning Guide for Windows Server 2008 R2 Service Pack 1

Microsoft RemoteFX for Remote Desktop Virtualization Host Capacity Planning Guide for Windows Server 2008 R2 Service Pack 1 Microsoft RemoteFX for Remote Desktop Virtualization Host Capacity Planning Guide for Windows Server 2008 R2 Service Pack 1 Microsoft Corporation Published: March 2011 Abstract Microsoft RemoteFX delivers

More information

Outline. Process and Thread Management. Data Structures (2) Data Structures. Kernel Process Block (PCB)

Outline. Process and Thread Management. Data Structures (2) Data Structures. Kernel Process Block (PCB) Outline Process and Thread Management Ausgewählte Betriebssysteme Professur Betriebssysteme Fakultät Informatik Data Structures Process Creation Thread Creation Scheduling 2 Data Structures Data Structures

More information

Process and Thread Management

Process and Thread Management Process and Thread Management Ausgewählte Betriebssysteme Professur Betriebssysteme Fakultät Informatik Data Structures Process Creation Thread Creation Scheduling Outline 2 1 Data Structures Process represented

More information

Hands-On Lab: HORM. Lab Manual Expediting Power Up with HORM

Hands-On Lab: HORM. Lab Manual Expediting Power Up with HORM Lab Manual Expediting Power Up with HORM Summary In this lab, you will learn how to build a XP embedded images capable of supporting HORM (Hibernate Once Resume Many). You will also learn how to utilize

More information

Introduction to the ThreadX Debugger Plugin for the IAR Embedded Workbench C-SPYDebugger

Introduction to the ThreadX Debugger Plugin for the IAR Embedded Workbench C-SPYDebugger C-SPY plugin Introduction to the ThreadX Debugger Plugin for the IAR Embedded Workbench C-SPYDebugger This document describes the IAR C-SPY Debugger plugin for the ThreadX RTOS. The ThreadX RTOS awareness

More information

Threads in Java. Threads (part 2) 1/18

Threads in Java. Threads (part 2) 1/18 in Java are part of the Java language. There are two ways to create a new thread of execution. Declare a class to be a subclass of Thread. This subclass should override the run method of class Thread.

More information

Processes. 4: Threads. Problem needs > 1 independent sequential process? Example: Web Server. Last Modified: 9/17/2002 2:27:59 PM

Processes. 4: Threads. Problem needs > 1 independent sequential process? Example: Web Server. Last Modified: 9/17/2002 2:27:59 PM Processes 4: Threads Last Modified: 9/17/2002 2:27:59 PM Recall: A process includes Address space (Code, Data, Heap, Stack) Register values (including the PC) Resources allocated to the process Memory,

More information

Xinu on the Transputer

Xinu on the Transputer Purdue University Purdue e-pubs Department of Computer Science Technical Reports Department of Computer Science 1990 Xinu on the Transputer Douglas E. Comer Purdue University, comer@cs.purdue.edu Victor

More information

Microsoft Exchange Server SMTPDiag

Microsoft Exchange Server SMTPDiag Microsoft Exchange Server SMTPDiag Contents Microsoft Exchange Server SMTPDiag...1 Contents... 2 Microsoft Exchange Server SMTPDiag...3 SMTPDiag Arguments...3 SMTPDiag Results...4 SMTPDiag Tests...5 Copyright...5

More information

CHAPTER 2: PROCESS MANAGEMENT

CHAPTER 2: PROCESS MANAGEMENT 1 CHAPTER 2: PROCESS MANAGEMENT Slides by: Ms. Shree Jaswal TOPICS TO BE COVERED Process description: Process, Process States, Process Control Block (PCB), Threads, Thread management. Process Scheduling:

More information

Scheduling. CS 161: Lecture 4 2/9/17

Scheduling. CS 161: Lecture 4 2/9/17 Scheduling CS 161: Lecture 4 2/9/17 Where does the first process come from? The Linux Boot Process Machine turned on; BIOS runs BIOS: Basic Input/Output System Stored in flash memory on motherboard Determines

More information

DSP/BIOS Kernel Scalable, Real-Time Kernel TM. for TMS320 DSPs. Product Bulletin

DSP/BIOS Kernel Scalable, Real-Time Kernel TM. for TMS320 DSPs. Product Bulletin Product Bulletin TM DSP/BIOS Kernel Scalable, Real-Time Kernel TM for TMS320 DSPs Key Features: Fast, deterministic real-time kernel Scalable to very small footprint Tight integration with Code Composer

More information

Module 23: Windows NT. Windows NT

Module 23: Windows NT. Windows NT Module 23: Windows NT History Design Principles System Components Environmental Subsystems File System Networking Programmer Interface Operating System Concepts 23.1 Silberschatz and Galvin c 1998 Windows

More information

Processes. CS 475, Spring 2018 Concurrent & Distributed Systems

Processes. CS 475, Spring 2018 Concurrent & Distributed Systems Processes CS 475, Spring 2018 Concurrent & Distributed Systems Review: Abstractions 2 Review: Concurrency & Parallelism 4 different things: T1 T2 T3 T4 Concurrency: (1 processor) Time T1 T2 T3 T4 T1 T1

More information

Operating Systems Design Fall 2010 Exam 1 Review. Paul Krzyzanowski

Operating Systems Design Fall 2010 Exam 1 Review. Paul Krzyzanowski Operating Systems Design Fall 2010 Exam 1 Review Paul Krzyzanowski pxk@cs.rutgers.edu 1 Question 1 To a programmer, a system call looks just like a function call. Explain the difference in the underlying

More information

Module 23: Windows NT

Module 23: Windows NT Module 23: Windows NT History Design Principles System Components Environmental Subsystems File System Networking Programmer Interface Operating System Concepts 23.1 Silberschatz and Galvin c 1998 Windows

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2017 Lecture 10 Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 Chapter 6: CPU Scheduling Basic Concepts

More information

Introduction. CS3026 Operating Systems Lecture 01

Introduction. CS3026 Operating Systems Lecture 01 Introduction CS3026 Operating Systems Lecture 01 One or more CPUs Device controllers (I/O modules) Memory Bus Operating system? Computer System What is an Operating System An Operating System is a program

More information

Operating System Concepts Ch. 5: Scheduling

Operating System Concepts Ch. 5: Scheduling Operating System Concepts Ch. 5: Scheduling Silberschatz, Galvin & Gagne Scheduling In a multi-programmed system, multiple processes may be loaded into memory at the same time. We need a procedure, or

More information

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management.

1 Do not confuse the MPU with the Nios II memory management unit (MMU). The MPU does not provide memory mapping or management. Nios II MPU Usage March 2010 AN-540-1.0 Introduction This application note covers the basic features of the Nios II processor s optional memory protection unit (MPU), describing how to use it without the

More information

Configuring TLS 1.2 in EventTracker v9.0

Configuring TLS 1.2 in EventTracker v9.0 Configuring TLS 1.2 in EventTracker v9.0 Publication Date: August 6, 2018 Abstract This Guide will help EventTracker Administrators to configure TLS ( Transport Layer Security) protocol 1.2 for EventTracker

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Spring 2018 Lecture 8 Threads and Scheduling Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 FAQ How many threads

More information

Roadmap for This Lecture

Roadmap for This Lecture Thread Scheduling 1 Roadmap for This Lecture Overview Priorities Scheduling States Scheduling Data Structures Quantum Scheduling Scenarios Priority Adjustments (boosts and decays) Multiprocessor Scheduling

More information

MFC Programmer s Guide: Getting Started

MFC Programmer s Guide: Getting Started MFC Programmer s Guide: Getting Started MFC PROGRAMMERS GUIDE... 2 PREPARING THE DEVELOPMENT ENVIRONMENT FOR INTEGRATION... 3 INTRODUCING APC... 4 GETTING VISUAL BASIC FOR APPLICATIONS INTO YOUR MFC PROJECT...

More information

Real-Time Programming

Real-Time Programming Real-Time Programming Week 7: Real-Time Operating Systems Instructors Tony Montiel & Ken Arnold rtp@hte.com 4/1/2003 Co Montiel 1 Objectives o Introduction to RTOS o Event Driven Systems o Synchronization

More information

CPU Scheduling. Operating Systems (Fall/Winter 2018) Yajin Zhou ( Zhejiang University

CPU Scheduling. Operating Systems (Fall/Winter 2018) Yajin Zhou (  Zhejiang University Operating Systems (Fall/Winter 2018) CPU Scheduling Yajin Zhou (http://yajin.org) Zhejiang University Acknowledgement: some pages are based on the slides from Zhi Wang(fsu). Review Motivation to use threads

More information

Windows Server 2012: Manageability and Automation. Module 1: Multi-Machine Management Experience

Windows Server 2012: Manageability and Automation. Module 1: Multi-Machine Management Experience Windows Server 2012: Manageability and Automation Module Manual Author: Rose Malcolm, Content Master Published: 4 th September 2012 Information in this document, including URLs and other Internet Web site

More information

Chapter 5: CPU Scheduling

Chapter 5: CPU Scheduling Chapter 5: CPU Scheduling Basic Concepts Scheduling Criteria Scheduling Algorithms Thread Scheduling Multiple-Processor Scheduling Operating Systems Examples Algorithm Evaluation Chapter 5: CPU Scheduling

More information

Server Installation Guide

Server Installation Guide Server Installation Guide Copyright: Trademarks: Copyright 2015 Word-Tech, Inc. All rights reserved. U.S. Patent No. 8,365,080 and additional patents pending. Complying with all applicable copyright laws

More information

Practical Malware Analysis

Practical Malware Analysis Practical Malware Analysis Ch 7: Analyzing Malicious Windows Programs Rev. 2-27-17 The Windows API (Application Programming Interface) What is the API? Governs how programs interact with Microsoft libraries

More information

CS 326: Operating Systems. Process Execution. Lecture 5

CS 326: Operating Systems. Process Execution. Lecture 5 CS 326: Operating Systems Process Execution Lecture 5 Today s Schedule Process Creation Threads Limited Direct Execution Basic Scheduling 2/5/18 CS 326: Operating Systems 2 Today s Schedule Process Creation

More information

Module 21: Windows 2000

Module 21: Windows 2000 Module 21: Windows 2000 History Design Principles System Components Environmental Subsystems File system Networking Programmer Interface 21.1 Windows 2000 32-bit preemptive multitasking operating system

More information

Module 21: Windows 2000

Module 21: Windows 2000 Module 21: Windows 2000 History Design Principles System Components Environmental Subsystems File system Networking Programmer Interface 21.1 Windows 2000 32-bit preemptive multitasking operating system

More information

Operating Systems. Figure: Process States. 1 P a g e

Operating Systems. Figure: Process States. 1 P a g e 1. THE PROCESS CONCEPT A. The Process: A process is a program in execution. A process is more than the program code, which is sometimes known as the text section. It also includes the current activity,

More information

CPU Scheduling: Objectives

CPU Scheduling: Objectives CPU Scheduling: Objectives CPU scheduling, the basis for multiprogrammed operating systems CPU-scheduling algorithms Evaluation criteria for selecting a CPU-scheduling algorithm for a particular system

More information

OPERATING SYSTEMS CS3502 Spring Processor Scheduling. Chapter 5

OPERATING SYSTEMS CS3502 Spring Processor Scheduling. Chapter 5 OPERATING SYSTEMS CS3502 Spring 2018 Processor Scheduling Chapter 5 Goals of Processor Scheduling Scheduling is the sharing of the CPU among the processes in the ready queue The critical activities are:

More information

Multiprocessor and Real-Time Scheduling. Chapter 10

Multiprocessor and Real-Time Scheduling. Chapter 10 Multiprocessor and Real-Time Scheduling Chapter 10 1 Roadmap Multiprocessor Scheduling Real-Time Scheduling Linux Scheduling Unix SVR4 Scheduling Windows Scheduling Classifications of Multiprocessor Systems

More information

SMD149 - Operating Systems

SMD149 - Operating Systems SMD149 - Operating Systems Roland Parviainen November 3, 2005 1 / 45 Outline Overview 2 / 45 Process (tasks) are necessary for concurrency Instance of a program in execution Next invocation of the program

More information

AC59/AT59/AC110/AT110 OPERATING SYSTEMS & SYSTEMS SOFTWARE DEC 2015

AC59/AT59/AC110/AT110 OPERATING SYSTEMS & SYSTEMS SOFTWARE DEC 2015 Q.2 a. Explain the following systems: (9) i. Batch processing systems ii. Time sharing systems iii. Real-time operating systems b. Draw the process state diagram. (3) c. What resources are used when a

More information

Microsoft Exchange 2000 Server Mailbox Folder Structure. Technical Paper

Microsoft Exchange 2000 Server Mailbox Folder Structure. Technical Paper Microsoft Exchange 2000 Server Mailbox Folder Structure Technical Paper Published: April 2002 Table of Contents Introduction...3 Mailbox Creation in Exchange 2000...3 Folder Structure in an Exchange 2000

More information

Windows History 2009 Windows 7 2

Windows History 2009 Windows 7 2 Example: Windows 1 Windows History 2009 Windows 7 2 Features added Windows2000 additions Plug-and-play Network directory service New GUI Vista additions New GUI More focus on security clean-up the code

More information

Creating Threads COMP755

Creating Threads COMP755 Creating Threads COMP755 "I pledged California to a Northern Republic and to a flag that should have no treacherous threads of cotton in its warp, and the audience came down in thunder." Thomas Starr King

More information

Tasks. Task Implementation and management

Tasks. Task Implementation and management Tasks Task Implementation and management Tasks Vocab Absolute time - real world time Relative time - time referenced to some event Interval - any slice of time characterized by start & end times Duration

More information

Windows 7 Overview. Windows 7. Objectives. The History of Windows. CS140M Fall Lake 1

Windows 7 Overview. Windows 7. Objectives. The History of Windows. CS140M Fall Lake 1 Windows 7 Overview Windows 7 Overview By Al Lake History Design Principles System Components Environmental Subsystems File system Networking Programmer Interface Lake 2 Objectives To explore the principles

More information

Final Examination. Thursday, December 3, :20PM 620 PM. NAME: Solutions to Selected Problems ID:

Final Examination. Thursday, December 3, :20PM 620 PM. NAME: Solutions to Selected Problems ID: CSE 237B EMBEDDED SOFTWARE, FALL 2009 PROF. RAJESH GUPTA Final Examination Thursday, December 3, 2009 5:20PM 620 PM NAME: Solutions to Selected Problems ID: Problem Max. Points Points 1 20 2 25 3 35 4

More information

Multiprocessor and Real- Time Scheduling. Chapter 10

Multiprocessor and Real- Time Scheduling. Chapter 10 Multiprocessor and Real- Time Scheduling Chapter 10 Classifications of Multiprocessor Loosely coupled multiprocessor each processor has its own memory and I/O channels Functionally specialized processors

More information

Processes Prof. James L. Frankel Harvard University. Version of 6:16 PM 10-Feb-2017 Copyright 2017, 2015 James L. Frankel. All rights reserved.

Processes Prof. James L. Frankel Harvard University. Version of 6:16 PM 10-Feb-2017 Copyright 2017, 2015 James L. Frankel. All rights reserved. Processes Prof. James L. Frankel Harvard University Version of 6:16 PM 10-Feb-2017 Copyright 2017, 2015 James L. Frankel. All rights reserved. Process Model Each process consists of a sequential program

More information

CODE TIME TECHNOLOGIES. Abassi RTOS. CMSIS Version 3.0 RTOS API

CODE TIME TECHNOLOGIES. Abassi RTOS. CMSIS Version 3.0 RTOS API CODE TIME TECHNOLOGIES Abassi RTOS CMSIS Version 3.0 RTOS API Copyright Information This document is copyright Code Time Technologies Inc. 2011-2013. All rights reserved. No part of this document may be

More information

CMPS 111 Spring 2013 Prof. Scott A. Brandt Midterm Examination May 6, Name: ID:

CMPS 111 Spring 2013 Prof. Scott A. Brandt Midterm Examination May 6, Name: ID: CMPS 111 Spring 2013 Prof. Scott A. Brandt Midterm Examination May 6, 2013 Name: ID: This is a closed note, closed book exam. There are 23 multiple choice questions, 6 short answer questions. Plan your

More information

STUDENT NAME: STUDENT ID: Problem 1 Problem 2 Problem 3 Problem 4 Problem 5 Total

STUDENT NAME: STUDENT ID: Problem 1 Problem 2 Problem 3 Problem 4 Problem 5 Total University of Minnesota Department of Computer Science & Engineering CSci 5103 - Fall 2018 (Instructor: Tripathi) Midterm Exam 1 Date: October 18, 2018 (1:00 2:15 pm) (Time: 75 minutes) Total Points 100

More information

CODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ARM Cortex-A9 CCS

CODE TIME TECHNOLOGIES. Abassi RTOS. Porting Document. ARM Cortex-A9 CCS CODE TIME TECHNOLOGIES Abassi RTOS Porting Document ARM Cortex-A9 CCS Copyright Information This document is copyright Code Time Technologies Inc. 2012. All rights reserved. No part of this document may

More information

CS2506 Quick Revision

CS2506 Quick Revision CS2506 Quick Revision OS Structure / Layer Kernel Structure Enter Kernel / Trap Instruction Classification of OS Process Definition Process Context Operations Process Management Child Process Thread Process

More information

Module 8: Customizing the OS Design

Module 8: Customizing the OS Design Module 8: Customizing the OS Design Catalog 1 Module 8: Customizing the OS Design 8-1 Catalog Overview 8-2 The CE 6.0 Shell 8-3 The SDK Module 8: Customizing the OS Design Catalog 2 Information in this

More information

Lecture 3: Concurrency & Tasking

Lecture 3: Concurrency & Tasking Lecture 3: Concurrency & Tasking 1 Real time systems interact asynchronously with external entities and must cope with multiple threads of control and react to events - the executing programs need to share

More information

Process- Concept &Process Scheduling OPERATING SYSTEMS

Process- Concept &Process Scheduling OPERATING SYSTEMS OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne PROCESS MANAGEMENT Current day computer systems allow multiple

More information

OS lpr. www. nfsd gcc emacs ls 1/27/09. Process Management. CS 537 Lecture 3: Processes. Example OS in operation. Why Processes? Simplicity + Speed

OS lpr. www. nfsd gcc emacs ls 1/27/09. Process Management. CS 537 Lecture 3: Processes. Example OS in operation. Why Processes? Simplicity + Speed Process Management CS 537 Lecture 3: Processes Michael Swift This lecture begins a series of topics on processes, threads, and synchronization Today: processes and process management what are the OS units

More information

(MCQZ-CS604 Operating Systems)

(MCQZ-CS604 Operating Systems) command to resume the execution of a suspended job in the foreground fg (Page 68) bg jobs kill commands in Linux is used to copy file is cp (Page 30) mv mkdir The process id returned to the child process

More information

How to Talk To Windows. What did it say?

How to Talk To Windows. What did it say? How to Talk To Windows What did it say? 1 DOS was essentially subservient. Your program was the master. When you wanted some service from DOS you called DOS it obeyed. You could even bypass DOS and communicate

More information

This slide show uses materials from the Windows Operating System Internals Curriculum Development Kit

This slide show uses materials from the Windows Operating System Internals Curriculum Development Kit This slide show uses materials from the Windows Operating System Internals Curriculum Development Kit --From the Windows Operating System Internals Curriculum Development Kit Although programs and processes

More information

RTOS 101. Understand your real-time applications. with the help of Percepio Tracealyzer

RTOS 101. Understand your real-time applications. with the help of Percepio Tracealyzer RTOS 101 Understand your real-time applications with the help of Percepio Tracealyzer RTOS 101 Tasks, Priorities and Analysis Figure 1: Tracealyzer showing RTOS task scheduling and calls to RTOS services.

More information

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective. Part I: Operating system overview: Processes and threads

ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective. Part I: Operating system overview: Processes and threads ECE 7650 Scalable and Secure Internet Services and Architecture ---- A Systems Perspective Part I: Operating system overview: Processes and threads 1 Overview Process concept Process scheduling Thread

More information

Memory Management. Mobile Hardware Resources. Address Space and Process. Memory Management Overview. Memory Management Concepts

Memory Management. Mobile Hardware Resources. Address Space and Process. Memory Management Overview. Memory Management Concepts Mobile Hardware Resources Memory Management Symbian Operating System 275078 Eka Ardianto 263416 Ikrimach M. 292964 Jumadi 275057 Muji Syukur 293082 Prisa M. Kusumantara 292301 Sheila Nurul Huda Moblie

More information

Processes and Threads

Processes and Threads Processes and Threads Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Based on original slides by Silberschatz, Galvin

More information

CPU Scheduling. Basic Concepts. Histogram of CPU-burst Times. Dispatcher. CPU Scheduler. Alternating Sequence of CPU and I/O Bursts

CPU Scheduling. Basic Concepts. Histogram of CPU-burst Times. Dispatcher. CPU Scheduler. Alternating Sequence of CPU and I/O Bursts CS307 Basic Concepts Maximize CPU utilization obtained with multiprogramming CPU Scheduling CPU I/O Burst Cycle Process execution consists of a cycle of CPU execution and I/O wait CPU burst distribution

More information

Integrate Veeam Backup and Replication. EventTracker v9.x and above

Integrate Veeam Backup and Replication. EventTracker v9.x and above Integrate Veeam Backup and Replication EventTracker v9.x and above Publication Date: September 27, 2018 Abstract This guide provides instructions to configure VEEAM to send the event logs to EventTracker

More information

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1 B GLOSSARY Application Programming Interface (API) A library of C/C++ functions and assembly macros that define VDK services. These services are essential for kernel-based application programs. The services

More information

Green Hills Software, Inc.

Green Hills Software, Inc. Green Hills Software, Inc. A Safe Tasking Approach to Ada95 Jim Gleason Engineering Manager Ada Products 5.0-1 Overview Multiple approaches to safe tasking with Ada95 No Tasking - SPARK Ada95 Restricted

More information

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD: ,

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD: , Question 2: (15 Marks) The Sleeping-Barber Problem: A barbershop consists of a waiting room with n chairs, and the barber room containing the barber chair. If there are no customers to be served, the barber

More information

CSE 120 PRACTICE FINAL EXAM, WINTER 2013

CSE 120 PRACTICE FINAL EXAM, WINTER 2013 CSE 120 PRACTICE FINAL EXAM, WINTER 2013 For each question, select the best choice. In the space provided below each question, justify your choice by providing a succinct (one sentence) explanation. 1.

More information

Course Syllabus. Operating Systems

Course Syllabus. Operating Systems Course Syllabus. Introduction - History; Views; Concepts; Structure 2. Process Management - Processes; State + Resources; Threads; Unix implementation of Processes 3. Scheduling Paradigms; Unix; Modeling

More information

Operating-System Structures

Operating-System Structures Operating-System Structures System Components Operating System Services System Calls System Programs System Structure System Design and Implementation System Generation 1 Common System Components Process

More information

In Class Assignment 2

In Class Assignment 2 In Class Assignment 2 Name: UMBC ID: Academic Integrity Statement: "Integrity of scholarship is essential for an academic community. The University expects that students will honor this. By signing this,

More information

Operating Systems Comprehensive Exam. Spring Student ID # 3/20/2013

Operating Systems Comprehensive Exam. Spring Student ID # 3/20/2013 Operating Systems Comprehensive Exam Spring 2013 Student ID # 3/20/2013 You must complete all of Section I You must complete two of the problems in Section II If you need more space to answer a question,

More information

Port Configuration. Configure Port of EventTracker Website

Port Configuration. Configure Port of EventTracker Website Port Configuration Configure Port of EventTracker Website Publication Date: May 23, 2017 Abstract This guide will help the end user to change the port of the Website, using the Port Configuration tool,

More information

Process Monitoring in Operating System Linux

Process Monitoring in Operating System Linux Process Monitoring in Operating System Linux ZDENEK SLANINA, VILEM SROVNAL Department of Measurement and Control VSB Technical University of Ostrava 17. listopadu 15, 708 33 Ostrava-Poruba CZECH REPUBLIC

More information

Integrate Routing and Remote Access Service (RRAS) EventTracker v8.x and above

Integrate Routing and Remote Access Service (RRAS) EventTracker v8.x and above Integrate Routing and Remote Access Service (RRAS) EventTracker v8.x and above Publication Date: April 18, 2017 Abstract This guide provides instructions to configure Routing and Remote Access Service

More information

CIS233J Java Programming II. Threads

CIS233J Java Programming II. Threads CIS233J Java Programming II Threads Introduction The purpose of this document is to introduce the basic concepts about threads (also know as concurrency.) Definition of a Thread A thread is a single sequential

More information

ALL the assignments (A1, A2, A3) and Projects (P0, P1, P2) we have done so far.

ALL the assignments (A1, A2, A3) and Projects (P0, P1, P2) we have done so far. Midterm Exam Reviews ALL the assignments (A1, A2, A3) and Projects (P0, P1, P2) we have done so far. Particular attentions on the following: System call, system kernel Thread/process, thread vs process

More information

Chapter 5: CPU Scheduling

Chapter 5: CPU Scheduling COP 4610: Introduction to Operating Systems (Fall 2016) Chapter 5: CPU Scheduling Zhi Wang Florida State University Contents Basic concepts Scheduling criteria Scheduling algorithms Thread scheduling Multiple-processor

More information

Problem Set 2. CS347: Operating Systems

Problem Set 2. CS347: Operating Systems CS347: Operating Systems Problem Set 2 1. Consider a clinic with one doctor and a very large waiting room (of infinite capacity). Any patient entering the clinic will wait in the waiting room until the

More information

Quadros. RTXC Kernel Services Reference, Volume 1. Levels, Threads, Exceptions, Pipes, Event Sources, Counters, and Alarms. Systems Inc.

Quadros. RTXC Kernel Services Reference, Volume 1. Levels, Threads, Exceptions, Pipes, Event Sources, Counters, and Alarms. Systems Inc. Quadros Systems Inc. RTXC Kernel Services Reference, Volume 1 Levels, Threads, Exceptions, Pipes, Event Sources, Counters, and Alarms Disclaimer Quadros Systems, Inc. makes no representations or warranties

More information

ArdOS The Arduino Operating System Reference Guide Contents

ArdOS The Arduino Operating System Reference Guide Contents ArdOS The Arduino Operating System Reference Guide Contents 1. Introduction... 2 2. Error Handling... 2 3. Initialization and Startup... 2 3.1 Initializing and Starting ArdOS... 2 4. Task Creation... 3

More information

Get detailed information from

Get detailed information from MS Windows API for Processes/Threads In MS Windows, the system call interface is not documented. Instead the MS Windows API is documented, which helps with being able to run programs portably across muliple

More information

Exclaimer Mail Archiver

Exclaimer Mail Archiver Deployment Guide - Outlook Add-In www.exclaimer.com Contents About This Guide... 3 System Requirements... 4 Software... 4 Installation Files... 5 Deployment Preparation... 6 Installing the Add-In Manually...

More information

Integrate Aventail SSL VPN

Integrate Aventail SSL VPN Publication Date: July 24, 2014 Abstract This guide provides instructions to configure Aventail SSL VPN to send the syslog to EventTracker. Once syslog is being configured to send to EventTracker Manager,

More information

Embedded Systems. 5. Operating Systems. Lothar Thiele. Computer Engineering and Networks Laboratory

Embedded Systems. 5. Operating Systems. Lothar Thiele. Computer Engineering and Networks Laboratory Embedded Systems 5. Operating Systems Lothar Thiele Computer Engineering and Networks Laboratory Embedded Operating Systems 5 2 Embedded Operating System (OS) Why an operating system (OS) at all? Same

More information

General Objectives: To understand the process management in operating system. Specific Objectives: At the end of the unit you should be able to:

General Objectives: To understand the process management in operating system. Specific Objectives: At the end of the unit you should be able to: F2007/Unit5/1 UNIT 5 OBJECTIVES General Objectives: To understand the process management in operating system Specific Objectives: At the end of the unit you should be able to: define program, process and

More information

Threads Chapter 5 1 Chapter 5

Threads Chapter 5 1 Chapter 5 Threads Chapter 5 1 Chapter 5 Process Characteristics Concept of Process has two facets. A Process is: A Unit of resource ownership: a virtual address space for the process image control of some resources

More information

HOTPin Software Instructions. Mac Client

HOTPin Software Instructions. Mac Client HOTPin Software Instructions Mac Client The information contained in this document represents the current view of Celestix Networks on the issues discussed as of the date of publication. Because Celestix

More information

CSCE Introduction to Computer Systems Spring 2019

CSCE Introduction to Computer Systems Spring 2019 CSCE 313-200 Introduction to Computer Systems Spring 2019 Threads Dmitri Loguinov Texas A&M University January 29, 2019 1 Updates Quiz on Thursday System Programming Tutorial (pay attention to exercises)

More information

RTX MiniTutorial APPLICATION PROFILING USING RTX TIME VIEW

RTX MiniTutorial APPLICATION PROFILING USING RTX TIME VIEW RTX MiniTutorial APPLICATION PROFILING USING RTX TIME VIEW Copyright 1996-2015 by IntervalZero, Inc. All rights reserved. No part of this document may be reproduced or transmitted in any form or by any

More information