{"id":3337,"date":"2025-06-07T04:13:44","date_gmt":"2025-06-07T04:13:44","guid":{"rendered":"https:\/\/diznr.com\/?p=3337"},"modified":"2025-06-07T04:13:44","modified_gmt":"2025-06-07T04:13:44","slug":"cseit-gate-2021-subject-operating-system-topic-process-synchronization-based-on-3-algo","status":"publish","type":"post","link":"https:\/\/www.reilsolar.com\/pdf\/cseit-gate-2021-subject-operating-system-topic-process-synchronization-based-on-3-algo\/","title":{"rendered":"CSEIT &#8211; GATE 2025 Subject &#8211; Operating System\/Topic &#8211; Process Synchronization (based on Algo-3)."},"content":{"rendered":"<p>CSEIT &#8211; GATE 2025 Subject &#8211; Operating System\/Topic &#8211; Process Synchronization (based on Algo-3).<\/p>\n<p>[fvplayer id=&#8221;359&#8243;]<\/p>\n<p class=\"\" data-start=\"0\" data-end=\"54\">Here is a structured and GATE-focused explanation for:<\/p>\n<hr class=\"\" data-start=\"56\" data-end=\"59\" \/>\n<h2 class=\"\" data-start=\"61\" data-end=\"91\">\ud83c\udf93 <strong data-start=\"67\" data-end=\"89\">CSE\/IT \u2013 GATE 2025<\/strong><\/h2>\n<h3 class=\"\" data-start=\"92\" data-end=\"130\">\ud83d\udcd8 <strong data-start=\"99\" data-end=\"111\">Subject:<\/strong> Operating System<\/h3>\n<h3 class=\"\" data-start=\"131\" data-end=\"213\">\ud83d\udccc <strong data-start=\"138\" data-end=\"148\">Topic:<\/strong> Process Synchronization (Based on Algo-3 \u2013 Peterson\u2019s Algorithm)<\/h3>\n<hr class=\"\" data-start=\"215\" data-end=\"218\" \/>\n<h3 class=\"\" data-start=\"220\" data-end=\"263\">\ud83e\udde0 <strong data-start=\"227\" data-end=\"263\">What is Process Synchronization?<\/strong><\/h3>\n<p class=\"\" data-start=\"265\" data-end=\"405\"><strong data-start=\"265\" data-end=\"292\">Process Synchronization<\/strong> is the technique used to coordinate the execution of concurrent processes that share resources. It ensures that:<\/p>\n<ul data-start=\"407\" data-end=\"613\">\n<li class=\"\" data-start=\"407\" data-end=\"498\">\n<p class=\"\" data-start=\"409\" data-end=\"498\"><strong data-start=\"409\" data-end=\"429\">Only one process<\/strong> accesses the <strong data-start=\"443\" data-end=\"468\">critical section (CS)<\/strong> at a time (Mutual Exclusion),<\/p>\n<\/li>\n<li class=\"\" data-start=\"499\" data-end=\"553\">\n<p class=\"\" data-start=\"501\" data-end=\"553\">The system makes progress without unnecessary delay,<\/p>\n<\/li>\n<li class=\"\" data-start=\"554\" data-end=\"613\">\n<p class=\"\" data-start=\"556\" data-end=\"613\">Every process eventually gets a chance (Bounded Waiting).<\/p>\n<\/li>\n<\/ul>\n<hr class=\"\" data-start=\"615\" data-end=\"618\" \/>\n<h2 class=\"\" data-start=\"620\" data-end=\"660\">\ud83d\udd10 <strong data-start=\"626\" data-end=\"658\">Algo-3: Peterson\u2019s Algorithm<\/strong><\/h2>\n<p class=\"\" data-start=\"661\" data-end=\"793\">\ud83d\udccc <strong data-start=\"664\" data-end=\"677\">Used for:<\/strong> Synchronization between <strong data-start=\"702\" data-end=\"729\">2 processes (P0 and P1)<\/strong><br data-start=\"729\" data-end=\"732\" \/>\ud83d\udccc <strong data-start=\"735\" data-end=\"744\">Type:<\/strong> Software-based solution<br data-start=\"768\" data-end=\"771\" \/>\ud83d\udccc <strong data-start=\"774\" data-end=\"791\">Key Features:<\/strong><\/p>\n<ul data-start=\"794\" data-end=\"927\">\n<li class=\"\" data-start=\"794\" data-end=\"829\">\n<p class=\"\" data-start=\"796\" data-end=\"829\">Guarantees <strong data-start=\"807\" data-end=\"827\">mutual exclusion<\/strong><\/p>\n<\/li>\n<li class=\"\" data-start=\"830\" data-end=\"878\">\n<p class=\"\" data-start=\"832\" data-end=\"878\">Ensures <strong data-start=\"840\" data-end=\"852\">progress<\/strong> and <strong data-start=\"857\" data-end=\"876\">bounded waiting<\/strong><\/p>\n<\/li>\n<li class=\"\" data-start=\"879\" data-end=\"927\">\n<p class=\"\" data-start=\"881\" data-end=\"927\">No need for hardware-level atomic instructions<\/p>\n<\/li>\n<\/ul>\n<hr class=\"\" data-start=\"929\" data-end=\"932\" \/>\n<h3 class=\"\" data-start=\"934\" data-end=\"962\">\u2699\ufe0f <strong data-start=\"941\" data-end=\"962\">Shared Variables:<\/strong><\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">c<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-c\">boolean flag[<span class=\"hljs-number\">2<\/span>] = {<span class=\"hljs-literal\">false<\/span>, <span class=\"hljs-literal\">false<\/span>}; <span class=\"hljs-comment\">\/\/ Indicates interest in entering CS<\/span><br \/>\n<span class=\"hljs-type\">int<\/span> turn = <span class=\"hljs-number\">0<\/span>;                     <span class=\"hljs-comment\">\/\/ Whose turn is it?<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<hr class=\"\" data-start=\"1100\" data-end=\"1103\" \/>\n<h3 class=\"\" data-start=\"1105\" data-end=\"1152\">\ud83d\udc68\u200d\ud83d\udcbb <strong data-start=\"1115\" data-end=\"1152\">Code for Process Pi (i = 0 or 1):<\/strong><\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">c<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-c\"><span class=\"hljs-comment\">\/\/ Entry Section<\/span><br \/>\nflag[i] = <span class=\"hljs-literal\">true<\/span>;             <span class=\"hljs-comment\">\/\/ Express interest in entering CS<\/span><br \/>\nturn = <span class=\"hljs-number\">1<\/span> - i;               <span class=\"hljs-comment\">\/\/ Give turn to the other process<\/span><br \/>\n<span class=\"hljs-keyword\">while<\/span> (flag[<span class=\"hljs-number\">1<\/span> - i] &amp;&amp; turn == <span class=\"hljs-number\">1<\/span> - i)<br \/>\n    ;                       <span class=\"hljs-comment\">\/\/ Busy wait<\/span><\/p>\n<p><span class=\"hljs-comment\">\/\/ ---- Critical Section ----<\/span><\/p>\n<p><span class=\"hljs-comment\">\/\/ Exit Section<\/span><br \/>\nflag[i] = <span class=\"hljs-literal\">false<\/span>;            <span class=\"hljs-comment\">\/\/ Exit CS<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<hr class=\"\" data-start=\"1471\" data-end=\"1474\" \/>\n<h3 class=\"\" data-start=\"1476\" data-end=\"1499\">\u2705 <strong data-start=\"1482\" data-end=\"1499\">How It Works:<\/strong><\/h3>\n<ul data-start=\"1501\" data-end=\"1762\">\n<li class=\"\" data-start=\"1501\" data-end=\"1583\">\n<p class=\"\" data-start=\"1503\" data-end=\"1583\">Each process <strong data-start=\"1516\" data-end=\"1533\">sets its flag<\/strong> to <code data-start=\"1537\" data-end=\"1543\">true<\/code> indicating its interest in entering CS.<\/p>\n<\/li>\n<li class=\"\" data-start=\"1584\" data-end=\"1629\">\n<p class=\"\" data-start=\"1586\" data-end=\"1629\">It <strong data-start=\"1589\" data-end=\"1607\">gives the turn<\/strong> to the other process.<\/p>\n<\/li>\n<li class=\"\" data-start=\"1630\" data-end=\"1722\">\n<p class=\"\" data-start=\"1632\" data-end=\"1722\">If the other process also wants to enter and it\u2019s its turn, the current process <strong data-start=\"1712\" data-end=\"1721\">waits<\/strong>.<\/p>\n<\/li>\n<li class=\"\" data-start=\"1723\" data-end=\"1762\">\n<p class=\"\" data-start=\"1725\" data-end=\"1762\">This guarantees <strong data-start=\"1741\" data-end=\"1761\">mutual exclusion<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<hr class=\"\" data-start=\"1764\" data-end=\"1767\" \/>\n<h3 class=\"\" data-start=\"1769\" data-end=\"1835\">\ud83d\udccc <strong data-start=\"1776\" data-end=\"1835\">Satisfies the 3 Conditions of Critical Section Problem:<\/strong><\/h3>\n<div class=\"_tableContainer_16hzy_1\">\n<div class=\"_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"1837\" data-end=\"2375\">\n<thead data-start=\"1837\" data-end=\"1945\">\n<tr data-start=\"1837\" data-end=\"1945\">\n<th data-start=\"1837\" data-end=\"1859\" data-col-size=\"sm\">Condition<\/th>\n<th data-start=\"1859\" data-end=\"1866\" data-col-size=\"sm\">Met?<\/th>\n<th data-start=\"1866\" data-end=\"1945\" data-col-size=\"md\">Explanation<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2055\" data-end=\"2375\">\n<tr data-start=\"2055\" data-end=\"2161\">\n<td data-start=\"2055\" data-end=\"2078\" data-col-size=\"sm\"><strong data-start=\"2057\" data-end=\"2077\">Mutual Exclusion<\/strong><\/td>\n<td data-col-size=\"sm\" data-start=\"2078\" data-end=\"2084\">\u2705<\/td>\n<td data-col-size=\"md\" data-start=\"2084\" data-end=\"2161\">Only one process can enter the CS at a time.<\/td>\n<\/tr>\n<tr data-start=\"2162\" data-end=\"2268\">\n<td data-start=\"2162\" data-end=\"2185\" data-col-size=\"sm\"><strong data-start=\"2164\" data-end=\"2176\">Progress<\/strong><\/td>\n<td data-col-size=\"sm\" data-start=\"2185\" data-end=\"2191\">\u2705<\/td>\n<td data-col-size=\"md\" data-start=\"2191\" data-end=\"2268\">A process not in CS doesn\u2019t block others.<\/td>\n<\/tr>\n<tr data-start=\"2269\" data-end=\"2375\">\n<td data-start=\"2269\" data-end=\"2292\" data-col-size=\"sm\"><strong data-start=\"2271\" data-end=\"2290\">Bounded Waiting<\/strong><\/td>\n<td data-start=\"2292\" data-end=\"2298\" data-col-size=\"sm\">\u2705<\/td>\n<td data-col-size=\"md\" data-start=\"2298\" data-end=\"2375\">Each process gets a turn in a finite time.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sticky end-(--thread-content-margin) h-0 self-end select-none\">\n<div class=\"absolute end-0 flex items-end\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr class=\"\" data-start=\"2377\" data-end=\"2380\" \/>\n<h3 class=\"\" data-start=\"2382\" data-end=\"2421\">\ud83e\uddea <strong data-start=\"2389\" data-end=\"2421\">GATE-Style Example Question:<\/strong><\/h3>\n<p class=\"\" data-start=\"2423\" data-end=\"2513\"><strong data-start=\"2423\" data-end=\"2429\">Q:<\/strong> In Peterson\u2019s algorithm for two processes P0 and P1, what ensures mutual exclusion?<\/p>\n<p class=\"\" data-start=\"2515\" data-end=\"2647\"><strong data-start=\"2515\" data-end=\"2521\">A.<\/strong> Setting <code data-start=\"2530\" data-end=\"2544\">turn = 1 - i<\/code><br data-start=\"2544\" data-end=\"2547\" \/><strong data-start=\"2547\" data-end=\"2553\">B.<\/strong> The <code data-start=\"2558\" data-end=\"2564\">flag<\/code> array<br data-start=\"2570\" data-end=\"2573\" \/><strong data-start=\"2573\" data-end=\"2579\">C.<\/strong> The combination of <code data-start=\"2599\" data-end=\"2607\">flag[]<\/code> and <code data-start=\"2612\" data-end=\"2618\">turn<\/code><br data-start=\"2618\" data-end=\"2621\" \/><strong data-start=\"2621\" data-end=\"2627\">D.<\/strong> None of the above<\/p>\n<p class=\"\" data-start=\"2649\" data-end=\"2739\">\u2705 <strong data-start=\"2651\" data-end=\"2670\">Correct Answer:<\/strong> <strong data-start=\"2671\" data-end=\"2676\">C<\/strong> \u2013 Both <code data-start=\"2684\" data-end=\"2692\">flag[]<\/code> and <code data-start=\"2697\" data-end=\"2703\">turn<\/code> are essential for mutual exclusion.<\/p>\n<hr class=\"\" data-start=\"2741\" data-end=\"2744\" \/>\n<h3 class=\"\" data-start=\"2746\" data-end=\"2765\">\ud83d\udcd6 <strong data-start=\"2753\" data-end=\"2765\">Summary:<\/strong><\/h3>\n<ul data-start=\"2766\" data-end=\"2917\">\n<li class=\"\" data-start=\"2766\" data-end=\"2816\">\n<p class=\"\" data-start=\"2768\" data-end=\"2816\">Peterson\u2019s Algorithm is <strong data-start=\"2792\" data-end=\"2815\">simple but powerful<\/strong>.<\/p>\n<\/li>\n<li class=\"\" data-start=\"2817\" data-end=\"2863\">\n<p class=\"\" data-start=\"2819\" data-end=\"2863\">It\u2019s a <strong data-start=\"2826\" data-end=\"2862\">frequent topic in GATE questions<\/strong>.<\/p>\n<\/li>\n<li class=\"\" data-start=\"2864\" data-end=\"2917\">\n<p class=\"\" data-start=\"2866\" data-end=\"2917\">Best understood by writing and simulating the code.<\/p>\n<\/li>\n<\/ul>\n<hr class=\"\" data-start=\"2919\" data-end=\"2922\" \/>\n<p class=\"\" data-start=\"2924\" data-end=\"2939\">Would you like:<\/p>\n<ul data-start=\"2940\" data-end=\"3047\">\n<li class=\"\" data-start=\"2940\" data-end=\"2975\">\n<p class=\"\" data-start=\"2942\" data-end=\"2975\">A <strong data-start=\"2944\" data-end=\"2957\">flowchart<\/strong> of the algorithm?<\/p>\n<\/li>\n<li class=\"\" data-start=\"2976\" data-end=\"3008\">\n<p class=\"\" data-start=\"2978\" data-end=\"3008\">A <strong data-start=\"2980\" data-end=\"3007\">PDF of this explanation<\/strong>?<\/p>\n<\/li>\n<li class=\"\" data-start=\"3009\" data-end=\"3047\">\n<p class=\"\" data-start=\"3011\" data-end=\"3047\">More <strong data-start=\"3016\" data-end=\"3038\">practice questions<\/strong> or MCQs?<\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-start=\"3049\" data-end=\"3087\">Let me know how you&#8217;d like to prepare!<\/p>\n<h3 data-start=\"3049\" data-end=\"3087\"><a href=\"https:\/\/gate2025.iitr.ac.in\/doc\/2025\/GATE%20_CS_2025_Syllabus.pdf\" target=\"_blank\" rel=\"noopener\">CSEIT &#8211; GATE 2025 Subject &#8211; Operating System\/Topic &#8211; Process Synchronization (based on Algo-3).<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/web.cs.wpi.edu\/~cs3013\/c07\/lectures\/Section06-Sync.pdf\" target=\"_blank\" rel=\"noopener\">OPERATING SYSTEMS PROCESS SYNCHRONIZATION<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/www.niet.co.in\/pdf\/syllabus-2025\/second-year\/B.Tech-in-Computer-Science-and-Engineering-CSE-Second-Year-2024-25.pdf\" target=\"_blank\" rel=\"noopener\">Computer Science &amp; Engineering Second Year<\/a><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>CSEIT &#8211; GATE 2025 Subject &#8211; Operating System\/Topic &#8211; Process Synchronization (based on Algo-3). [fvplayer id=&#8221;359&#8243;] Here is a structured and GATE-focused explanation for: \ud83c\udf93 CSE\/IT \u2013 GATE 2025 \ud83d\udcd8 Subject: Operating System \ud83d\udccc Topic: Process Synchronization (Based on Algo-3 \u2013 Peterson\u2019s Algorithm) \ud83e\udde0 What is Process Synchronization? Process Synchronization is the technique used to [&hellip;]<\/p>\n","protected":false},"author":66,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78],"tags":[],"class_list":["post-3337","post","type-post","status-publish","format-standard","hentry","category-operating-system"],"_links":{"self":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/3337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/comments?post=3337"}],"version-history":[{"count":0,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/3337\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media?parent=3337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/categories?post=3337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/tags?post=3337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}