1 / 22

Subversion and Nachos tutorial

Subversion and Nachos tutorial. Bhavjit S Walha. What will we be covering?. Announcements Account set-up Introduction to subversion How to checkout the assignment How to turn-in Simple commands Basic Nachos tutorial Basic structure of the OS Threads package

benoit
Download Presentation

Subversion and Nachos tutorial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Subversion and Nachos tutorial Bhavjit S Walha

  2. What will we be covering? • Announcements • Account set-up • Introduction to subversion • How to checkout the assignment • How to turn-in • Simple commands • Basic Nachos tutorial • Basic structure of the OS • Threads package • How to get started on the 1st assignment

  3. AnnouncementsGroups • I have received only 7 groups till now • Approx 8 students still unpaired. • Why is a group important? • You cannot download the assignment • Hence, you cannot turn it in • Rest of this tutorial will be useless. • SO PAIR UP NOW!!!

  4. Announcements:Groups • Group 1 • hqiu, j9yang, dzheng, hschao • Group 2 • jmoe, kderaksh, wtlee • Group 3 • okhalili, j3davis, jalai, hnvo • Group 4 • dbjcarbaj, mpirkle • Group 5 • amancour, c1trinh, jwchan • Group 6 • sctang, tcchheng, ????

  5. Group 7 • mson, e6park, mmm001, kngan? • Group 8 • ??? • Group 9 • ??? • Group 10 • ??? • Group 11 • ???

  6. Subversion • An open source version control system • CVS on steroids • What does it do? • Manages files and directories over time • “Remembers” all changes made over time • Allows one to examine what changes were made, at what time and by whom. • Get the last working copy

  7. Allows multiple users on different computers to work on the same piece of software • to co-operate without having to ‘e-mail’ the assignments. • Since the files are versioned – you can always go back in case somebody entered something wrong • If 2 users modify the same file, you can resolve the conflicts.

  8. SubversionSet-up • The subversion server is already running: • http://cse120.textdriven.com/svn/cse120/ • Your logins and passwords are already in the mail • This DOES NOT have a web interface • You can checkout Nachos from: • http://cse120.textdriven.com/svn/cse120/trunk/nachos • Each group has been assigned a directory to manage their files • http://cse120.textdriven.com/svn/cse120/groupXX • You should always use your individual logins • The svn client is located in the public folder: • /home/linux/ieng6/cs120u/public

  9. Environment variables • All settings required for bash and csh are included in the prepfile. • prep cs120u

  10. Setting up your repository • Only 1 person in a group should do this. • The Nachos distribution has already been copied into your directories • svn copy http://cse120.textdriven.com/svn/cse120/nachosj/trunk http://cse120.textdriven.com/svn/cse120/group01 • Make a turnin directory • svn mkdirhttp://cse120.textdriven.com/svn/cse120/group01/turnin • svn mkdir http://cse120.textdriven.com/svn/cse120/group01/turnin/proj1 • Similarly make the turnin directories for projects 2 and 3

  11. Turning in your projects • Once you are done: • svn copy http://cse120.textdriven.com/svn/cse120/group01/nachos http://cse120.textdriven.com/svn/cse120/group01/turnin/proj1

  12. Subversion usage • Checkout the files from your repository • svn co http://cse120.textdriven.com/svn/cse120/group01/nachos • This will give you a local working copy in your account • Needed only once • Edit your local copy • When you are ready to make the changes visible to your group mates • svn commit [filename(s)] • It will ask you to enter a log message – is useful to track changes

  13. Other subversion commands • To add a file to the repository • svn add [filenames...] • To delete a file: • svn remove [filenames...] • Add/Delete should be followed by a svn commit • To update your local files • svn update • There may be conflicts which you will need to resolve • To discard local change and revert to the copy in repository • svn revert • For other commands and help: • svn help [command name]

  14. More useful subversion commands • Checking the history of changes • svn log • Checking out a particular revision • svn co –r 22 • Use svn help co for more options • To view the diffs between 2 revisions • svn diff • For more detailed information • http://svnbook.red-bean.com/ • http://subversion.tigris.org/faq.html

  15. Nachos Not Another Completely Heuristic Operating System • An instructional Operating System developed at UC Berkeley. • Originally written in C++ • We would be using the Java version for our course (Nachos 5.0j) • More difficult to make mistakes • Faster debugging cycle

  16. Simulates a real MIPS CPU and a number of H/W devices including: • Interrupts – can be enabled or disabled. • Timer – Simulates a real-time clock • Serial Console • Disk • Network Link • Details can be found in the machine directory • We will not be needing the last 3 in our projects

  17. Nachos Thread package • The source-code is located in the threads directory • All Nachos threads are instances of nachos.threads.Kthread • Possible thread status: • statusNew: A newly created thread, not forked as yet • statusReady: In the ready queue, can be achieved by using Kthread.ready() • statusRunning: Set when KThread.restoreState() is called. • statusBlocked: Usually as a result of KThread.sleep() or waiting for some other resource. • statusFinished: Set by calling KThread.finish()

  18. Scheduler • To create a new queue of threads conforming to the scheduling policy of the scheduler • scheduler.newThreadQueue() • To schedule the next thread from the ready queue (conforming with the policy) • ThreadQueue.nextThread()

  19. Project 1 – Getting started • You will have to enhance the existing Thread package by implementing new synchronization primitives. • Read and understand scheduler.java, condition.java and KThread.java • All changes should be restricted to the threads directory • Do NOT • make changes to the Makefile • Use JAVA threads • Use the synchronized keyword • Add any packages of your own

  20. Project 1 • Part 1: KThread.join() • Ideas?? • Part 2: Condition2.java • Condition.java is a good starting point • Difference between wake and wakeAll? • What about interrupts? • Part 3: • Make waitUntil() non-blocking

  21. Project 1 – part 4(Can use Semaphores or Condition Variables) Initially: SharedData sd; boolean theCondition = false; Lock theLock = new Lock(); Condition AcanProceed = new Condition(theLock); Condition BcanProceed = new Condition(theLock); A's code: theLock.acquire(); while (!theCondition) { BcanProceed.wake(); AcanProceed.sleep(); // Releases the lock and go to sleep atomically. // And we will have the lock when we are waken up. } // Do something to sd ...... // Reset the flag. theCondition = false; // Wake up B BcanProceed.wake(); lock.release(); return;

  22. Nachos • To compile: • cd proj1; gmake • Useful resources: • A guide to Nachos 5.0j. /home/linux/ieng6/cs120u/public/nachosj-walkthrough.pdf • Nachos Roadmap: http://www.cs.duke.edu/~narten/110/nachos/main/main.html • Guide to reading the Nachos source (C version): http://people.cs.uchicago.edu/~odonnell/OData/Courses/CS230/NACHOS/reading-code.html • Nachos homepage: http://www.cs.washington.edu/homes/tom/nachos/

More Related