Search Results

  1. Dec 14, 2021 · CS-3210 is primarily intended for senior students (motivated junior students) and graduate students who want to concentrate on systems. To benefit from the course, low-level programming skills (e.g., C or ASM programming) and preliminary knowledge on computer system (e.g., CS 2200) and architecture (e.g., CS 2110).

    • Schedule

      The schedule will change as the course progresses, in part...

    • Final Project

      Introduction¶. The main goal is to have fun and explore more...

  2. CS3210 Parallel Computing. Processes rocess State Graph. Time slicing: Same core shared by multiple processes. [ CS3210 - AY1819S1 - L02 ] fork() { useful when child relies on parent's data. Disadvantages: creation of new process is costly (all data structures must be copied), communication costly (goes through the OS) Threads.

  3. Aug 30, 2017 · CS-3210 is primarily intended for senior students (motivated junior students) and graduate students who want to concentrate on systems. To benefit from the course, low-level programming skills (e.g., C or ASM programming) and preliminary knowledge on computer system (e.g., CS 2200) and architecture (e.g., CS 2110).

    • What is this course about?
    • View: layered organization
    • View: layered organization
    • Why is designing an OS interesting?
    • Equipment
    • Challenges in (practical) operating systems
    • Lab 2 - Memory Management Lab 2
    • Lab 2
    • Lab 5 - File system and shell
    • Lab 6
    • QEMU - Quick EMUlator
    • Vagrant Vagrant
    • Why using C for OS development?
    • How are your C skills?
    • Selected feedback from last semester

    Gain a detailed knowledge of how an Operating System it built up Gain hands-on experience working with a real kernel Come away with valuable experience that can be applied to other kernels Course Goals be taking this course? Useful for those who want to understand systems and platforms E.g., want to improve Android or contribute to Linux kernel Tho...

    Layers: User: applications (e.g., vi and gcc) Kernel: file system, process, etc. Hardware: CPU, mem, disk, etc. -> Interface between layers What is an operating system?

    Typical Core Services: Processes Memory File contents Directories and file names Security Many others: users, IPC, network, time, terminals, etc. -> Abstraction for applications View: core services

    Conflicting design goals and trade-offs Efficient yet portable Powerful yet simple Isolated yet interactable General yet performant Some open (ongoing) challenges Security Multi-core

    A laptop or other computer is required for this course. Must be able to install the necessary software on it (VirtualBox, QEMU, etc.) Let us know in advance if this is a problem.

    e.g. Mac OSX, Windows, Linux Legacy (compatibility) Implementation Business

    Kernel physical page management Write the physical page allocator (and deallocator...) Virtual memory Understand virtual, linear, and physical addresses Implement reference counting, page table management Permissions and fault isolation Initialize kernel address space Lab 3 - User Environments

    Basics of getting a "process" running In JOS terminology this is an "environment"

    Load and run on-disk executables Be able to run a shell on the console Build a simple read/write file system

    The toolchain setup is critical up-front work for this class We will help you in the first tutorial (Thurs) You can develop on whatever you want, and use whatever you want, but our standardized environment and tools will be used for grading. You have been warned (again).

    Performs hardware virtualization Can emulate obscure processor architectures Does share code with some other projects (VirtualBox) Good for working with the kernel (GDB stub) We will use it for this

    "Create and configure lightweight, reproducible, and portable development environments" A convenient front-end to provide reproducible virtual machines Easily hooks into Virtualbox, Parallels, VMWare, etc. Our vagrant instance on github.gatech.edu will be the de-facto machine for grading Test with it before and after tagging your submissions!

    Portability No runtime Direct hardware/memory access (decent) Usability

    C is the most important skill to have for this class OS programming involves a great deal of pointer arithmetic. The compiler will not save you from these mistakes. If your C skills are rusty, you may stuggle with the lab work. Labs deadlines come quickly. Little time to build basic skills.

    "The amount you learn in this class is astronomical compared to many other classes at GT. Also, the drop rate is insane, but please don't water down the class because of this. It was a hard class but it should remain a hard class. I kind of like the if you actually make it through you probably get an A/B. There seem to be a number of classes at tec...

    • 719KB
    • 47
  4. This module provides an introduction to parallel computing with hands-on parallel programming experience on real parallel machines. The module is divided into four parts: parallel computation models and parallelism, parallel architectures, parallel algorithm design and programming, and new parallel computing models.

  5. CS3210 Review. Taken in AY18/19 Sem 1 under Prof Cristina Carbunaru. This module is an expository module to parallel computing and the various parallel architectures in use today.