What to Expect from Honors Course

Similar documents
Practical Programming Methodology

- Knowledge of basic computer architecture and organization, ECE 445

ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi

Operating Systems, Spring 2015 Course Syllabus

Announcements. 1. Forms to return today after class:

Programming Studio #9 ECE 190

1

Problem Set 1: Unix Commands 1

CS 211 Programming I for Engineers

Portland State University Maseeh College of Engineering and Computer Science. Proficiency Examination Process

ELEC 377 Operating Systems. Week 4 Lab 2 Tutorial

CSE 351. Introduction & Course Tools

CSCI-1200 Data Structures Spring 2017 Lecture 5 Pointers, Arrays, Pointer Arithmetic

University of Colorado at Colorado Springs CS4500/ Fall 2018 Operating Systems Project 1 - System Calls and Processes

Introduction to Computer Systems

CSE 141 Computer Architecture Spring Lectures 17 Virtual Memory. Announcements Office Hour

CROWDMARK. Examination Midterm. Spring 2017 CS 350. Closed Book. Page 1 of 30. University of Waterloo CS350 Midterm Examination.

Comp 104: Operating Systems Concepts

Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY Fall Quiz I

PRINCIPLES OF OPERATING SYSTEMS

ECE 3574: Applied Software Design

Final Project: LC-3 Simulator

Jackson State University Department of Computer Science CSC / Advanced Information Security Spring 2013 Lab Project # 5

CS 375 UNIX System Programming Spring 2014 Syllabus

Eclipse CDT Tutorial. Eclipse CDT Homepage: Tutorial written by: James D Aniello

Class Information ANNOUCEMENTS

Operating Systems CMPSC 473. Introduction January 15, Lecture 1 Instructor: Trent Jaeger

CSCI-1200 Data Structures Spring 2014 Lecture 5 Pointers, Arrays, Pointer Arithmetic

Memory Management. Fundamentally two related, but distinct, issues. Management of logical address space resource

Laboratory Assignment #3 Eclipse CDT

CS 5460/6460 Operating Systems

Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory.

Course Syllabus - CNT 4703 Design and Implementation of Computer Communication Networks Fall 2011

Operating System Project / Lecture 1 Tasks and scheduling. Bon Keun Seo

COMP 401 COURSE OVERVIEW

Advanced Operating Systems and Virtualization. Alessandro Pellegrini A.Y. 2017/2018

Introduction to UNIX

Introduction and Overview

CSE 303 Concepts and Tools for Software Development. Magdalena Balazinska Winter 2010 Lecture 27 Final Exam Revision

John A. Ronciak Staff Engineer NCG/NID/LAO Intel Corp.

CS 300. Data Structures

Tutorials. Tutorial every Friday at 11:30 AM in Toldo 204 * discuss the next lab assignment

Week 10 Project 3: An Introduction to File Systems. Classes COP4610 / CGS5765 Florida State University

just a ((somewhat) safer) dialect.

CS 2150 Exam 2, Spring 2018 Page 1 of 6 UVa userid:

CS 525 Advanced Database Organization - Spring 2017 Mon + Wed 1:50-3:05 PM, Room: Stuart Building 111

CS 140 Project 2: User Programs. Fall 2015

SYSTEM CALL IMPLEMENTATION. CS124 Operating Systems Fall , Lecture 14

Introduction to Computer Systems , fall th Lecture, Sep. 28 th

RCU. ò Walk through two system calls in some detail. ò Open and read. ò Too much code to cover all FS system calls. ò 3 Cases for a dentry:

VFS, Continued. Don Porter CSE 506

Final Exam. 12 December 2018, 120 minutes, 26 questions, 100 points

MEMORY MANAGEMENT UNITS

Virtual Memory Review. Page faults. Paging system summary (so far)

MIT OpenCourseWare Multicore Programming Primer, January (IAP) Please use the following citation format:

Lecture 7: file I/O, more Unix

How do we define pointers? Memory allocation. Syntax. Notes. Pointers to variables. Pointers to structures. Pointers to functions. Notes.

Arrays and Pointers. CSC209: Software Tools and Systems Programming (Winter 2019) Furkan Alaca & Paul Vrbik. University of Toronto Mississauga

TDDB68. Lesson 1. Simon Ståhlberg

Software Based Fault Injection Framework For Storage Systems Vinod Eswaraprasad Smitha Jayaram Wipro Technologies

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins)

Object-Oriented Programming CSCI-UA

Linux Essentials. Smith, Roderick W. Table of Contents ISBN-13: Introduction xvii. Chapter 1 Selecting an Operating System 1

Lab 6: OS Security for the Internet of Things

COSC 2P95. Introduction. Week 1. Brock University. Brock University (Week 1) Introduction 1 / 18

CS , Fall 2003 Exam 2

CS350 Midterm Spring 2012 Page 1

C 1. Recap: Finger Table. CSE 486/586 Distributed Systems Remote Procedure Call. Chord: Node Joins and Leaves. Recall? Socket API

C Compilation Model. Comp-206 : Introduction to Software Systems Lecture 9. Alexandre Denault Computer Science McGill University Fall 2006

Lab 6: OS Security for the Internet of Things

Programming with Arrays Intro to Pointers CS 16: Solving Problems with Computers I Lecture #11

Laboratory Assignment #4 Debugging in Eclipse CDT 1

