| Related sites for http://www.cc.gatech.edu/classes/AY2000/cs3210_spring/ |
| HelpLine_Incident_Management A customizable help desk for support personnel and customers (both internal and external). Includes SLA management and bespoke notification. | | miniBSD__Reducing_FreeBSD A guide which explains in detail, how to make a small installation of FreeBSD on your system, by yourself. (March 18, 2003) | | Giampiero_Caprino\'s_Home_Page Contains useful information about Decompilers and File Formats. | | Q&A__Celebrating_Five_Years_of_Innovation_at_Microsoft_Research_Cambridge Interview with Roger Needham, on the fifth anniversary of the setting up of Microsoft's research group in Cambridge. (April 17, 2002) | | BUGS_2000_Cartoon_Series Cartoons for New Years Eve 1999. | | Chirson Laptop security, PC security, computer security and PC immobilisers. Police Approved PC and Laptop immobilisers to stop thieves accessing your data. | | Microsoft_Certified_Professional_Magazine_Online Latest independent information on the MCP program. | | DomainInvestigator_com Domain name registration services. | | Linux,_Without_Unix Brief article, long forum discussion of FullPliant operating system. [Slashdot] | | Greenwich_Real_Time_Ltd_ Java software specialists for development or resourcing of in-house projects. | | RFC_2802 Digital Signatures for the V1.0 Internet Open Trading Protocol (IOTP). K. Davidson, Y. Kawatsura. April 2000. | | PaymentPal Lets accept PayPal transactions through website automatically, via PayPal's Instant Payment Notification system. By PHP Labs. [Commercial] | | Web_Design_Practices A site documenting what design practices are currently in use on the Web, and aiming to gather research about the usability of these practices. | | A_Critique_of_OpenMath_and_Thoughts_on_Encoding_Mathematics Open issues regarding OpenMath; a call for real-world applications to vet OpenMath. By Richard Fateman. [PDF] | | Shaw,_Nick_-_Fracture_Media_Syndicate Services include web design, print, web motion, multimedia, graphics, and branding. Aukland, New Zealand. | | Allmyfavorites Add current page to an online favorites list. Requires registration with email. Free. | | WG_Screensaver_Creator Allows the creation of screen savers, using JPG, GIF, and animated GIF, BMP, ICO and SWF files. | | Session_Server_for_Windows Has built-in fail-over protection and load balancing. A session "sticks" to a session server not by IP as in the case of a local director, but based on session ID so that the browser is guaranteed to | | FTP_Surfer Free client with Internet Explorer style user-interface, multiple server connections, and smart reconnect. | | MES_Compass Modular MES software including LIMS and manufacturing intelligence for batch, discrete production, packaging and quality management. |
|
CS 3210 Design of Operating Systems CS 3210 2-3-3 Design of Operating Systems Spring 2000, TuTh 1:35-2:25Chemical Engineering (Bunger-HenryBuilding) 360Instructor Phillip W. Hutto pwh@cc.gatech.edu 119 College of Computing Building (I'm never there...) (home) 404.892.7444 (emory) 404.727.0520 Office Hours: Tu, Th 2:30-3:30 pm and by appointment (in theCollege Commons)Teaching Assistant Jason Lunz j@cc.gatech.edu Office Hours: MW 1-2 pm Th 11-12 am and by appointment (in the CollegeCommons)Web: http://www.cc.gatech.edu/classes/AY2000/cs3210_springNews: news://news.cc.gatech.edu/git.cc.class.cs3210Course ObjectivesThis is a second course in operating systems with a focus on the design andconstruction of a modern OS kernel. We will review in depth, fundamentaloperating system concepts such as booting, system calls, process andthread abstractions, scheduling, synchronization, interprocess communication,memory management (allocation, paging, mapping), file systems, device drivers,and network management. Our aim is to move beyond a simple conceptualfamiliarity with OS components to a deeper understanding of how such componentsare realized in a production-quality operating system.This will be a project-oriented course. We will use the Linuxkernel as our classroom. Students will work in teams. Each team will be issuedan experimental single-board computer (Skiff boards) developed at the CompaqResearch Laboratory (CRL) in Cambridge, Massachusetts as part of the CompaqPersonal Server project.Students should leave the course with: an understanding of the components that constitute a modern operating system kernel an understanding of how OS abstractions are realized on conventional hardware an appreciation for the complexity and scope of a production-quality operating system an ability to read and understand the source code for major components of the Linux kernel an ability to cross-compile, load, run and debug the Linux kernel on Skiff board-based computers an ability to make simple modifications to the Linux kernel an ability to develop device drivers and kernel modules of moderate complexity familiarity with resources available in the Linux community and with the open-source development process.PrerequisitesCS 2200 or CS 3341 (quarter system) are prerequisites to this class. Studentsare assumed to have a basic understanding and familiarity with fundamental OSconcepts such as processes, synchronization, threads, scheduling, memorymanagement, file systems, etc. If you do not have this background you shouldn'tbe in this class!TextsThere are two required texts for the course. We will read these textsclosely. Linux Kernel Internals 2e Beck, Bohme, Dziadzka, Kunitz, Magnus, Verworner Addison-Wesley 1998 480 pages ISBN 0-201-33143-8 ($41.95 at Amazon) Linux Device Drivers Rubini O'Reilly 1998 421 pages ISBN 1-56592-292-1 ($23.96 at Amazon) If these are not available at local bookstores you should make an effort toorder them through Amazon.com or Fatbrain.com as soon as possible. FLASH! I spoke to customer service at www.fatbrain.com today (Wednesday 12 January) and they say they have 32 copies of the Beck book on hand. You can get these at a special 10% discount and get free expedited shipping by entering the special discount code gatechdisc899. Be sure to specify expedited shipping in the order form!I've listed the following text as recommended. This is the latestversion of the standard Silberschatz and Galvin OS textbook used in 2200 and3341. The new version has a third author, is printed by a different publisherand contains examples in Java. Otherwise it is very similar to Silberschatz/Galvin5e. You may wish to periodically consult this text to review fundamentalconcepts if you find yourself lost in details in the Linux kernel. Applied Operating System Concepts 1e Silberschatz, Galvin, Gagne Wiley 2000 840 pages ISBN 0-471-36508-4 ($80.95 at Amazon) A very good annotated Linux kernel commentary has recently been published. Itis very good but selective in its coverage. You might find this text useful. Linux Core Kernel Commentary Maxwell Coriolis Press 1999 575 pages ISBN 1-57610-469-9 ($31.99 at Amazon) Here is a large text file (~1.2 meg) containing the numbered source listing referred to in the Maxwell text. Check out Scott Maxwell's Linux Core Kernel Commentary webpage. Errata Sample chapter (online) Chapter 5: System Calls GradingExams will be worth 15% each for a total of 30% of your final course grade.There will be no homeworks. 70% of your course grade will be based on programsand projects. Students will form teams of three and remain in the same team forthe entire semester. Teams will be given group grades but the staff reserves theright to adjust individual grades in special cases. There will be sixprogramming assignments. In addition, each team will be assigned a major topicand produce a descriptive topic web and give a short presentation. These topicwebs will be collected to form the Georgia Tech Linux Kernel Guide. exams 15% 15% programs 5% 7.5% 12.5% 12.5% 12.5% p1: compile and download the kernel into your Skiff board p2: implement some new system calls in Linux (see Beck ch 3) p3: implement the scull character device driver described in Rubini p4: modify the scheduler p5: implement a "file" in the "on-demand" /proc filesystem topic web 10% group and class participation 10%ExamsThere will be two exams: a midterm and a final. Exams will test your abilityto articulate your understanding. Exams will emphasize higher level concepts andprinciples and will serve to balance the detail-oriented project work. Theformat of the exam and review materials will be announced at a later date. midterm: Thursday 24 February 1:35-2:25 pm Chem Eng 360 final: Tuesday 2 May 8-10:50 am location TBAPhotos!Mug shots of the course staff and students. Need someone's email address?Check out the public class roll that I've preparedby removing all the sensitive information. Syllabus # mon day date topic readings notes out in 1 JAN Tu 11 Beck chs 1-2 2 Th 13 Skiff development process; kernel overview/architecture Rubini chs 1 Maxwell chs 1, 3 Lecture1 Maxwell chs 2, 4 3 Tu 18 printk.c P1 overview Maxwell ch 2 Lecture2 P1 Skiff boards Team signups 4 Th 20 Booting, kernel init Maxwell ch 4 Beck 3.2.3, App D Rubini ch 16 Lecture3 Maxwell ch 5 5 Tu 25 System calls Maxwell ch 5 Beck ch 3.3 Beck App A (scan) P1 6 Th 27 System calls 7 FEB Tu 1 Signal Handling Maxwell ch 6 P2 8 Th 3 Interrupts Maxwell ch 6 9 Tu 8 Char Drivers Rubini chs 2,3,5 Beck ch 7 P3 P2 10 Th 10 Char Drivers WROX ch 21 Cox Porting Maxwell ch 7 11 Tu 15 Processes, Threads, Scheduling Maxwell ch 7 Beck ch 3.1, 3.2 Lecture10 12 Th 17 Processes, Threads, Scheduling 13 Tu 22 GUEST: Jamey Hicks P3 14 Th 24 MIDTERM 15 Tu 29 Modules, Debugging Beck ch 9 Rubini ch 2, 4, 11 kmod.txt 16 MAR Th 2 Bech ch 9 Rubini ch 2, 4, 11 kmod.txt Maxwell ch 8 Tu 7 SPRING BREAK Th 9 SPRING BREAK 17 Tu 14 no class 18 Th 16 Memory Maxwell ch 8 Beck ch 4 LKG ch 3 19 Tu 21 Memory Maxwell ch 8 Beck ch 4 P4 Maxwell ch 9 20 Th 23 IPC Maxwell ch 9 Beck ch 5 21 Tu 28 Maxwell ch 9 Beck ch 5 Topic Web: Booting 22 Th 30 Block Drivers Rubini chs 12, 14 P4 Topic Web: System Calls 23 APR Tu 4 Rubini chs 12, 14 Topic Web: Signals 24 Th 6 GUEST: Jason Lunz Files Beck ch 6 LKG ch 9 Topic Web: Char Drivers 25 Tu 11 Beck ch 6 Topic Web: Processes 26 Th 13 Networking Beck ch 8 LKG ch 10 Topic Web: Modules 27 Tu 18 Beck ch 8 Maxwell ch 10 Topic Web: Memory 28 Th 20 SMP Maxwell ch 10 Beck ch 10 Topic Web: IPC 29 Tu 25 Maxwell ch 10 Beck ch 10 P5 Topic Web: File Systems 30 Th 27 GUEST Lecture by Tux Topic Web: Networking MAY Tu 2 Final Exam 8-10:50 am Topic Web Final Submission Wed 3 P5 DUE: noon TeamsStudents will work on all programming assignments and on the topic webproject in teams of three. You must identify your teammates by class on Tuesday18 January or you will be randomly assigned to a team. You are encouraged tocome up with an interesting team name and develop a sense of groupresponsibility. The whole point of working together in groups is to helpeach other learn! If some team member is not keeping up, assistance and cajolingare in order! If some team member is not playing fair, let Phil or Jason knowand we will have a "motivational" discussion with that individual :-)You are encouraged to schedule weekly team meetings. Jason and Phil will besitting in on a few of these team meetings throughout the semester to help outand to evaluate group dynamics.Skiff BoardsEach team will be assigned a Skiff board in class on Tuesday 18 January forthe duration of the semester. Team members will need to sign a statement ofresponsibility. Students will be liable for damage to the boards which are worthabout $500 each. We have a few extra boards so auditing students may form a teamand sign-out a board as well.So what's a Skiff? skiff \'skif\ n [MF or OIt; MF esquif, fr. OIt schifo, of Gmc origin; akinto OE Xscip ship 1: a small light sailing ship2: a light rowboat 3: a boat withcenterboard and spritsail light enough to be rowed 4: a small fast powerboatJameyHicks at CRL says:"Skiff was named by FrankBomba, who is head of the advanced development group.Frank has named a whole line of projects after kinds of boats. Thisone is a small boat. He came up with a pseudo-acronym: simple configurableinternet facility.-JameySkiff Linux Source CodeWe will be using a modified version of the Debiankernel source targeted for the IntelStrongARM SA-110 processor in our Skiff boards. As of now the officialkernel version to be used by everyone in the class is 2.2.12-rmk1-crl3. We mayupdate this from time to time as we receive new versions from our friends atCompaq's Cambridge Research Lab. (Curious about all those dashes and numbers inthe kernel version? The latest stable Linux kernel release is 2.2. Odd-numberedkernels are unstable "development" kernels. Linus has announced a"feature freeze" and version 2.4 should be coming out in the nextcouple of months. We are working with minor release .12. The very latest versionis reported at www.kernel.org and iscurrently .14. The "rmk1" part of the release are the initials ofRussell M. King, the primary coordinator of the ARMLinux Project. "crl3" tracks Skiff-specific patches applied by theCambridge Research Lab.)The entire source tree is available through the link below asa compressed "tarball" of about 13 meg. linux-2.2.12-rmk1-crl3.tgzCompressed tarballs usually have the file extension .tgz. Suchfiles are first created by "archiving" the entire directory hierarchyinto a single file using tar (tape archive). Then the resulting file iscompressed using the GNU zip compression tool (gzip). To get a listing or a"manifest" of the files in a tarball (say foo.tgz) on most systems youcan type: tar ztf foo.tgzTo extract the files, type: tar zxf foo.tgzMost tarballs are created with relative pathnames so you can extract theminto any location and reconstitute the original source tree rooted at thecurrent directory. It's a good idea to always check and make sure a tarballdoesn't include absolute pathnames or you may overwrite important existingfiles.I've created a rudimentary browsable manifestof the entire kernel source tree. You might enjoy poking around. (Note thatdirectories are dead links in the current version but all actual file links arevalid.) Here is a fancyhyperlinked version of the standard 2.2.12 kernel generated using a toolcalled the Linux Source Driver.Here is yet another hyperlinked 2.2.12kernel using a tool called lxr from the LinuxCross-Reference Project. Cross CompilerYou will need to use a cross-compiler to compile the Linuxkernel and any application programs you might be interested in running on yourSkiff board. A cross-compiler is simply a compiler that generates machine codefor some architecture other than the architecture it is running on. We will usea special version of the GNU c compiler (gcc) that runs under Linux on IntelPentium architecture but generates executable code for the StrongARM processoron the Skiff boards. Building a GNU cross-compiler is a complicated task (Seethe FAQ for details.) Fortunately,our friends at Compaq have built one for us and we have a large tarball thatinstalls all the necessary files and binary executables required to run thecross-compiler on Intel-based Linux.The tarball is large (~27meg) and unpacks to around 100meg. Toinstall, download the following tarball: arm-linux-cross-compiler.tgzand move it into the root directory (/) on your Linux system.Issue the following command as root: tar zxvf arm-linux-cross-compiler.tgzThis will create a directory /usr/local/arm-unknown-linuxcontaining about 100 meg of files and it will place some executables in /usr/local/binas well. (Make sure you have enough space! I filled up my root partition thefirst time I tried this.) That's it. You should now have a functioningcross-compiler that should work properly for compiling the kernel.The cross compiler is available on all the Linux machines inthe Intel lab as: /usr/local/bin/arm-unknown-linuxelf-gccSkiff LabWe have reserved a table (hereafter "the Skiff Lab")in the very back corner of the Intel lab where you can download and test yourkernels (though we strongly encourage you to consider setting up a developmentenvironment on your personal Linux machines). The Skiff Lab includes a 10 portEthernet hub on an isolated Skiff development subnet used by ProfessorRamachandran and his students. Each board will be given a static ip address andyou must plug your board into the corresponding hub port. A power strip isprovided to power your boards. Serial cables are connected to the COM1 port on 6designated machines. You must run a terminal emulation program (minicom)on these machines to serve as the "console" for your Skiff board. Itis also possible to interact with your Skiff board using Hyperterminalrunning under Windows NT. Through the console you can interact with thebootloader and login to your Linux system if it installs and comes up properly.We will provide additional details on this process in coming days. CS 3210students will have "priority" on the designated machines and you maypolitely ask anyone using your machine to move to another available machine.BootloaderWe have installed a current version of the bootloader (builton 7 January 2000) on all the Skiff boards that will be handed out to the class.You shouldn't need to do this but it is possible to install a new bootloader onany Skiff board with a functioning bootloader. (If you damage the bootloader,the boards must be sent back to Cambridge to have a bootloader reinstalled usinga low-level hardware-based mechanism called the JTAG interface.) The bootloaderincludes an implementation of the XMODEM serial transfer protocol and you caneasily download a new bootloader using the Send File capability in Hyperterminal.(Unfortunately, the bootloader does not properly understand the XMODEM protocolimplemented in minicom so you can only do this on a Windows machine at present.)To download a bootloader, copy the following binary file(49152 bytes) to a Windows machine: bootldrConnect a serial cable to your Skiff board, reboot and pressthe SPACE BAR to interrupt the boot process and bring up the bootloader prompt.You should see something like this: >> Compaq Personal Server BootLoader, Rev 2.00(a.out) >> (Edwin Foo,Jamey Hicks,Dave Panariti,Mike Schexnaydre,Chris Joerg), 00-01-07_15:36 >> SA110 Rev=4401A104 >> (c) 1999 Compaq Cambridge Research Laboratory Press Return to start the OS now, any other key for monitor menu eval param blk + set dram_size 00000000 setting param=dram_size to value=00000000 + set system_rev 00000002 setting param=system_rev to value=00000002 Cannot change the system_rev! + set hostname skiff18 setting param=hostname to value=skiff18 + set ipaddr 192.168.0.3 setting param=ipaddr to value=192.168.0.3 + set gateway 192.168.0.1 setting param=gateway to value=192.168.0.1 + set netmask 255.255.255.0 setting param=netmask to value=255.255.255.0 + set nfs_server_address 192.168.0.2 setting param=nfs_server_address to value=192.168.0.2 type "?" or "help" for help. boot>At the boot prompt, simply type: load bootldrand then quickly select Transfer >Send File from the Hyperterminal menu.Select the XMODEM protocol and enter the file name and begin the transfer. Whenthe transfer completes, reboot the Skiff board and you should be running withthe new bootloader.Good (Recovery) Kernel!We will maintain a working kernel image in the following file:v2212skiffzimageYou can always reload this good kernel if you damage the kernel in your Skiffboard and are unable to compile a new working kernel. Topic Web ProjectFor the topic web project, each team will compose asubstantial web of tutorial material describing one of the major topics we havestudied this semester. Your web should include but is not limited to a detailoutline of the material presented in class. Your audience is next semester's3210 students! Please try to convey to them everything that they need to knowabout each topic. You may draw on the many resources that are available to youincluding textbooks, handouts, magazine articles, man pages, guides, HOWTOs,etc. Your web should do more than just outline the material we have covered. Inaddition, you should select one or two concepts and elaborate on these beyondwhat was covered in class or in the reading. For example, you might look at the2.4 development kernel and discuss some of the new additions. Or you mightinclude a description of some ARM or SKIFF specific modifications. Exampleprograms, code and diagrams are all valuable. The LinuxKernel Guide is a pretty good starting point. I will put all the topic websthat are submitted together to form the Georgia Tech Linux Kernel Guide.Students in subsequent semesters will be given your web pages as a startingpoint and they will be asked to refine and update them. So try hard to getthings off to a good start!Online Linux Resources www.linux.org a friendly, well-organized site; a good place to start with general questions www.kernel.org the official kernel site; just the code... The Linux Documentation Project the people that write all those indispensable HOWTO documents Kernel Notes very good source of kernel-related information check out the Source Browsers section for fancy hyper-linked versions of the kernel source Linux Weekly News a good, well-organized source on a variety of Linux-related topics Linux Today daily summary of a variety of news-oriented Linux sources Linux Journal the Kernel Korner columns are very good but not available online :-( Linux World light-weight site with a nice topic index The Linux Kernel Guide nice mid-level description of the kernel; describes the 2.0 kernel but still useful Odds and Ends Thad Starner's presentation "Linux in Wearable Computing Research" at the 1999 O'Reilly Open Source Conference Alan Cox, Linux kernel hacker #2, has an excellent series of device driver columns for "Gearheads" in Linux Magazine Alan Cox An Introduction To SCSI Drivers Linux Magazine Alan Cox Porting Linux 2.0 Drivers to Linux 2.2: Changes and New Features Linux Magazine May 99 Alan Cox Porting Device Drivers to Linux 2.2: Part II Linux Magazine June 99 Matt Welsh Secrets Inside the Linux Kernel Revealed Linux Magazine July 99 Alessandro Rubini Kernel Konfiguration: Are You Ready to Build Your Own Linux Kernel? Linux Magazine Nov 99 see Alessandro's picture! Linus' original Linux release from 1993 -- all 6000 lines! linux-0.01.tgz Card, Ts'o, Tweedie Design and Implementation of the Second Extended FileSystem www.globalfilesystem.org Pranevick Wonderful World of Linux 2.4 |
|