Giter Site home page Giter Site logo

cs361's Introduction

CS361 - Operating Systems

Labs

  • Lab 1: Three operations are commonly used to program CPU and I/O registers: Test, Set, and Clear. Lab 1 will implement these 3 operations along with a Mask function.
    • Grade: 100/100
  • Lab 2: You will be creating a UART (Universal Asynchronous Receiver Transmitter) driver for MZOS (Marz OS). The point of this lab is to learn how to control hardware from an operating system. The programming part requires no more knowledge than pointers and pointer arithmetic.
    • Grade: 90/100
      • -10 for not handling 8BIT and PODD.
      • Note, you don't need to return from a void function. You always have a return statement at the end of the function that is not needed.
  • Lab 3: You will be implementing the interactive scheduler for Marz OS. You will be writing three different interactive scheduling algorithms: round robin, multilevel, and multilevel feedback.
    • Grade: 100/100 90/100
      • -10 You run through the entire list of processes, update the times, then start your scheduler. You should check to see if the time can be updated as you're trying to schedule it.
  • Lab 4: You will be writing a few functions required to implement the Sv32 memory management unit. This time, MZOS has both kernel and user space. Therefore, it is required that your code map/unmap and switch MMU pages to make sure that all user space lives in user space, and that all kernel space lives in kernel space.
    • Grade: 100/100
      • "Very well done!" Stephen Gregory Marz, Mar 9 at 4:16pm
      • "By the way, C-style string literals are const char * since they are r-values. That's why you get those warnings." Stephen Gregory Marz, Mar 9 at 4:16pm
  • Lab 5: This project is all about implementing a file system in a true environment. You will be using a kernel module and library called FUSE--Filesystem in Userspace. This is a real filesystem in Linux and works with the Hydra machines. You will be writing several functions that read and write to a block file and allow the user to interact with your filesystem.
    • Grade: 83/100
      • -15 Input/output error while writing to file - Adam Connor Short, Apr 18 at 6:29pm
      • -2 Does not change modify time in fs_open. - Adam Connor Short, Apr 18 at 6:31pm
  • Lab X: You will be writing a VIO (Virtual I/O) driver which probes, sets up, and reads from block and entropy (random) devices.
    • DID NOT ATTEMPT

Powerpoints

cs361's People

Contributors

calemon avatar

Watchers

James Cloos avatar  avatar

cs361's Issues

mmu_map space and aligned pointer may be off

The current way to find a free space in MMU_TABLE is and then align it is with the following:

space = &MMU_TABLE[1024 * p->pid * 10];

aligned_space = (uint32_t) (space + (ALIGN_TO - 1)) & -ALIGN_TO;

However, space may be calculated incorrectly and thus aligned_space is incorrect.

get_timer_lo() and get_timer_hi()

How can I use both get_timer_lo and get_timer_hi to compare process sleep times and run times? Need to figure out use of both of these functions/values.

mmu_map confusion

What does the bolded instruction mean in the example section of the lab write up?: "2. Now you have a properly aligned pointer to free memory space. This pointer now points to your root page table entry. You will have two levels of page tables. The first level will contain no leaves, but every single page table contains 1024 entries, each 4 bytes a piece. To determine which of the 1024 entries will need to be mapped, you will need to decompose your program pointer and stack pointer using Figure 4.13 shown above. VPN[1] will contain the array index into your first level page table, and VPN[0] will contain the array index into your second level page table."

Multilevel Scheduling

Need to implement Multilevel Scheduling algorithm.

Explanation of algorithm is in ZyBooks chapter 4.3.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.