{"id":240,"date":"2019-01-22T03:28:16","date_gmt":"2019-01-22T03:28:16","guid":{"rendered":"http:\/\/roch.sdsu.edu\/?page_id=240"},"modified":"2021-04-27T10:32:57","modified_gmt":"2021-04-27T18:32:57","slug":"cs-570-os","status":"publish","type":"page","link":"https:\/\/roch.sdsu.edu\/index.php\/cs-570-os\/","title":{"rendered":"CS 570 Operating Systems"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last\" style=\"--awb-bg-size:cover;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\"><div class=\"fusion-tabs fusion-tabs-1 classic nav-is-justified horizontal-tabs icon-position-left mobile-mode-accordion\" style=\"--awb-title-border-radius-top-left:0px;--awb-title-border-radius-top-right:0px;--awb-title-border-radius-bottom-right:0px;--awb-title-border-radius-bottom-left:0px;--awb-inactive-color:#ebeaea;--awb-background-color:#ffffff;--awb-border-color:#ebeaea;--awb-active-border-color:#a0ce4e;\"><div class=\"nav\"><ul class=\"nav-tabs nav-justified\" role=\"tablist\" aria-orientation=\"horizontal\"><li class=\"active\" role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-bfcbfb67b96324039e2\" aria-selected=\"true\" tabindex=\"0\" id=\"fusion-tab-bfcbfb67b96324039e2\" href=\"#tab-bfcbfb67b96324039e2\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-handshake far\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Assignments<\/h4><\/a><\/li><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-bc6b18f0bfab970888d\" aria-selected=\"false\" tabindex=\"-1\" id=\"fusion-tab-bc6b18f0bfab970888d\" href=\"#tab-bc6b18f0bfab970888d\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-tv fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Slides<\/h4><\/a><\/li><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-656a548a36ec9fbda6b\" aria-selected=\"false\" tabindex=\"-1\" id=\"fusion-tab-656a548a36ec9fbda6b\" href=\"#tab-656a548a36ec9fbda6b\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-calendar-alt fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Schedule<\/h4><\/a><\/li><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-ba514f847aa59a07f2e\" aria-selected=\"false\" tabindex=\"-1\" id=\"fusion-tab-ba514f847aa59a07f2e\" href=\"#tab-ba514f847aa59a07f2e\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-book fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Materials<\/h4><\/a><\/li><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-29c96d5673bffd30342\" aria-selected=\"false\" tabindex=\"-1\" id=\"fusion-tab-29c96d5673bffd30342\" href=\"#tab-29c96d5673bffd30342\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-podcast fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>About<\/h4><\/a><\/li><\/ul><\/div><div class=\"tab-content\"><div class=\"nav fusion-mobile-tab-nav\"><ul class=\"nav-tabs nav-justified\" role=\"tablist\" aria-orientation=\"horizontal\"><li class=\"active\" role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-bfcbfb67b96324039e2\" aria-selected=\"true\" tabindex=\"0\" id=\"mobile-fusion-tab-bfcbfb67b96324039e2\" href=\"#tab-bfcbfb67b96324039e2\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-handshake far\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Assignments<\/h4><\/a><\/li><\/ul><\/div><div class=\"tab-pane fade fusion-clearfix in active\" role=\"tabpanel\" tabindex=\"0\" aria-labelledby=\"fusion-tab-bfcbfb67b96324039e2\" id=\"tab-bfcbfb67b96324039e2\">\n<h3>Welcome to CS 570<\/h3>\n<p>Your assignments are on this tab, please see other tabs for other information about the course.\u00a0 Material submission is done on Canvas.<\/p>\n<h3>Graded assignments<\/h3>\n<p>Due dates for assignments that require work to be turned in are posted on the calendar. \u00a0Use the <a href=\"https:\/\/calendar.google.com\/calendar\/ical\/21sq5p3h7lp4bp90su0nrk06pc%40group.calendar.google.com\/public\/basic.ics\">ICAL address<\/a> to add this to a personal calendar if you wish.<\/p>\n<ol>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/assignments\/a1.pdf\">Get your feet wet<\/a> (makefiles &amp; system calls).<\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/assignments\/a2.pdf\">Threading the needle<\/a>.<\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/assignments\/a3.pdf\">Scheduling and memory<\/a>.<\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/assignments\/a4.pdf\">Page replacement and interprocess communication<\/a>.<\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/assignments\/a5.pdf\">File systems and I\/O devices<\/a>.<\/li>\n<\/ol>\n<p>There is a <a href=\"https:\/\/roch.sdsu.edu\/faq\/os-faq.shtml\">frequently asked question<\/a> list for this course that addresses many issues that students have with respect to this class.\u00a0 Please check the list when you experience problems, the answer may be in there.<\/p>\n<h3>Calendar<\/h3>\n<p><iframe style=\"border: 0;\" src=\"https:\/\/calendar.google.com\/calendar\/embed?src=21sq5p3h7lp4bp90su0nrk06pc%40group.calendar.google.com&amp;ctz=America%2FLos_Angeles\" width=\"800\" height=\"600\" frameborder=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<\/div><div class=\"nav fusion-mobile-tab-nav\"><ul class=\"nav-tabs nav-justified\" role=\"tablist\" aria-orientation=\"horizontal\"><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-bc6b18f0bfab970888d\" aria-selected=\"false\" tabindex=\"-1\" id=\"mobile-fusion-tab-bc6b18f0bfab970888d\" href=\"#tab-bc6b18f0bfab970888d\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-tv fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Slides<\/h4><\/a><\/li><\/ul><\/div><div class=\"tab-pane fade fusion-clearfix\" role=\"tabpanel\" tabindex=\"0\" aria-labelledby=\"fusion-tab-bc6b18f0bfab970888d\" id=\"tab-bc6b18f0bfab970888d\">\n<ul>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/01Introduction.pdf\">Introduction<\/a><\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/02Processes.pdf\">Processes &amp; threads<\/a><\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/03Scheduling.pdf\">Scheduling<\/a> processes &amp; threads<\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/04MemoryManagement.pdf\">Memory management<\/a><\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/05InterprocessCommunication.pdf\">Interprocess communication<\/a><\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/06Deadlocks.pdf\">Deadlocks<\/a><\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/07FileSystems.pdf\">Disks and file systems<\/a><\/li>\n<li><a href=\"https:\/\/roch.sdsu.edu\/cs570\/slides\/08InputOutput.pdf\">Input\/output<\/a><\/li>\n<\/ul>\n<\/div><div class=\"nav fusion-mobile-tab-nav\"><ul class=\"nav-tabs nav-justified\" role=\"tablist\" aria-orientation=\"horizontal\"><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-656a548a36ec9fbda6b\" aria-selected=\"false\" tabindex=\"-1\" id=\"mobile-fusion-tab-656a548a36ec9fbda6b\" href=\"#tab-656a548a36ec9fbda6b\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-calendar-alt fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Schedule<\/h4><\/a><\/li><\/ul><\/div><div class=\"tab-pane fade fusion-clearfix\" role=\"tabpanel\" tabindex=\"0\" aria-labelledby=\"fusion-tab-656a548a36ec9fbda6b\" id=\"tab-656a548a36ec9fbda6b\">\n<p>Please note that schedule dates are tentative.\u00a0 Our primary concern is that you master the material and the schedule may be adjusted to optimize comprehension and scope of material.<\/p>\n<p>Week of:<\/p>\n<ol>\n<li>Jan 18 \u2013 Overview of operating systems (1.1-1.8): definition, history, hardware, architectures and concepts, system calls, structure, C\/C++ loading &amp; linking.<\/li>\n<li>Jan 25 \u2013 Overview continued.<\/li>\n<li>Feb 1 \u2013 Processes and threads: (2 \u2013 2.2, 2.4): states, process switching and preemption, blocking, interrupt handlers, scheduling, implementation. <strong>Feb 4: Quiz 1.<\/strong><\/li>\n<li>Feb 8 \u2013 Processes and thread continued (Fri 2\/12 R&amp;R Day).<\/li>\n<li>Feb 15 \u2013 Memory management on bare hardware using fixed and dynamic sized partitions (3.1), abstraction (3.2).<\/li>\n<li>Feb 22 \u2013 Virtual memory (3.3), overcommitting memory and page faults and replacement algorithms (3.4). <strong>Feb 25: Quiz 2.<\/strong><\/li>\n<li>Mar 1 \u2013 Design and implementation issues (3.5-3.6) and segmentation (3.7).<\/li>\n<li>Mar 8 \u2013 Synchronization (2.3-): Race conditions and deadlocks (2.3.1), critical regions (2.3.2, 2.3.3), semaphores (2.3.5), producers and consumers problem (2.3.4-2.3.5), monitors (2.3.7), barriers (2.3.9), message passing (2.3.8). (Mon 3\/8 R&amp;R Day).<\/li>\n<li>Mar 15 \u2013 Synchronization contd. <strong>Mar 18: Quiz 3.<\/strong><\/li>\n<li>Mar 22 \u2013 Synchronization contd., Deadlocks: resources (6.1), conditions (6.2), ostrich (6.3), dining philosophers problem (2.5.1).<\/li>\n<li>Mar 29 \u2013 Disks (5.4). (Tue 3\/30 No class \u2013 R&amp;R Day, Wed 3\/31 Campus closed: <a href=\"about:blank\">C\u00e9sar Ch\u00e1vez<\/a> day)<\/li>\n<li>Apr 5 \u2013 File systems: files (4.1) directories (4.2), implementation (4.3)<strong>.<\/strong><\/li>\n<li>Apr 12 \u2013 File systems contd: management and optimization (4.4). <strong>Apr 13: Quiz 4<\/strong> (Thu 4\/15 No class \u2013 R&amp;R Day).<\/li>\n<li>Apr 19 \u2013 I\/O Management: principles of hardware (5.1) and software (5.2).<\/li>\n<li>Apr 26 \u2013 I\/O Management: software layers (5.3), clocks (5.5), user interfaces (5.6).<\/li>\n<li>May 3 \u2013 <em>The last week will either cover new material or catch up as needed. If time permits, elements of security will be covered:\u00a0 <\/em>Security:\u00a0 Environment and OS security (9.1-9.2), access control (9.3), cryptography basics (9.5), authentication (9.6), exploits (9.7), insider attacks (9.8), malware (9.9), defense (9.10). <strong>May 6: Quiz 5.<\/strong><\/li>\n<\/ol>\n<\/div><div class=\"nav fusion-mobile-tab-nav\"><ul class=\"nav-tabs nav-justified\" role=\"tablist\" aria-orientation=\"horizontal\"><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-ba514f847aa59a07f2e\" aria-selected=\"false\" tabindex=\"-1\" id=\"mobile-fusion-tab-ba514f847aa59a07f2e\" href=\"#tab-ba514f847aa59a07f2e\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-book fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>Materials<\/h4><\/a><\/li><\/ul><\/div><div class=\"tab-pane fade fusion-clearfix\" role=\"tabpanel\" tabindex=\"0\" aria-labelledby=\"fusion-tab-ba514f847aa59a07f2e\" id=\"tab-ba514f847aa59a07f2e\">\n<h1>Frequently<strong>\u00a0Asked Questions<\/strong><\/h1>\n<p>There is a <a href=\"https:\/\/roch.sdsu.edu\/faq\/os-faq.shtml\">frequently asked question<\/a> list for this course that addresses many issues that students have with respect to this class.\u00a0 Please check the list when you experience problems, the answer may be in there.<\/p>\n<h1><strong>Textbooks \u00a0<\/strong><\/h1>\n<p>Required:<\/p>\n<ul>\n<li>Tanenbaum, A. S. and Bos, H. (2015). Modern Operating Systems. Boston, MA: Pearson.<\/li>\n<\/ul>\n<p>If you need to brush up on C or C++, the following books are good, but assume that you know a bit about programming already (as you should, or you would not be in an upper-division computer science course):<\/p>\n<ul>\n<li>Stroustrup, Bjarne (2018).\u00a0 <em>A tour of C++<\/em>.\u00a0 Boston, MA: Addison-Wesley.<\/li>\n<li>Kernighan, Brian W. and Ritchie, Dennis M. (1988).\u00a0 <em>The C Programming Language<\/em>, 2nd ed. Englewood Cliffs, NJ: Prentice Hall.\u00a0 <em>This book is a bit long in the tooth and does not cover modern variants such as C11<\/em>.\u00a0 For a more modern book, try: Deitel, P. and Deitel, H. (2013). <em>C for Programmers with an Introduction to C11<\/em>.\u00a0 \u00a0Englewood Cliffs, NJ: Prentice Hall.\u00a0 \u00a0Deitel and Deitel is freely available through the SDSU library as a Safari e-book.<\/li>\n<\/ul>\n<p>There are many other programming resources, many of which are in our library.<\/p>\n<h1><strong>Programming environment\u00a0<\/strong><\/h1>\n<p>Programming exercises will be implemented using either C or C++ on edoras.sdsu.edu.\u00a0 Edoras accounts will be\u00a0 issued to you via e-mail or in class. Edoras is a CentOS 7 linux server.\u00a0 You can connect to it via a secure shell or X Window client (see FAQ).\u00a0 If you prefer to develop on your own machine, you are welcome to do so, but your program\u00a0<strong>must execute correctly on edoras<\/strong>.\u00a0 Excuses of &#8220;but it worked on my machine&#8221; will not be accepted, so if you develop elsewhere, plan to leave time for any migration problems that might arise.<\/p>\n<p>You will be using the GNU C or C++ compiler (gcc or g++).\u00a0 Your programs must compile on linux with the version 4.8.5 compiler which is the default compiler on edoras and on gradescope which is where your programs will be executed once you have submitted them.<\/p>\n<p>If you wish to edit from a command line shell (not a windowing environment), emacs, vim, and nano, are your best bets with nano being the simplest editor.\u00a0 If you are using an X11 environment, you can use emacs, gedit, or nedit.\u00a0 See the edoras web site for a list of installed software.<\/p>\n<p>It is highly recommended to take the time to learn how to use a symbolic debugger as it will make your life simpler.\u00a0\u00a0The GNU debugger (gdb) is available on edoras.\u00a0 A <a href=\"https:\/\/www.cprogramming.com\/gdb.html\">tutorial<\/a> by Manasij Mukherjee is available, be sure to compile your files with the -g option to include debugging information. If you would like to use a graphical debugging interface, the eclipse stand-alone debugger has been installed:<\/p>\n<p>&gt; cdtdebug -e <strong>executable-name<\/strong> followed by command line options for the program (if any).<\/p>\n<\/div><div class=\"nav fusion-mobile-tab-nav\"><ul class=\"nav-tabs nav-justified\" role=\"tablist\" aria-orientation=\"horizontal\"><li  role=\"presentation\"><a class=\"tab-link\" data-toggle=\"tab\" role=\"tab\" aria-controls=\"tab-29c96d5673bffd30342\" aria-selected=\"false\" tabindex=\"-1\" id=\"mobile-fusion-tab-29c96d5673bffd30342\" href=\"#tab-29c96d5673bffd30342\"><h4 class=\"fusion-tab-heading\"><i class=\"fontawesome-icon fa-podcast fas\" aria-hidden=\"true\" style=\"font-size:13px;\"><\/i>About<\/h4><\/a><\/li><\/ul><\/div><div class=\"tab-pane fade fusion-clearfix\" role=\"tabpanel\" tabindex=\"0\" aria-labelledby=\"fusion-tab-29c96d5673bffd30342\" id=\"tab-29c96d5673bffd30342\">\n<p>About the course:<\/p>\n<p>Course meets Tu and Th from 4:00 to 5:15 via Zoom.\u00a0 The link for accessing the class can be found on Canvas.<\/p>\n<p>This is a required course for computer science majors that teaches you how to design, implement, and understand essential software services that interface between underlying hardware and application programs.<\/p>\n<p>Upon successful completion of this class, students should be able to:<\/p>\n<p>Afer successful completion of the course, students will be able to:<\/p>\n<ul>\n<li>Understand the role of operating systems as resource managers for computer hardware and describe the fundamental structure and design of these systems.<\/li>\n<li>Implement, apply and\/or evaluate algorithms associated with resource management such as coordinated access to shared memory buffers, protection of user and system data, and ensuring system stability.<\/li>\n<li>Develop more complex programs in C or C++ by applying advanced techniques such as making function calls through variables pointing to functions.<\/li>\n<li>Work collaboratively using pair programming techniques.<\/li>\n<li>Comprehend and reflect on the impact of computer software on the health and well-being of society through discussion of system-critical applications and the need for more comprehensive testing\u00a0 (e.g. fly by wire aviation systems, pace-makers).<\/li>\n<li>Engage in operating systems design projects.<\/li>\n<\/ul>\n<p>The prerequisites for this course are: CS 310, CS 370, and demonstrated programming competency in C or C++.<\/p>\n<p>Please see <a href=\"https:\/\/roch.sdsu.edu\/cs570\/CS570-Syllabus.pdf\">syllabus <\/a>for detailed course policies.\u00a0 Your grader for this class is Saumil Shah.\u00a0 He may be contacted via e-mail at sshah7 with the standard @sdsu.edu following it.<\/p>\n<\/div><\/div><\/div><div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-240","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/pages\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/comments?post=240"}],"version-history":[{"count":49,"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/pages\/240\/revisions"}],"predecessor-version":[{"id":452,"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/pages\/240\/revisions\/452"}],"wp:attachment":[{"href":"https:\/\/roch.sdsu.edu\/index.php\/wp-json\/wp\/v2\/media?parent=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}