Git Product home page Git Product logo

cs111's Introduction

Labs from CS111: Operating Systems Principles

Taken with Professor Mark Kampe in Spring 2018

Lab 0: Warmup

Basic C programming warmup using the getopt_long(3) API to make a simple CLI application that copies the standard input to standard output with support for --segfault and --catch to raise a segmentation fault.

Lab 1A: Terminal I/O and Inter-Process Communication

A multi-process telnet-like client and server. Supports character-at-a-time full duplex terminal I/O with Polled I/O in passing input and output between two processes.

Lab 1B: Compressed Network Communication

A continuation of Lab 1A. We pass input and output over a TCP socket and use the zlib library to compress communication between the client and the server.

Lab 2A: Races and Synchronization

A multithreaded application in C using pthreads to update a shared variable. We demonstrate that there is a race condition in the provided add routine and we must address it with different synchronization methods such as mutexes, spin locks, test-and-sets, and compare-and-swap. Deals with conflicting read-modify-write operations on single variables and complex data structures (an ordered linked list)/

Lab 2B: Lock Granularity and Performance

Executed performance instrumentation and measurement through a profiling tool (gprof) to determine the cause of a problem. Divide the linked-list in Lab 2A into smaller sublists and support finer granularity synchronization and allowing parallel access to the original list.

Lab 3A: File System Interpretation

Lab to understand the on-disk data format of the Linux EXT2 file system. A program to analyze a file system image and output a summary to standard output that describes the super block, groups, free-lists, inodes, indirect blocks, and directories in a CSV file.

Lab 3B: File System Consistency Analysis

A program to analyze a file system summary (a .csv file in the same format produced for the previous file system project) and report on all discovered inconsistencies. Because this project involves trivial text processing, we used Python.

Lab 4A: Beaglebone Bring-Up

A simple project to set up Wifi/Bluetooth and SSH capabilities on a Beaglebone so that students have a working development environment and have the ability to transfer files between machines.

Lab 4B: Sensors Input

A program to take temperature measuerements from the Beaglebone sensors with support for options to change the temperature units, the output period, start/stop buttons, and writing outputs to a log file.

Lab 4C: Internet Of Things Security

A project that applies the principles of Cryptography, Distributed Systems Security, and Secure Socket Layer Encryption. We establish communication with a logging server with our Beaglebone and write to both a TCP server log and an Authenticated TLS session log.

Lab Score
Lab 0 100/100
Lab 1A 98/100
Lab 1B 100/100
Lab 2A 96/100
Lab 2B 97/100
Lab 3A 96/100
Lab 3B 97/100
Lab 4A 100/100
Lab 4B 100/100
Lab 4C 99/100

cs111's People

Contributors

lucamatsumoto avatar

Stargazers

 avatar

Watchers

 avatar

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.