Title: CS 345 Course Overview
1CS 345Course Overview
2Course Information
- Required Text Operating Systems Internals and
Design Principles (6th Edition) by William
Stallings - User CS 345 Web Site
- http//students.cs.byu.edu/cs345ta/
- Syllabus
- Schedule
- Projects
- Homework
- Use Blackboard
- Homework answers
- Grades
- Discussion board and Email
- Complete assigned reading and attend class!
3William Stallings
- William Stallings has authored 17 titles, and
counting revised editions, a total of 35 books on
various aspects of these subjects. In over 20
years in the field, he has been a technical
contributor, technical manager, and an executive
with several high-technology firms. Currently he
is an independent consultant whose clients have
included computer and networking manufacturers
and customers, software development firms, and
leading-edge government research institutions.
Bill has designed and implemented both
TCP/IP-based and OSI-based protocol suites on a
variety of computers and operating systems,
ranging from microcomputers to mainframes. As a
consultant, he has advised government agencies,
computer and software vendors, and major users on
the design, selection, and use of networking
software and products. - Dr. Stallings holds a PhD from M.I.T. in Computer
Science and a B.S. from Notre Dame in electrical
engineering.
4Syllabus
- Computer Science 345 is an introduction to the
principles underlying the design and the
implementation of contemporary computer operating
systems. - Class designed for students majoring in Computer
Science or in areas having a strong emphasis in
Computer Science.
5Syllabus (continued)
- At the end of the course, the student should have
a basic understanding of - Design and implementation issues of contemporary
operating systems - Detailed analysis of process, multithreading,
symmetric multiprocessing, and microkernels - Memory management techniques, including virtual
memory - Various approaches to process scheduling
- Operating system control of Input/Output
- Operating system management of files
- Distributed systems
- Computer security
6Prerequisites
- CS 124, CS 235, CS 236, CS 240.
- CS 345 is a prerequisite to CS 360.
- Knowledge of C.
- Or, instructors consent.
7CS 142 Intro to Comp Prog
1. Complete all CS core classes. (No D credit
accepted.) 2. Complete the following supporting
courses a. Engl 316. b. Math 112, 113,
343. c. Phscs 121. d. Stat 221 (or Stat 321,
331, 332, or 441). 3. Complete 6 elective courses
selected as follows a. 4 courses from ECEn 342,
425, or 400-level CS courses (except 404 and
405). b. 1 additional course from (a) or a
500-level CS course. c. 1 additional course from
(a), or CS 405, or Math 214, 315, 334, 350,
355, 371, 410, or Stat 321, 331, 332, 336, 421,
441, or Biol 120, or Chem 112, or Geol 112, or
Phscs 123, 220. (Other science courses may
apply when NOT used for GE science
requirement. Check with advisement first.)
Freshman
CS 235 Data Structures
CS 124 Intro to Comp Sys
Sophomore
CS 236 Discrete Structures
CS 252 Intro to Comp Theory
CORE
CS 240 Advanced Prog
Engl 316 Technical Writing
Junior
CS 345 Operating Systems
CS 330 Prog Languages
CS 360 Internet Prog
CS 340 Software Engin
CS 404 Comp in Society
CS 312 Algorithm Analysis
Senior
Math 112
Phscs 121
ECEn 425 Real-time OS
ECEn 324 Comp Architecture
CS 431 Compilers
CS 428 Software Sys Design
CS 412 Models Optimization
CS 452 Database Modeling
Math 113
Stat 221
CS 455 Comp Graphics
CS 460 Networks
CS 478 Machine Learning
CS 465 Comp Security
CS 405 Software Business
Math 343
CS 462 Distributed Systems
CS 456 User Interface Software
CS 486 Verification/ Validation
ELECTIVES
Additional Elective 1
CS 498 Internship
CS 450 Signal Image Processing
BYU Computer Science Requirements / Prerequisite
Chain Fall 2008
Additional Elective 2
CS 470 Artificial Intelligence
CS 476 Data Mining
8Organization and Grading
- This class consists of lecture, homework,
programming assignments, midterms, and a final.
Each has a weighted contribution to your final
grade. - Homework 10
- Programming Assignments 50
- Participation/Presentation 10
- 2 Midterms 18
- Final 12
9Lab Grading
- Programming assignments (50)
- Project 1 Shell (CLI) (Sep 18) 6
- Project 2 Scheduling (Oct 2) 8
- Project 3 Jurassic Park (Oct 16) 10
- Project 4 DME (Oct 30) 6
- Project 5 Virtual Memory (Nov 13) 10
- Project 6 FAT (Dec 4) 10
10Grades (continued)
- Grades are assigned on the following scale from
the composite total of above areas
100-93 A 82-80 B- 69-67 D 92-90 A- 79-77
C 66-63 D 89-87 B 76-73 C 62-60 D- 86-83
B 72-70 C- 59-0 E
11Homework (10)
- Homework assignments are designed to reinforce
class material and help in exam preparation. - Most homework consists of 5-10 questions and
covers the material from the previous class
discussion. - Homework is assigned weekly and is due on Friday
at the beginning of class. - Any homework submitted after the due date will
lose 50 per week. (After 1 week, an assignment
has no grading value!).
12Homework (continued)
- Homework must have the students name, section,
and homework number clearly indicated at the top
of the homework to be accepted for grading. - Finally, you are welcome and encouraged to
discuss the homework with your classmates and
others. However, you are to do and submit your
own work. Submitting someone's work is
considered cheating for which you will receive an
E grade for the class and be reported to the
Honor Code Office.
13Programming Assignments (50)
- There are six programming assignments designed to
emphasize topics discussed in class. - The programming assignments build upon each other
and explore a variety of operating system
principles. - Programming assignments can be found on the CS345
web site (http//students.cs.byu.edu/cs345ta/). - Programming assignments must be passed off by a
TA during regular TA hours in the TA offices or
class programming labs.
14Programming (continued)
- To receive full credit, programming assignments
must be completed and passed off with a Date
Modified timestamp on or before the due date. - NOTE Timestamps cannot be used for extra credit
points and cannot be more than two days
delinquent. - Any assignment completed and passed off after the
due date will lose 10 per school day. (After 2
weeks, an assignment has no grading value!). - Programming assignments can be passed off on
school computers or personal laptops.
15Programming (continued)
- As an incentive to get your assignments done
early and to motivate you to thoroughly check
your work, assignments passed off at least one
day before the due date (timestamps do not count)
with a TA, will receive an additional 10 extra
credit. - Any grade points earned on assignments above the
allotted percentage may apply to your overall
grade. - All assignments MUST BE COMPLETED, PASSED OFF AND
SUBMITTED on or before the final day of class.
16Programming (continued)
- All six programming assignments must be completed
to receive and A or A- grade. - Everyone who completes all six programming
assignments (regardless of their scores) and
passes the final exam (70 or better) will pass
the class with at least a C- grade.
17Exams (30)
- Midterms and the final exam are administered in
the testing center. - The midterms are available from Thursday until
closing on Saturday. - The final will be given during finals week at the
testing center. - Anyone missing a midterm without prior
arrangement is automatically assessed a 50
penalty.
18Presentations (10)
- Discuss subject matter with respect to assigned
contemporary operating system. - Use slides, handouts, and/or examples as needed.
- Presentations are to last NO LONGER THAN 15
MINUTES! - Submit 2 questions that may be used on the class
final exam and your presentation material. - Presentation is worth 10 of final grade.
19Programming Environments
- Programming of the assignments will be done in
the C programming language. - The choice of the software tools and programming
environment is left to the students discretion. - In any case, it is the students responsibility
to present their work to a TA in the designated
CS 345 lab for pass off. (Downstairs TMCB)
20Programming Environments (continued)
- Windows users can download a very good free C
compiler at the LCC website (http//www.cs.virgini
a.edu/lccwin32/). - For those wanting to use Linux on their personal
computers, look at the KNOPPIX website
(http//www.knoppix.net/) for a free Linux system
bootable from CD ROM. - For those who do not own a computer or would just
rather do their work using BYU facilities, there
are Linux/Unix labs available in the Computer
Science building using the gcc compiler. The
EMACS text editor would probably be the editor of
choice.
21Grade Verification and Appeals Policy
- It is the students responsibility to verify that
scores have been correctly recorded on
Blackboard. - If a score is incorrect on Blackboard, then the
student should appeal through email to the
grading TA. - The student can appeal a grade on an exam
directly to their instructor through email.
22Academic Honesty
- Academic honesty includes completing your own
homework, labs, midterms, and final. - Students should work together to help each other
understand material, but should always turn in
their own work. - Examples of academic dishonesty include sharing
code for labs with other students, turning in
someone else's writing as your own report, and
cheating on an exam.
23Academic Honesty (continued)
- The first violation of academic honesty standards
will result in the student failing the class. - All violations of academic honesty are documented
and reported to the Honor Code office.
24Schedule
- Week 1 Intro, Chapter 2
- Week 2 Chapters 1, 3 4 HW 1
- Week 3 Chapters 5 9 HW 2 L1 CLI
- Week 4 Chapters 4, 5 6 HW 3
- Week 5 Chapters 6 10 L2 Tasking Exam 1
(1-4,9) - Week 6 Chapters 10, 13 14 HW 4
- Week 7 Chapters 7 15 HW 5 L3 Philosophers
- Week 8 Chapter 8 Exam 2 (5-7,10)
- Week 9 Chapters 8 12 HW 6 L4 DME
- Week 10 Chapters 12 13 HW 7
- Week 11 Chapter 11 L5 VM Exam 3 (8,11-12)
- Week 12 Chapter 15
- Week 13 Presentations HW 8
- Week 14 Presentations HW 9 L6 FAT
- Week 15 Presentations Review
- Week 16 Finals Final (1-16)
25OS345
- Project 1 Shell. Write a Shell (Command
Language Interpreter) to parse textual commands
entered from the users keyboard, malloc argument
variables, handle signals, and execute programs
directly or as child processes. - Project 2 Scheduler. Write a five-state task
scheduler capable of simultaneously executing up
to 128 tasks in a preemptive, prioritized,
round-robin manner. Implement binary and
counting semaphores and schedule your CLI as its
first task with pseudo-interrupt driven character
input. Add timer semaphores and tasks to
validate your implementation.
26OS345 (continued)
- Project 3 Jurassic Park. Jurassic Park is an
inter-process communication and synchronization
problem between multiple tasks. Visitors to the
park purchase a ticket, wait to take a ride on a
park tour car to see the dinosaurs, and then
visit the museum and gift shops before leaving
the park. Since the park is on a limited budget,
drivers must perform double duty when not
sleeping by selling tickets and driving the tour
cars. Visitors, drivers, and cars are represents
by concurrent tasks while an additional task is
used to display the park status every second.
27OS345 (continued)
- Project 4 Distributed Mutual Exclusion.
Integrate a distributed banking system consisting
of nine remote ATMs (clients) and one
centralized Bank (server) into your OS and
implement a distributed mutual exclusion
mechanism (Lamports algorithm) to protect
asynchronous accesses to the Bank (critical
section).
28OS345 (continued)
- Project 5 Virtual Memory. Add a Memory
Management Unit (MMU) to your OS that translates
virtual LC-3 addresses to physical addresses in a
restricted memory space. Validate your
implementation by successfully executing up to 10
LC-3 crawler and/or memory test programs
concurrently in 2 frames of physical memory (128
words).
29OS345 (continued)
- Project 6 FAT File Manager. Add a MS-DOS
FAT-12 file manager to your OS that is able to
traverse file directories, view file data, and
load/execute LC-3 programs from files. Implement
creation, access, and modification of FAT-12
files by adding file manager functions and
commands that use file system buffering, basic
file I/O, file descriptors, and file pointers to
modify file allocation tables (FAT), directory
structures and cluster chains.
30Miscellaneous
- TAs
- Help sessions
- Office hours
- Student manual
- Linux vs Microsoft users
- Questions?
31Why CS 345?
32Operating Systems
- What is an operating system?
- Hard to define precisely, because operating
systems arose historically as people needed to
solve problems associated with using computers. - How about
- Software that makes computing power available to
users by controlling the hardware. - Software executes when nothing else is
happening. - A collection of software modules including
device drivers, libraries, and access routines.
33What Does a Modern Operating System Do?
- Provides Abstractions
- Hardware has low-level physical resources with
complicated, idiosyncratic interfaces. - OS provides abstractions that present clean
interfaces. - Goal make computer easier to use.
- Examples Processes, Unbounded Memory, Files,
Synchronization and Communication Mechanisms. - Provides Standard Interface
- Goal portability.
- Unix runs on many very different computer systems.
34What Does a Modern Operating System Do?
- Mediates Resource Usage
- Goal allow multiple users to share resources
fairly, efficiently, safely and securely. - Examples
- Multiple processes share one processor.
(preemptable resource) - Multiple programs share one physical memory
(preemptable resource). - Multiple users and files share one disk.
(non-preemptable resource) - Multiple programs share a given amount of disk
and network bandwidth (preemptable resource). - Consumes Resources
- Solaris takes up about 8 Mbytes physical memory
(or about 400).
35The Future
- In the future, computers will continue to become
physically smaller and more portable. - Operating systems have to deal with issues like
disconnected operation and mobility. - Media rich information within the grasp of common
people - information with psuedo-real time
components like voice and video. - Operating systems will have to adjust to deliver
acceptable performance for these new forms of
data.
36Finally
- Operating systems are so large no one person
understands whole system. Outlives any of its
original builders. - The major problem facing computer science today
is how to build large, reliable software systems. - Operating systems are one of very few examples of
existing large software systems, and by studying
operating systems we may learn lessons applicable
to the construction of larger systems.