

{"id":99897,"date":"2021-08-04T09:00:01","date_gmt":"2021-08-04T03:30:01","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=99897"},"modified":"2021-07-30T15:15:22","modified_gmt":"2021-07-30T09:45:22","slug":"process-scheduling-in-operating-system","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/","title":{"rendered":"Process Scheduling in Operating System"},"content":{"rendered":"<p>Process scheduling is an important part of multiprogramming operating systems. It is the process of removing the running task from the processor and selecting another task for processing. It schedules a process into different states like ready, waiting, and running.<\/p>\n<h3>Categories of Scheduling in OS<\/h3>\n<p>There are two categories of scheduling:<\/p>\n<p><strong>1. Non-preemptive:<\/strong> In non-preemptive, the resource can\u2019t be taken from a process until the process completes execution. The switching of resources occurs when the running process terminates and moves to a waiting state.<\/p>\n<p><strong>2. Preemptive:<\/strong> In preemptive scheduling, the OS allocates the resources to a process for a fixed amount of time. During resource allocation, the process switches from running state to ready state or from waiting state to ready state. This switching occurs as the CPU may give priority to other processes and replace the process with higher priority with the running process.<\/p>\n<h3>Process Scheduling Queues<\/h3>\n<p>There are multiple states a process has to go through during execution. The OS maintains a separate queue for each state along with the process control blocks (PCB) of all processes. The PCB moves to a new state queue, after being unlinked from its current queue, when the state of a process changes.<\/p>\n<p>These process scheduling queues are:<\/p>\n<p><strong>1. Job queue:<\/strong> Makes sure that processes stay in the system.<\/p>\n<p><strong>2. Ready queue:<\/strong> This stores a set of all processes in main memory, ready and waiting for execution. The ready queue stores any new process.<\/p>\n<p><strong>3. Device queue:<\/strong> This queue consists of the processes blocked due to the unavailability of an I\/O device.<\/p>\n<p>There are different policies that the OS uses to manage each queue and the OS scheduler decides how to move processes between the ready and run queue which allows only one entry per processor core on the system.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-99926\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues.jpg\" alt=\"Process Scheduling Queues in OS\" width=\"924\" height=\"403\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues.jpg 924w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues-768x335.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues-720x314.jpg 720w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues-520x227.jpg 520w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-Scheduling-Queues-320x140.jpg 320w\" sizes=\"auto, (max-width: 924px) 100vw, 924px\" \/><\/a><\/p>\n<p>The stages a process goes through are:<\/p>\n<ul>\n<li>A new process first goes in the Ready queue, where it waits for execution or to be dispatched.<\/li>\n<li>The CPU gets allocated to one of the processes for execution.<\/li>\n<li>The process issues an I\/O request, after which an OS places it in the I\/O queue.<\/li>\n<li>The process then creates a new subprocess and waits for its termination.<\/li>\n<li>If removed forcefully, the process creates an interrupt. Thus, once this interrupt completes, the process goes back to the ready queue.<\/li>\n<\/ul>\n<h3>Objectives of Process Scheduling in OS<\/h3>\n<p>Following are the objectives of process scheduling:<\/p>\n<p>1. It maximizes the number of interactive users within acceptable response times.<br \/>\n2. It achieves a balance between response and utilization.<br \/>\n3. It makes sure that there is no postponement for an unknown time and enforces priorities.<br \/>\n4. It gives reference to the processes holding the key resources.<\/p>\n<h3>Two-State Process Model<\/h3>\n<p>There are two states in the two-state process model, namely, running state and non-running state.<\/p>\n<p><strong>1. Running:<\/strong> A new process enters into the system in running state, after creation.<\/p>\n<p><strong>2. Not Running:<\/strong> The not running processes are stored in a queue until their turn to get executed arrives and each entry in the queue points to a particular process. The queue can be implemented using a linked list.<\/p>\n<p>If a process has been completed or aborted, the OS discards it and if it is interrupted, then the OS transfers it to the waiting queue. Irrespective of either case, the dispatcher then selects a process from the queue to execute.<\/p>\n<h3>Schedulers in OS<\/h3>\n<p>A scheduler is a special type of system software that handles process scheduling in numerous ways. It mainly selects the jobs that are to be submitted into the system and decides whether the currently running process should keep running or not. If not then which process should be the next one to run. A scheduler makes a decision:<\/p>\n<ul>\n<li>When the state of the current process changes from running to waiting due to an I\/O request or some unsatisfied OS.<\/li>\n<li>If the current process terminates.<\/li>\n<li>When the scheduler needs to move a process from running to ready state as it has already run for its allotted interval of time.<\/li>\n<li>When the requested I\/O operation is completed, a process moves from the waiting state to the ready state. So, the scheduler can decide to replace the currently-running process with a newly-ready one.<\/li>\n<\/ul>\n<h3>Types of Schedulers in operating System<\/h3>\n<p>There are three types of schedulers:<\/p>\n<h4>1. Long Term Scheduler:<\/h4>\n<p>A long-term scheduler also known as a job scheduler determines which program should be admitted to the system for processing. It selects and loads the processes into the memory for execution with the help of CPU scheduling. It provides a balanced combo of jobs, such as I\/O bound and processor bound and controls the degree of multiprogramming.<\/p>\n<p>A stable degree of multiprogramming means that the average rate of process creation and the average departure rate of processes leaving the system is equal. Many systems like time-sharing OS, do not have a long term scheduler as it is only required when a process changes its state from new to ready.<\/p>\n<h4>2. Short Term Scheduler:<\/h4>\n<p>A short-term scheduler also known as a CPU scheduler increases system performance as per the chosen set of criteria. This is the change of ready state to running state of the process.<\/p>\n<p>It selects a process from the multiple processes that are in ready state in order to execute it and also allocates the CPU to one of them. It is faster than long-term schedulers and is also called a dispatcher as it makes the decision on which process will be executed next.<\/p>\n<h4>3. Medium Term Scheduler:<\/h4>\n<p>Medium-term scheduling removes processes from the memory and is a part of swapping. It reduces the degree of multiprogramming and is in-charge of handling the swapped out processes. Swapping is necessary to improve the process mix.<\/p>\n<p>When a running process makes an I\/O request it becomes suspended i.e., it cannot be completed. Thus, in order to remove the process from the memory and make space for others, the suspended process is sent to the secondary storage. This is known as swapping, and the process that goes through swapping is said to be swapped out or rolled out.<\/p>\n<h3>Comparison of OS Schedulers<\/h3>\n<table>\n<tbody>\n<tr>\n<td><b>S.No.<\/b><\/td>\n<td><b>Long-Term Scheduler<\/b><\/td>\n<td><b>Short-Term Scheduler<\/b><\/td>\n<td><b>Medium-Term Scheduler<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">1.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">A job scheduler<\/span><\/td>\n<td><span style=\"font-weight: 400;\">A CPU scheduler<\/span><\/td>\n<td><span style=\"font-weight: 400;\">A process swapping scheduler<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">2.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Slowest speed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Fastest Speed<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Speed is between the other two<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">3.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Controls the degree of multiprogramming<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Provides less control over the degree of multiprogramming<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Reduces the degree of multiprogramming<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">4.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Absent or minimal in the time-sharing OS<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Minimal in time-sharing OS<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Part of time-sharing OS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400;\">5.<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Selects a process from pool and loads it into memory for execution<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Selects a process that is ready for execution<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Re-introduces processes into memory for continued execution<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Context Switch in OS<\/h3>\n<p>A context switch is an important feature of multitasking OS that can be used to store and restore the state or context of a CPU in a PCB, so that the execution of a process can be resumed from that very point at a later time. A context switch allows multiple processes to share a single CPU. Some hardware systems even employ two or more sets of processor registers, in order to avoid context switching time.<\/p>\n<p>When the scheduler switches the CPU from one process to another, the state of the current running process is stored into the PCB and the state for the next process is loaded from its own PCB. This is then used to set the PC, registers, etc. Since the register and memory state is saved and restored in context switches, they are computationally intensive. Following information is stored during switching:<\/p>\n<ul>\n<li>Program Counter<\/li>\n<li>Scheduling information<\/li>\n<li>Base and limit register value<\/li>\n<li>Currently used register<\/li>\n<li>Changed State<\/li>\n<li>I\/O State information<\/li>\n<li>Accounting information<\/li>\n<\/ul>\n<p>Context switch occurs when:<\/p>\n<ul>\n<li>A process with a higher priority than the running process enters the ready state.<\/li>\n<li>An Interrupt happens<\/li>\n<li>The user mode and kernel-mode switch. Though context switching doesn&#8217;t usually happen in this situation.<\/li>\n<li>We use preemptive CPU scheduling.<\/li>\n<\/ul>\n<h3>Mode Switch in OS<\/h3>\n<p>Mode switching happens usually when a system call is made or a fault occurs i.e., it happens when the processor privilege level is changed. A mode switch is necessary if a user process needs to access things exclusively accessible to the kernel. The executing process does not change during a mode switch. We can say that a mode switch occurs so that a process context switch can take place as only the kernel can cause a context switch.<\/p>\n<h3>Summary<\/h3>\n<p>Process scheduling schedules a process into ready, waiting, and running states. There are two categories of process scheduling: preemptive and non-preemptive scheduling. Job queue, ready queue, and device queue are the three queues of process scheduling.<\/p>\n<p>There are two states in the two-state model, namely, running and not running. A scheduler handles the task of process scheduling and has three types, short-term, long-term, and middle-term. A context switch is used to store and restore the context in a PCB.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Process scheduling is an important part of multiprogramming operating systems. It is the process of removing the running task from the processor and selecting another task for processing. It schedules a process into different&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":99923,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24565],"tags":[24891,24892,24889,24886,24893,24890],"class_list":["post-99897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-operating-system-tutorials","tag-context-switch-in-os","tag-mode-switch-in-os","tag-process-scheduling-in-operating-system","tag-process-scheduling-in-os","tag-process-scheduling-queues","tag-schedulers-in-os"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Process Scheduling in Operating System - DataFlair<\/title>\n<meta name=\"description\" content=\"Learn what is process scheduling in operating system, its objective, schedulers in OS, Process Scheduling queues, context switch etc.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Process Scheduling in Operating System - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Learn what is process scheduling in operating system, its objective, schedulers in OS, Process Scheduling queues, context switch etc.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-04T03:30:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-scheduling-in-Operating-System.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Process Scheduling in Operating System - DataFlair","description":"Learn what is process scheduling in operating system, its objective, schedulers in OS, Process Scheduling queues, context switch etc.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/","og_locale":"en_US","og_type":"article","og_title":"Process Scheduling in Operating System - DataFlair","og_description":"Learn what is process scheduling in operating system, its objective, schedulers in OS, Process Scheduling queues, context switch etc.","og_url":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2021-08-04T03:30:01+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-scheduling-in-Operating-System.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/b49855299264df5e27e3ec6c2cd9fde9"},"headline":"Process Scheduling in Operating System","datePublished":"2021-08-04T03:30:01+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/"},"wordCount":1478,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-scheduling-in-Operating-System.jpg","keywords":["Context Switch in OS","Mode Switch in OS","Process Scheduling in Operating System","Process Scheduling in OS","Process Scheduling Queues","Schedulers in OS"],"articleSection":["Operating System Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/","url":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/","name":"Process Scheduling in Operating System - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-scheduling-in-Operating-System.jpg","datePublished":"2021-08-04T03:30:01+00:00","description":"Learn what is process scheduling in operating system, its objective, schedulers in OS, Process Scheduling queues, context switch etc.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-scheduling-in-Operating-System.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2021\/07\/Process-scheduling-in-Operating-System.jpg","width":1200,"height":628,"caption":"Process scheduling in Operating System"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/process-scheduling-in-operating-system\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Operating System Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/operating-system-tutorials\/"},{"@type":"ListItem","position":3,"name":"Process Scheduling in Operating System"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/b49855299264df5e27e3ec6c2cd9fde9","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ef46b745ddad2fad690af626c6ef29b91809ad0a9f5ef398d07817d8cad042f5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team is a group of passionate educators and industry experts dedicated to providing high-quality online learning resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With years of experience in the field, the team aims to simplify complex topics and help learners advance their careers. At DataFlair, we believe in empowering students and professionals with the knowledge and skills needed to thrive in today\u2019s fast-paced tech industry. Follow us for Free courses, expert insights, tutorials, and practical tips to boost your learning journey.","url":"https:\/\/data-flair.training\/blogs\/author\/datafbdad\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/99897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=99897"}],"version-history":[{"count":5,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/99897\/revisions"}],"predecessor-version":[{"id":99929,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/99897\/revisions\/99929"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/99923"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=99897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=99897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=99897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}