Can you kindly help with the real world applications of non preeemptive scheduling as there seem to be no operating systems which use this sceduling is this just for theory or are there any working operating systems which use this scheduling? If what type of tasks are these opereating systems desginated to handle if there are any which are task specific.
Are there any Operating Systems that use non preemptive scheduling ? If so what type of tasks do they perform?
1.1k Views Asked by rikith reddy At
2
There are 2 best solutions below
Related Questions in OPERATING-SYSTEM
- Why two threads accessing one resource crashes one thread?
- How to tell the difference between linux and mac
- Can a single thread be shared among multiple processes ? If yes how?
- /usr/lib/* files had been deleted, how to restore these files
- What does a POSIX interface refer to in terms of microkernels?
- Is zero copy principle supported in Mac
- Why segment files into chunks for HTTP streaming?
- Add/remove process from kernel runqueue
- How does my computer know to which character a char corresponds?
- Who starts the OS process scheduler?
- ^M behind operating system version?
- How to make a scanf() type function in a 32bit os in c?
- How is `dup2` actually working?
- Logged in hostname/IP in linux command history
- Had 16-bit DOS a memory access limitation of 1 MB? If yes, how?
Related Questions in SCHEDULING
- How do I know the last sched time of a process
- rm scheduling - calculation
- Scheduling multiple instance of a single java process
- How to Schedule a job run at multiple time intervals
- What's the purpose of `on_rq` field in `task_struct`?
- How to schedule job in Jenkins at particular timings
- Run code at a certain time
- AJAX disabledDates Fullcalendar Machines/Users
- Cron like scheduling using Apache Oozie
- SQL Server grouping interval
- Why is response time important in CPU scheduling?
- What are the differences between "recursion", "a non-terminating procedure that happens to refer to itself", and "repeated scheduling"?
- Thread creation using pthread_create with SCHED_RR scheduling fails
- cpu scheduling SRTF
- Scheduled scaling of Azure VMSS (via Runbook)
Related Questions in REAL-TIME-SYSTEMS
- Getting Started with Neural Networks (ANN)?
- Can you use USB on RTLinux(Real Time Linux)?
- RTOS vs Traditional Firmware Coding
- Time Delay in Micro C OS II
- Does operational transformation work on structured documents such as HTML if simply treated as plain text?
- Why isn't every OS real-time?
- (Twitter) Storm's Window On Aggregation
- Are there any Operating Systems that use non preemptive scheduling ? If so what type of tasks do they perform?
- Use Case diagrams as a requirements gathering tool for new functionality - particularly in systems that only require very little user interaction
- Can the ANN model be suitable for different number of inputs?
- modelsim says: near ")": (vcom-1576) expecting IDENTIFIER. but fixing it gives more errors
- What happens when a realtime system violates its hard time target?
- Simple execution sequence for real time systems drawn in Java
- No "Enable EVL Core" in menufonfig
- How to execute the sample rtems program on eclipse ide?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
First, it's important to understand that preemption is a spectrum. You can imagine that one end of the spectrum is some form of hardcore preemtive scheduling, while the other end is some form of hardcore non-preemtive scheduling. In between the two extremes, there is a whole range of options, some of which exist as research proposals, while others have made their way to production-grade operating systems.
Preemtive scheduling enables the system to operate highly reliably when executing potentially untrusted or buggy code and improves the overall responsiveness of the system. That's why all modern large operating systems essentially use preemtive scheduling (with many variations).
However, for memory-constrained and/or real-time platforms, there has been and still ongoing a substantial amount of research on the advantages and disadvantages of preemtive scheduling (PMT) and non-preemtive scheduling (also called cooperative scheduling or CMT). Preemption generally degrades the predictability of the execution times of tasks. That is, the execution time of each task may either degrade or improve. This is mainly due to two reasons. First, different tasks may be operating on different data. Therefore, when a task gets scheduled to run next, the data that it will access will evict from the CPU caches some or all of the data used by the previously scheduled task, which may still need to be scheduled to run. Second, modern CPUs employ a number of dynamic prediction/speculation techniques (branch prediction, prefetching, etc.). The behaviors of different tasks may reduce or improve the effectiveness of these techniques, depending on how similar the tasks are, and incur a performance hit on every context-switch.
Non-preemtive scheduling can reduce memory consumption. If a task consists of several phases, it can allocate memory just to complete one phase and then release any memory that it will not need in later phases and yield control to allow other tasks to run. This is generally not possible with preemtive scheduling.
Non-preemtive scheduling naturally supports mutual exclusion without any additional complexity or performance overhead. This can be achieved by having tasks not to yield execution while they are executing in a mutually exclusive section of code. Locking mechanisms are required to support mutual exclusion with preemtive scheduling.
Because of these reasons, non-preemtive scheduling techniques are wildly used in memory-constrained and/or real-time systems. Wikipedia has a list of real-time OSes, many of which support non-preemtive scheduling.