Memory: Page Table Structure. CSSE 332 Operating Systems Rose-Hulman Institute of Technology

Stack Overflow. Faculty Workshop on Cyber Security May 23, 2012

CoSci 440 SYLLABUS Programming in C++ INSTRUCTOR Mari Rettke cell SECTION : and 13345

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

Project C: B+Tree. This project may be done in groups of up to three people.

Using the Unix system. UNIX Introduction

Object-Oriented Programming Fall Robert Grimm, New York University

Room 3P16 Telephone: extension ~irjohnson/uqc146s1.html

About Me. Office Hours: Tu 4-5, W 1-2, or by appointment Office: 346A IST Bldg

CS240: Programming in C

Operating Systems (ECS 150) Spring 2011

CSci Introduction to Operating Systems. Administrivia, Intro

Operating System Labs. Yuanbin Wu

ROP It Like It s Hot!

Summer June 15, 2010

CS140 Operating Systems Final December 12, 2007 OPEN BOOK, OPEN NOTES

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

CIS*1500 Introduction to Programming

COMP3221: Microprocessors and. Embedded Systems

CS 0449 Intro to Systems Software Fall Term: 2181

ESET 369 Embedded Systems Software, Spring 2018

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

CS140 Final Review. Winter 2014

CS-537: Midterm Exam (Fall 2008) Hard Questions, Simple Answers

Fall 2017 :: CSE 306. File Systems Basics. Nima Honarmand

Caching and reliability

CMPSC 497 Buffer Overflow Vulnerabilities

Grep and Shell Programming

Transcription:

COMP 530H Operating Systems Honors: A Study of Linux on Intel IA-32 Systems Introduction Kevin Jeffay Don Smith 1 What to Expect from Honors Course Introduction to Linux OS kernel implementation. Experience writing, testing, and evaluating code running in the Linux kernel. Integrated with the regular COMP 530 course: Same in-class material (Monday and Wednesday). Extra meeting Fridays for Linux material. Same problem sets and exams. Different programming assignments AFTER assignments 1 & 2. Somewhat compressed schedule for turning in assignments 1 & 2. Key Difference 530 students will use services provided in the Linux kernel; 530H students will develop new services for the Linux kernel. 2

Necessary Background C/C++ and Linux experience beyond COMP 411 Heavy use of pointers, structures, and strings Experience with tools and utilities Any Linux editor (vim, vi, emacs,.) gcc and make less, grep, cut,. 3 Why This is Not for the Fainthearted No IDE (e.g., no Eclipse, MS Visual Studio, etc.) No Debugger (e.g., gdb, etc.) Invalid pointer => Kernel Panic Machine halts with (usually) un-helpful console display, much in hex. No nice segmentation fault indication. You will use a Virtual Machine (VM) on your laptop for easy recovery from panics Programming success depends on: Coding correctly and defensively the first time, Taking small incremental steps, Using print statements if debugging is necessary. 4

Some Linux C Examples struct pid get_task_pid(struct task_struct task, enum pid_type type) struct pid pid; rcu_read_lock(); if (type!= PIDTYPE_PID) task = task->group_leader; pid = get_pid(task->pids[type].pid); rcu_read_unlock(); return pid; EXPORT_SYMBOL_GPL(get_task_pid); 5 Some Linux C Examples pid_t pid_vnr(struct pid pid) return pid_nr_ns(pid, task_active_pid_ns(current)); EXPORT_SYMBOL_GPL(pid_vnr); pid_t pid_nr_ns(struct pid pid, struct pid_namespace ns) struct upid upid; pid_t nr = 0; if (pid && ns->level <= pid->level) upid = &pid->numbers[ns->level]; if (upid->ns == ns) nr = upid->nr; return nr; 6

Some Linux C Examples char d_path(const struct path path, char buf, int buflen) char res; struct path root; struct path tmp; read_lock(&current->fs->lock); root = current->fs->root; path_get(&root); read_unlock(&current->fs->lock); spin_lock(&dcache_lock); tmp = root; res = d_path(path, &tmp, buf, buflen); spin_unlock(&dcache_lock); path_put(&root); return res; EXPORT_SYMBOL(d_path); 7 Some Linux C Examples (unlike many functions, that one came with comments) / d_path - return the path of a dentry @path: path to report @buf: buffer to return value in @buflen: buffer length Convert a dentry into an ASCII path name. If the entry has been deleted the string " (deleted)" is appended. Note that this is ambiguous. Returns a pointer into the buffer or an error code if the path was too long. Note: Callers should use the returned pointer, not the passed in buffer, to use the name! The implementation often starts at an offset into the buffer, and may leave 0 bytes at the start. "buflen" should be positive. / 8

If You Want to Take the Honors Course: Before Enrolling, get instructor permission: Email to me (smithfd) or Kevin (jeffay) a 1-2 paragraph summary of your background If you have already gained permission, proceed to enroll. If you would like to meet and discuss it, send me email to schedule an appointment. After Enrolling: Attend one of the workshops with Murray Anderegg to install a Virtual Machine on your laptop Workshops in FB 331 at 3:00 4:00 PM on Tuesday, 8/26. and Wednesday 8/27 Email to me stating which workshop you plan to attend (or let me know if you cannot attend one of these). Bring laptop to workshops and each class meeting Get a copy of the reference book: Love, R., Linux Kernel Development (3 rd Ed.), Addison-Wesley, June 2010. 9