{"id":250,"date":"2017-11-27T17:12:00","date_gmt":"2017-11-27T16:12:00","guid":{"rendered":"https:\/\/kindsonthegenius.com\/blog\/2017\/11\/27\/schedulling-and-resource-management-in-operating-systems\/"},"modified":"2020-08-22T14:53:29","modified_gmt":"2020-08-22T12:53:29","slug":"schedulling-and-resource-management-in-operating-systems","status":"publish","type":"post","link":"https:\/\/kindsonthegenius.com\/blog\/schedulling-and-resource-management-in-operating-systems\/","title":{"rendered":"Schedulling and Resource Management in Operating Systems"},"content":{"rendered":"<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">I will explain this topic in a very simple and clear way. <\/div>\n<div style=\"margin: 0px;\">Modern computer systems consists of processors, memory, storage disks, terminals, network interfaces, printers as well as other devices. One of the functions of the operating system is to provide for an orderly and well controlled allocation of the processors, memory and other resources among the programs or applications that may be competing for them.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"clear: both; text-align: center;\"><a href=\"https:\/\/4.bp.blogspot.com\/-mnqYBGpZNV4\/WhxGYALjbcI\/AAAAAAAAAPc\/fcPrOzRmmRIJAhXVCGKU4YJQQfh9ibapwCLcBGAs\/s1600\/Resource-Management-And-Schedulling-in-Operating-System.jpg\" style=\"margin-left: 1em; margin-right: 1em;\"><img decoding=\"async\" loading=\"lazy\" border=\"0\" data-original-height=\"338\" data-original-width=\"640\" height=\"211\" src=\"https:\/\/4.bp.blogspot.com\/-mnqYBGpZNV4\/WhxGYALjbcI\/AAAAAAAAAPc\/fcPrOzRmmRIJAhXVCGKU4YJQQfh9ibapwCLcBGAs\/s400\/Resource-Management-And-Schedulling-in-Operating-System.jpg\" width=\"400\" \/><\/a><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>What is a Resource?<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">A resource can be a hardware component of the computer or maybe a piece of information. A typical example of a resource is the Printer. &nbsp;For some resources, a number of identical instances may be provided. An example is a computer with two or three CD drives. In such a situation, when several copies of the resource is available, any of them can be used to satisfy any request for that resource.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">The sequence of events required to use a resource is as follows:<\/div>\n<\/div>\n<ul style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<li style=\"text-align: justify;\">Request for the resource<\/li>\n<li style=\"text-align: justify;\">Use the resource<\/li>\n<li style=\"text-align: justify;\">Release the resource<\/li>\n<\/ul>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\"><\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">The work of the<span>&nbsp;<\/span><b>Scheduler<\/b><span>&nbsp;<\/span>is to decide<\/div>\n<\/div>\n<ul style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<li style=\"text-align: justify;\">How long a process would hold a resource<\/li>\n<li style=\"text-align: justify;\">How long a process executes&nbsp;<\/li>\n<li style=\"text-align: justify;\">In which order processes would execute <\/li>\n<\/ul>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">The Scheduler is a very important part of the operating system. It performs these tasks using scheduling algorithm. We would now look at a number of scheduling algorithms employed by the scheduler in allocating and controlling resource usage.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>Scheduling Algorithms<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">There are six scheduling algorithm used in modern operating systems that we are going to examine.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>1. Round Robin Scheduling<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">In this algorithm, each process is assigned a time slot or interval known as a quantum. The process would run within this time interval If the process is still not completed at the end of this interval, the CPU is preempted and given to the next process. The next process runs within its own quantum and then to the next until it gets back to the first. If a process complete execution or is blocked before its quantum is exhausted, a process called CPU switching is done and the next process takes over.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>2. Priority Scheduling<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">In this algorithm, each process is assigned a priority, and the runnable process having the highest priority is allowed to run. After it completes, the next runnable process with highest priority is allowed to run and so one. There is no time slot. lf a process is taking to much time to run, then the CPU would decrease its priority with each clock tick. This action may cause its priority to drop below that of the next process and when this happens, process switching occurs and the next process takes over.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>3. Multiple Queues<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">In this algorithm, priority classes are set up. Processes in the highest classes are set up. Proesses in the highest class are run for one quantum. Processes in the next highest class are run for two quanta and so on. Whenever a process uses up all of its quanta, it would be moved down one class.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>4. Shortest Job First( SJF)<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">The SJF algorithm allows for priority to be given to the job with the shortest execution time. This algorithm is applied &nbsp;when the run time &nbsp;for each of the process is known before hand.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>5. Policy-Driven Scheduling<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">In this algorithm, a policy is created that defines the amount of CPU time assigned to each process. For example a policy may be defined that:<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">&#8220;if N users are logged on, then each user will receive 1\/N of the CPU time&#8221;.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\"><b>6. Two-Level Scheduling<\/b><\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">Here, two scheduler levels are maintained: a higher level scheduler and a lower level scheduler.<\/div>\n<\/div>\n<div style=\"-webkit-text-stroke-width: 0px; color: #555555; font-family: &quot;segoe ui&quot;; font-size: 18px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;\">\n<div style=\"margin: 0px;\">This algorithm is used when there is no enough memory space and one of the runnable processes have en kept on the disk. A higher level scheduler takes the responsibility of swapping runnable processes between disks and memory. The lower-level scheduler then handles the process swapping.<\/div>\n<div style=\"margin: 0px;\"><\/div>\n<div style=\"margin: 0px;\"><\/div>\n<div style=\"margin: 0px;\">For more details on Recourse Management and Scheduling see the book:&nbsp; &#8220;Modern Operating System&#8221; by Andrew Tanenbaum<\/div>\n<div style=\"margin: 0px;\"><\/div>\n<div style=\"margin: 0px;\">I hope this have been informative your. Do leave a comment to let me know your views. <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I will explain this topic in a very simple and clear way. Modern computer systems consists of processors, memory, storage disks, terminals, network interfaces, printers &hellip; <\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[589],"tags":[],"_links":{"self":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts\/250"}],"collection":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/comments?post=250"}],"version-history":[{"count":1,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts\/250\/revisions"}],"predecessor-version":[{"id":1505,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/posts\/250\/revisions\/1505"}],"wp:attachment":[{"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/media?parent=250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/categories?post=250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kindsonthegenius.com\/blog\/wp-json\/wp\/v2\/tags?post=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}