1. Static Linking. CS3214 Spring 2012 Exercise 5
|
|
- Rosaline Goodman
- 5 years ago
- Views:
Transcription
1 Due: Friday, Mar 16, :59pm (no extensions). What to submit: Upload a tar archive that contains a text file answers.txt with your answers for the questions not requiring code, as well as individual files for those that do, as listed below. This exercise is intended to reinforce the content of the lectures related to linking using small examples. As some answers may be specified to our current environment, you must again do this exercise on our rlogin cluster or the lab machines. 1. Static Linking To effectively work with object files and use libraries, you should be familiar with a number of tools. 1. Familiarize yourselves with the nm command (use info nm, for instance), nm displays the values of symbols contained in object files and libraries along with their types. Create a file symbols.c that, when compiled, contains the following symbols: $ gcc -c symbols.c $ nm symbols.o C C D D T T U U b b d d r r t t (The first column need not match.) Include symbols.c in your tarball! 2. What does the command strip do? 3. What does the command size do? What is the total amount of compiled machine code contained in all object modules of /usr/lib/libc.a? Provide the number as a decimal counted in bytes! 4. The directory /home/courses/cs3214/linking contains a subdirectory coreutils build which contains a number of object files and libraries. Unfortunately, the Makefile containing the build instructions is missing. Your task is to build the program cat whose main() function is defined in src/cat.o Start by issuing these commands: 1
2 cp -R cs3214/linking/coreutils-8.13-build. cd coreutils-8.13-build/src gcc -o cat cat.o As you encounter undefined symbols, determine which object files and/or libraries you need to add to the command line until your executable links successfully. Find out which.o files and/or libraries you need to include to build cat successfully! Provide the command line you issued in your answer. You must not include any unnecessary libraries or object files. Hint: Use nm to identify those object files and/or libraries that contain the symbols upon which cat.o depends. 5. Linker map. Learning how to read linker maps is a useful skill that can help debugging linking problems. Add -Wl,-Map -Wl,linkermap to the command line obtained above. Examine the resulting file linkermap and answer the following questions: (a) Which module provides the symbol fdadvise? (b) Which undefined symbol prompted the linker to include the object module mbchar.o? 2. Pointer Puzzle Consider the following program: /* * sort_pointers.c * * Relating pointers to link/runtime layout. * * You should implement the body of weave_pointers in a file * sort_pointers_solution.c, which is to be #included in this * file. * * CS 3214, Spring */ #include <stdio.h> #include <stdlib.h> #include <assert.h> struct list { struct list *next; ; struct list x; #define N 10 static struct list z[n]; 2
3 const struct list c = {.next = 0 ; struct list y = {.next = (struct list *)&c ; static void weave_pointers(struct list *lp, struct list *sp) { /* Implement weave_pointers such that the program prints "Success" * You may not define any static variables in this function, nor * are you allowed to make use of dynamic memory allocation. */ #include "sort_pointers_solution.c" int main(void) { static struct list s; struct list l, *p; int i; int success = 1; weave_pointers(&l, &s); for (i = 0, p = &l; p && i < 20; i++, p = p->next) { if (p < p->next) { printf("pointers out of order: %p < %p\n", p, p->next); success = 0; if (i!= 15) { printf("list has only %d elements, should be 15\n", i); abort(); assert(success!!!"at least one element was out of order"); printf("success.\n"); return 0; which arranges a single-linked list that connects various variables defined in the program. Implement sort pointers solutions.c such that this program outputs Success! Note: You may not use dynamic memory allocation or define static variables in weave pointers. 3. Dynamic Linking 1. Observing Dynamic Linking. When a program starts, the dynamic linker ld-linux.so resolves the program s dynamic dependencies. On Linux, the function of the dynamic linker can be controlled using various environment variables, as described in ld.so(8). The shell script ldd displays an executable s shared library dependencies 3
4 by performing a dry-run that resolves the executable s dynamic dependencies without actually running the program. The environment variable LD DEBUG provides information about what the dynamic linker is doing. Run the following program and answer the following questions env LD_DEBUG=all id (a) The first shared library that is needed is libselinux.so.1. In which directories does the linker look for this file? (b) Give the full path of the actual file being used! 2. Building a Shared Library. The directory /home/courses/cs3214/linking/whoami contains an dynamically linked executable whoami. This executable does not run because a shared library is missing. > /home/courses/cs3214/linking/whoami/whoami /home/courses/cs3214/linking/whoami/whoami: error while loading shared libraries: libwhoami.so: cannot open shared object file: No such file or directory Implement, compile, and link a shared library that implements the functions getunixname() and getrealname() defined in /home/courses/cs3214/linking/whoami/- whoami.h The output should be your Unix id, followed by your real name. For instance, when I run the sample solution after placing it in the current directory (as./libwhoami.so), it would show: > env LD_LIBRARY_PATH=. /home/courses/cs3214/linking/whoami/whoami gback (Godmar Back) Hints: Make sure to invoke whoami using its full path so that you do not accidentally run the system program /usr/bin/whoami by the same name. Make sure to set LD LIBRARY PATH to include the directory in which libwhoami.so is contained! Use the function getuid() and getpwuid() to implement the required functionality. You may not recompile or relink whoami.c; you must use the executable in /home/courses/cs3214/linking/whoami/whoami. Submit your libwhoami.c file and a script makelibwhoami.sh which, when run by the TA, will produce the necessary.so file. 4
5 3. Hiding Files. A rootkit is a set of programs, libraries, and scripts designed to hide the fact that a system was compromised. Some rootkits use a system s dynamic loading facilities to hide their presence. For instance, an attacker may wish to hide the presence of certain files in a directory. The LD PRELOAD environment variable instructs the dynamic linker to load one or more libraries before loading the shared libraries referenced in an executable. Thus, if a symbol is defined in such a library, the program s reference will be resolved against the preloaded symbol, allowing it to intercept calls. In this exercise, create a shared library invisible.so which, when added to LD PRELOAD, will hide the existence of files whose name starts with the prefix invisible. Although a real rootkit would need to make sure that no call reveal the presence of this file, for the purposes of this exercise, you need to intercept only the readdir function that is used, for instance, by /bin/ls. Consult the manpage for readdir(3). The following file provides a skeleton you should fill in. #include <string.h> #include <stdio.h> #define USE_GNU 1 #define USE_LARGEFILE64 1 #include <dirent.h> #include <dlfcn.h> /* Skip files with this prefix */ #define INVISIBLE "invisible_" /* Define function pointer type that matches the signature of readdir */ typedef struct dirent * (*readdir_t)(dir *dir); /* Intercept readdir. If the call would return a directory entry * whose name starts with INVISIBLE, return the next entry instead. * Otherwise, return the original directory entry. */ struct dirent *readdir(dir *dir) { #include "readdirsolution.c" Submit readdirsolution.c! To obtain the value to which readdir would have resolved without interposition, use the dlsym() function, passing the special handle RTLD NEXT. To following sample session shows how invisible.so should work $ mkdir readdir-test $ touch readdir-test/a_file $ ls readdir-test a_file 5
6 $ touch readdir-test/invisible_file $ ls readdir-test a_file invisible_file $ env LD_PRELOAD=./invisible.so ls readdir-test a_file Submit readdirsolution.c and a file makeinvisible.sh that builds it. 6
CS3214 Spring 2017 Exercise 2
Due: See website for due date. What to submit: Upload a tar archive that contains a text file answers.txt with your answers for the questions not requiring code, as well as individual files for those that
More informationLab 1 Introduction to UNIX and C
Name: Lab 1 Introduction to UNIX and C This first lab is meant to be an introduction to computer environments we will be using this term. You must have a Pitt username to complete this lab. NOTE: Text
More informationMiscellaneous C-programming Issues
Miscellaneous C-programming Issues Content Pointers to functions Function pointers Callback functions Arrays of functions pointers External libraries Symbols and Linkage Static vs Dynamic Linkage Linking
More informationCS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm
CS 1550 Project 3: File Systems Directories Due: Sunday, July 22, 2012, 11:59pm Completed Due: Sunday, July 29, 2012, 11:59pm Description FUSE (http://fuse.sourceforge.net/) is a Linux kernel extension
More informationProject 4: File System Implementation 1
Project 4: File System Implementation 1 Submit a gzipped tarball of your code to CourseWeb. Due: Friday, December 7, 2018 @11:59pm Late: Sunday, December 9, 2018 @11:59pm with 10% reduction per late day
More informationLinkers and Loaders. CS 167 VI 1 Copyright 2008 Thomas W. Doeppner. All rights reserved.
Linkers and Loaders CS 167 VI 1 Copyright 2008 Thomas W. Doeppner. All rights reserved. Does Location Matter? int main(int argc, char *[ ]) { return(argc); } main: pushl %ebp ; push frame pointer movl
More informationIntroduction to Supercomputing
Introduction to Supercomputing TMA4280 Introduction to UNIX environment and tools 0.1 Getting started with the environment and the bash shell interpreter Desktop computers are usually operated from a graphical
More informationProblem Set 1: Unix Commands 1
Problem Set 1: Unix Commands 1 WARNING: IF YOU DO NOT FIND THIS PROBLEM SET TRIVIAL, I WOULD NOT RECOMMEND YOU TAKE THIS OFFERING OF 300 AS YOU DO NOT POSSESS THE REQUISITE BACKGROUND TO PASS THE COURSE.
More informationObtained the source code to gcc, one can just follow the instructions given in the INSTALL file for GCC.
Building cross compilers Linux as the target platform Obtained the source code to gcc, one can just follow the instructions given in the INSTALL file for GCC. configure --target=i486-linux --host=xxx on
More informationExecutables and Linking. CS449 Spring 2016
Executables and Linking CS449 Spring 2016 Remember External Linkage Scope? #include int global = 0; void foo(); int main() { foo(); printf( global=%d\n, global); return 0; } extern int
More informationExercise 1: Basic Tools
Exercise 1: Basic Tools This exercise is created so everybody can learn the basic tools we will use during this course. It is really more like a tutorial than an exercise and, you are not required to submit
More informationLaboratory 1 Semester 1 11/12
CS2106 National University of Singapore School of Computing Laboratory 1 Semester 1 11/12 MATRICULATION NUMBER: In this lab exercise, you will get familiarize with some basic UNIX commands, editing and
More informationLast Week: ! Efficiency read/write. ! The File. ! File pointer. ! File control/access. This Week: ! How to program with directories
Overview Unix System Programming Directories and File System Last Week:! Efficiency read/write! The File! File pointer! File control/access This Week:! How to program with directories! Brief introduction
More informationCS360 Midterm 2 Spring, 2016 James S. Plank March 10, 2016
CS360 Midterm 2 Spring, 2016 James S. Plank March 10, 2016 In all of these questions, please assume the following: Pointers and longs are 4 bytes. The machine is little endian, but that doesn't matter
More informationCMSC 216 Introduction to Computer Systems Lecture 23 Libraries
CMSC 216 Introduction to Computer Systems Lecture 23 Libraries Administrivia Read Sections 2.2-2.4 of Bryant and O Hallaron on data representation Make sure you copy your projects (for future reference)
More informationData Management, Spring 2015: Project #1
Advice The assignment description is long, and it is important that you follow the instructions carefully. Be sure to read the entire description before you start implementing. Note that we will be testing
More informationUniversity of Colorado at Colorado Springs CS4500/ Fall 2018 Operating Systems Project 1 - System Calls and Processes
University of Colorado at Colorado Springs CS4500/5500 - Fall 2018 Operating Systems Project 1 - System Calls and Processes Instructor: Yanyan Zhuang Total Points: 100 Out: 8/29/2018 Due: 11:59 pm, Friday,
More informationProgramming Assignment Multi-Threading and Debugging 2
Programming Assignment Multi-Threading and Debugging 2 Due Date: Friday, June 1 @ 11:59 pm PAMT2 Assignment Overview The purpose of this mini-assignment is to continue your introduction to parallel programming
More informationThe UNIX File System. File Systems and Directories UNIX inodes Accessing directories Understanding links in directories.
The UNIX File System File Systems and Directories UNIX s Accessing directories Understanding links in directories Reading: R&R, Ch 5 Directories Large amounts of data: Partition and structure for easier
More informationLab 1: Dynamic Memory: Heap Manager
Lab 1: Dynamic Memory: Heap Manager Introduction to Systems, Duke University 1 Introduction For this lab you implement a basic heap manager. The standard C runtime library provides a standard heap manager
More informationExercise Session 7 Computer Architecture and Systems Programming
Systems Group Department of Computer Science ETH Zürich Exercise Session 7 Computer Architecture and Systems Programming Herbstsemester 2014 Review of last week s excersice structs / arrays in Assembler
More informationEKT332 COMPUTER NETWORK
EKT332 COMPUTER NETWORK LAB 1 INTRODUCTION TO GNU/LINUX OS Lab #1 : Introduction to GNU/Linux OS Objectives 1. Introduction to Linux File System (Red Hat Distribution). 2. Introduction to various packages
More informationProject 2: Shell with History1
Project 2: Shell with History1 See course webpage for due date. Submit deliverables to CourSys: https://courses.cs.sfu.ca/ Late penalty is 10% per calendar day (each 0 to 24 hour period past due). Maximum
More informationProgramming Standards: You must conform to good programming/documentation standards. Some specifics:
CS3114 (Spring 2011) PROGRAMMING ASSIGNMENT #3 Due Thursday, April 7 @ 11:00 PM for 100 points Early bonus date: Wednesday, April 6 @ 11:00 PM for a 10 point bonus Initial Schedule due Thursday, March
More informationOregon State University School of Electrical Engineering and Computer Science. CS 261 Recitation 1. Spring 2011
Oregon State University School of Electrical Engineering and Computer Science CS 261 Recitation 1 Spring 2011 Outline Using Secure Shell Clients GCC Some Examples Intro to C * * Windows File transfer client:
More informationCOS 318: Operating Systems
COS 318: Operating Systems Overview Kai Li Computer Science Department Princeton University (http://www.cs.princeton.edu/courses/cos318/) Important Times Lectures 9/20 Lecture is here Other lectures in
More information1. What statistic did the wc -l command show? (do man wc to get the answer) A. The number of bytes B. The number of lines C. The number of words
More Linux Commands 1 wc The Linux command for acquiring size statistics on a file is wc. This command provides the line count, word count and number of bytes in a file. Open up a terminal, make sure you
More informationProject #1: Tracing, System Calls, and Processes
Project #1: Tracing, System Calls, and Processes Objectives In this project, you will learn about system calls, process control and several different techniques for tracing and instrumenting process behaviors.
More informationENERGY 211 / CME 211. Evolution
ENERGY 211 / CME 211 Lecture 2 September 24, 2008 1 Evolution In the beginning, we all used assembly That was too tedious, so a very crude compiler for FORTRAN was built FORTRAN was still too painful to
More informationCSCE 313 Introduction to Computer Systems
CSCE 313 Introduction to Computer Systems Instructor: Dr. Guofei Gu http://courses.cse.tamu.edu/guofei/csce313 The UNIX File System File Systems and Directories Accessing directories UNIX s Understanding
More informationShell Project Part 1 (140 points)
CS 453: Operating Systems Project 1 Shell Project Part 1 (140 points) 1 Setup All the programming assignments for Linux will be graded on the onyx cluster(onyx.boisestate.edu). Please test your programs
More informationGenerating Programs and Linking. Professor Rick Han Department of Computer Science University of Colorado at Boulder
Generating Programs and Linking Professor Rick Han Department of Computer Science University of Colorado at Boulder CSCI 3753 Announcements Moodle - posted last Thursday s lecture Programming shell assignment
More informationSmartHeap for Multi-Core
SmartHeap for Multi-Core Getting Started and Platform Guide for Linux Version 11.2 SmartHeap and HeapAgent are trademarks of Compuware Corporation. All other trademarks are the property of their respective
More informationProject 2: Buffer Manager
Project 2: Buffer Manager Due on 10/25/17 INTRODUCTION The goal of the BadgerDB projects is to allow students in CS 564 to learn about the internals of a data processing engine. In this assignment, you
More informationCS 564, Spring 2017 BadgerDB Assignment #1: Buffer Manager
CS 564, Spring 2017 BadgerDB Assignment #1: Buffer Manager Due Date: Feb 17, 2017 by 2:00PM. No late days. Note 2/17 is also the quiz date. Please plan ahead! Project Grade Weight: 10% of the total grade
More informationClass Information ANNOUCEMENTS
Class Information ANNOUCEMENTS Third homework due TODAY at 11:59pm. Extension? First project has been posted, due Monday October 23, 11:59pm. Midterm exam: Friday, October 27, in class. Don t forget to
More informationCSCE 212H, Spring 2008, Matthews Lab Assignment 1: Representation of Integers Assigned: January 17 Due: January 22
CSCE 212H, Spring 2008, Matthews Lab Assignment 1: Representation of Integers Assigned: January 17 Due: January 22 Manton Matthews January 29, 2008 1 Overview The purpose of this assignment is to become
More informationRe-entrant code and Libraries
Re-entrant code and Libraries A library is a collection of code that implements commonly used methods or patterns with a public API. Libraries facilitate code reuse. Libraries can be shared (also known
More information15-213/18-213/15-513, Spring 2018 C Programming Lab: Assessing Your C Programming Skills
15-213/18-213/15-513, Spring 2018 C Programming Lab: Assessing Your C Programming Skills 1 Logistics Assigned: Tues., Jan. 16, 2018 Due: Sun., Jan. 21, 11:59 pm Last possible hand in: Sun., Jan. 21, 11:59
More informationDepartment of Computer Science University of Pretoria. Introduction to Computer Science COS 151
Department of Computer Science University of Pretoria Introduction to Computer Science COS 151 Practical 1 16 February 2018 1 Plagiarism Policy The Department of Computer Science considers plagiarism as
More informationCS356: Discussion #1 Development Environment. Marco Paolieri
CS356: Discussion #1 Development Environment Marco Paolieri (paolieri@usc.edu) Contact Information Marco Paolieri PhD at the University of Florence, Italy (2015) Postdoc at USC since 2016 Email: paolieri@usc.edu
More informationINF322 Operating Systems
Galatasaray University Computer Engineering Department INF322 Operating Systems TP01: Introduction to Linux Ozan Çağlayan ocaglayan@gsu.edu.tr ozancaglayan.com Fundamental Concepts Definition of Operating
More informationCS 33. Libraries. CS33 Intro to Computer Systems XXIX 1 Copyright 2017 Thomas W. Doeppner. All rights reserved.
CS 33 Libraries CS33 Intro to Computer Systems XXIX 1 Copyright 2017 Thomas W. Doeppner. All rights reserved. Libraries Collections of useful stuff Allow you to: incorporate items into your program substitute
More informationCS 470 Operating Systems Spring 2013 Shell Project
CS 470 Operating Systems Spring 2013 Shell Project 40 points Out: January 11, 2013 Due: January 25, 2012 (Friday) The purpose of this project is provide experience with process manipulation and signal
More informationCIS 2107 Computer Systems and Low-Level Programming Fall 2011 Midterm
Fall 2011 Name: Page Points Score 1 5 2 10 3 10 4 7 5 8 6 15 7 4 8 7 9 16 10 18 Total: 100 Instructions The exam is closed book, closed notes. You may not use a calculator, cell phone, etc. For each of
More informationLab 1 Introduction to UNIX and C
Name: Lab 1 Introduction to UNIX and C This first lab is meant to be an introduction to computer environments we will be using this term. You must have a Pitt username to complete this lab. The doc is
More informationCS 314 Principles of Programming Languages. Lecture 11
CS 314 Principles of Programming Languages Lecture 11 Zheng Zhang Department of Computer Science Rutgers University Wednesday 12 th October, 2016 Zheng Zhang 1 eddy.zhengzhang@cs.rutgers.edu Class Information
More informationProgramming Project 1: Introduction to the BLITZ Tools
Programming Project 1: Introduction to the BLITZ Tools Due Date: 2nd October 2017 before 11:30 AM. Duration: One Week Overview and Goal In this course you will be creating an operating system kernel. You
More informationCSE 303 Lecture 2. Introduction to bash shell. read Linux Pocket Guide pp , 58-59, 60, 65-70, 71-72, 77-80
CSE 303 Lecture 2 Introduction to bash shell read Linux Pocket Guide pp. 37-46, 58-59, 60, 65-70, 71-72, 77-80 slides created by Marty Stepp http://www.cs.washington.edu/303/ 1 Unix file system structure
More informationCS 33. Libraries. CS33 Intro to Computer Systems XXVIII 1 Copyright 2018 Thomas W. Doeppner. All rights reserved.
CS 33 Libraries CS33 Intro to Computer Systems XXVIII 1 Copyright 2018 Thomas W. Doeppner. All rights reserved. Libraries Collections of useful stuff Allow you to: incorporate items into your program substitute
More informationIntroduction to Linux
Introduction to Linux Prof. Jin-Soo Kim( jinsookim@skku.edu) TA - Dong-Yun Lee (dylee@csl.skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu What is Linux? A Unix-like operating
More informationRVDS 4.0 Introductory Tutorial
RVDS 4.0 Introductory Tutorial 402v02 RVDS 4.0 Introductory Tutorial 1 Introduction Aim This tutorial provides you with a basic introduction to the tools provided with the RealView Development Suite version
More informationShared Libraries: The Dynamic Linker
Building and Using Shared Libraries on Linux Shared Libraries: The Dynamic Linker Michael Kerrisk, man7.org c 2017 mtk@man7.org November 2017 Outline 3 Operation of the Dynamic Linker 3-1 3.1 Rpath: specifying
More information82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide
82V391x / 8V893xx WAN PLL Device Families Device Driver Version 1.2 April 29, 2014 Table of Contents 1. Introduction... 1 2. Software Architecture... 2 2.1. Overview... 2 2.2. Hardware Abstraction Layer
More informationIntroduction to OpenMP
1 / 7 Introduction to OpenMP: Exercises and Handout Introduction to OpenMP Christian Terboven Center for Computing and Communication, RWTH Aachen University Seffenter Weg 23, 52074 Aachen, Germany Abstract
More informationJTSK Programming in C II C-Lab II. Lecture 3 & 4
JTSK-320112 Programming in C II C-Lab II Lecture 3 & 4 Xu (Owen) He Spring 2018 Slides modified from Dr. Kinga Lipskoch Planned Syllabus The C Preprocessor Bit Operations Pointers and Arrays (Dynamically
More informationC Tutorial: Part 1. Dr. Charalampos C. Tsimenidis. Newcastle University School of Electrical and Electronic Engineering.
C Tutorial: Part 1 Dr. Charalampos C. Tsimenidis Newcastle University School of Electrical and Electronic Engineering September 2013 Why C? Small (32 keywords) Stable Existing code base Fast Low-level
More informationWorking with Basic Linux. Daniel Balagué
Working with Basic Linux Daniel Balagué How Linux Works? Everything in Linux is either a file or a process. A process is an executing program identified with a PID number. It runs in short or long duration
More informationUnix as a Platform Exercises. Course Code: OS-01-UNXPLAT
Unix as a Platform Exercises Course Code: OS-01-UNXPLAT Working with Unix 1. Use the on-line manual page to determine the option for cat, which causes nonprintable characters to be displayed. Run the command
More informationFILE SYSTEMS. Tanzir Ahmed CSCE 313 Fall 2018
FILE SYSTEMS Tanzir Ahmed CSCE 313 Fall 2018 References Previous offerings of the same course by Prof Tyagi and Bettati Textbook: Operating System Principles and Practice 2 The UNIX File System File Systems
More informationYou should see something like this, called the prompt :
CSE 1030 Lab 1 Basic Use of the Command Line PLEASE NOTE this lab will not be graded and does not count towards your final grade. However, all of these techniques are considered testable in a labtest.
More informationCSE 333 SECTION 3. POSIX I/O Functions
CSE 333 SECTION 3 POSIX I/O Functions Administrivia Questions (?) HW1 Due Tonight Exercise 7 due Monday (out later today) POSIX Portable Operating System Interface Family of standards specified by the
More informationCS 261 Recitation 1 Compiling C on UNIX
Oregon State University School of Electrical Engineering and Computer Science CS 261 Recitation 1 Compiling C on UNIX Winter 2017 Outline Secure Shell Basic UNIX commands Editing text The GNU Compiler
More informationLab 5: SDC Virtual Machine
Lab 5: SDC Virtual Machine Due Date: Thursday 3/9/2017 11:59PM This lab covers the material in lectures 10-12. You will be creating a virtual (software-based) implementation of a basic, decimal-based Von
More informationGeneric Programming in C
Generic Programming in C Void * This is where the real fun starts There is too much coding everywhere else! 1 Using void * and function pointers to write generic code Using libraries to reuse code without
More informationCIS 2107 Computer Systems and Low-Level Programming Fall 2011 Midterm Solutions
Fall 2011 Name: Page Points Score 1 7 2 10 3 8 4 13 6 17 7 4 8 16 9 15 10 10 Total: 100 Instructions The exam is closed book, closed notes. You may not use a calculator, cell phone, etc. For each of the
More informationCSE 333 SECTION 3. POSIX I/O Functions
CSE 333 SECTION 3 POSIX I/O Functions Administrivia Questions (?) HW1 Due Tonight HW2 Due Thursday, July 19 th Midterm on Monday, July 23 th 10:50-11:50 in TBD (And regular exercises in between) POSIX
More informationIntroduction. Overview and Getting Started. CS 161 Computer Security Lab 1 Buffer Overflows v.01 Due Date: September 17, 2012 by 11:59pm
Dawn Song Fall 2012 CS 161 Computer Security Lab 1 Buffer Overflows v.01 Due Date: September 17, 2012 by 11:59pm Introduction In this lab, you will get a hands-on approach to circumventing user permissions
More informationCS2141 Software Development using C/C++ Libraries
CS2141 Software Development using C/C++ Compilation and linking /* p1.c */ int x; int z; main() { x=0; z=0; printf("f(3)=%d x=%d z=%d\n",f(3),x,z); } Code for int f(int) not available yet, nor printf()
More informationCS240: Programming in C
CS240: Programming in C Lecture 15: Unix interface: low-level interface Cristina Nita-Rotaru Lecture 15/Fall 2013 1 Streams Recap Higher-level interface, layered on top of the primitive file descriptor
More informationOverview. Unix System Programming. Outline. Directory Implementation. Directory Implementation. Directory Structure. Directories & Continuation
Overview Unix System Programming Directories & Continuation Maria Hybinette, UGA 1 Last Week: Efficiency read/write The File File pointer File control/access Permissions, Meta Data, Ownership, umask, holes
More informationExecutables and Linking. CS449 Fall 2017
Executables and Linking CS449 Fall 2017 Remember External Linkage Scope? #include int global = 0; void foo(); int main() { } foo(); printf( global=%d\n, global); return 0; extern int
More informationEXPERIMENT 1. FAMILIARITY WITH DEBUG, x86 REGISTERS and MACHINE INSTRUCTIONS
EXPERIMENT 1 FAMILIARITY WITH DEBUG, x86 REGISTERS and MACHINE INSTRUCTIONS Pre-lab: This lab introduces you to a software tool known as DEBUG. Before the lab session, read the first two sections of chapter
More information15-213/18-213/15-513, Fall 2017 C Programming Lab: Assessing Your C Programming Skills
15-213/18-213/15-513, Fall 2017 C Programming Lab: Assessing Your C Programming Skills 1 Logistics Assigned: Tues., Aug. 29, 2017 Due: Thurs., Sept. 7, 11:59 pm Last possible hand in: Tues., Sept. 7, 11:59
More informationFinal Project: LC-3 Simulator
Final Project: LC-3 Simulator Due Date: Friday 4/27/2018 11:59PM; No late handins This is the final project for this course. It is a simulator for LC-3 computer from the Patt and Patel book. As you work
More informationLaboratory Assignment #3. Extending scull, a char pseudo-device. Summary: Objectives: Tasks:
Laboratory Assignment #3 Extending scull, a char pseudo-device Value: (See the Grading section of the Syllabus.) Due Date and Time: (See the Course Calendar.) Summary: This is your first exercise that
More informationCSC BioWeek 2018: Using Taito cluster for high throughput data analysis
CSC BioWeek 2018: Using Taito cluster for high throughput data analysis 7. 2. 2018 Running Jobs in CSC Servers Exercise 1: Running a simple batch job in Taito We will run a small alignment using BWA: https://research.csc.fi/-/bwa
More informationExploring the file system. Johan Montelius HT2016
1 Introduction Exploring the file system Johan Montelius HT2016 This is a quite easy exercise but you will learn a lot about how files are represented. We will not look to the actual content of the files
More informationSystems Programming and Computer Architecture ( ) Exercise Session 01 Data Lab
Systems Programming and Computer Architecture (252-0061-00) Exercise Session 01 Data Lab 1 Goal Get familiar with bit level representations, C and Linux Thursday, September 22, 2016 Systems Programming
More informationCSC BioWeek 2016: Using Taito cluster for high throughput data analysis
CSC BioWeek 2016: Using Taito cluster for high throughput data analysis 4. 2. 2016 Running Jobs in CSC Servers A note on typography: Some command lines are too long to fit a line in printed form. These
More informationCS240: Programming in C
CS240: Programming in C Lecture 2: Hello World! Cristina Nita-Rotaru Lecture 2/ Fall 2013 1 Introducing C High-level programming language Developed between 1969 and 1973 by Dennis Ritchie at the Bell Labs
More informationCS 0449 Project 4: /dev/rps Due: Friday, December 8, 2017, at 11:59pm
CS 0449 Project 4: /dev/rps Due: Friday, December 8, 2017, at 11:59pm Project Description Standard UNIX and Linux systems come with a few special files like /dev/zero, which returns nothing but zeros when
More informationMaking things work as expected
Making things work as expected System Programming Lab Maksym Planeta Björn Döbel 20.09.2018 Table of Contents Introduction Hands-on Tracing made easy Dynamic intervention Compiler-based helpers The GNU
More informationCS 161 Computer Security
Paxson Spring 2011 CS 161 Computer Security Homework 1 Due: Wednesday, February 9, at 9:59pm Instructions. Submit your solution by Wednesday, February 9, at 9:59pm, in the drop box labelled CS161 in 283
More informationChris Riesbeck, Fall Introduction to Computer Systems
Chris Riesbeck, Fall 2011 Introduction to Computer Systems Welcome to Intro. to Computer Systems Everything you need to know http://www.cs.northwestern.edu/academics/courses/213/ Instructor: Chris Riesbeck
More information2 Compiling a C program
2 Compiling a C program This chapter describes how to compile C programs using gcc. Programs can be compiled from a single source file or from multiple source files, and may use system libraries and header
More informationCOSC 6374 Parallel Computation. Debugging MPI applications. Edgar Gabriel. Spring 2008
COSC 6374 Parallel Computation Debugging MPI applications Spring 2008 How to use a cluster A cluster usually consists of a front-end node and compute nodes Name of the front-end node: shark.cs.uh.edu You
More informationCS11002 Programming and Data Structures Spring Introduction
Title page CS11002 Programming and Data Structures Spring 2008 Goutam Biswas Abhijit Das Dipankar Sarkar Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Jan 04, 2008
More informationRecall: So What About a Real File System? Meet the inode: Recall: Unix File System (2/2) Recall: Unix File System (1/2)
CS162 Operating Systems and Systems Programming Lecture 19 Recall: So What About a Real File System? Meet the inode: Inode Array Inode Triple Double Data File Systems (Con t), MMAP file_number File Metadata
More informationPrograms. Function main. C Refresher. CSCI 4061 Introduction to Operating Systems
Programs CSCI 4061 Introduction to Operating Systems C Program Structure Libraries and header files Compiling and building programs Executing and debugging Instructor: Abhishek Chandra Assume familiarity
More information27-Sep CSCI 2132 Software Development Lab 4: Exploring bash and C Compilation. Faculty of Computer Science, Dalhousie University
Lecture 4 p.1 Faculty of Computer Science, Dalhousie University CSCI 2132 Software Development Lab 4: Exploring bash and C Compilation 27-Sep-2017 Location: Goldberg CS Building Time: Wednesday, 16:05
More informationCS : Computer Programming, Spring 2000 Programming Project #1: Thinking of a Number Due in class Thursday 27 January 2000
CS 1313 010: Computer Programming, Spring 2000 Programming Project #1: Thinking of a Number Due in class Thursday 27 January 2000 For online help check the class website http://www.ecn.ou.edu/cs1313010/
More informationOutline. File Systems. File System Structure. CSCI 4061 Introduction to Operating Systems
Outline CSCI 4061 Introduction to Operating Systems Instructor: Abhishek Chandra File Systems Directories File and directory operations Inodes and metadata Links 2 File Systems An organized collection
More informationCIS* Programming
CIS*1300 - Programming CALENDAR DESCRIPTION This course examines the applied and conceptual aspects of programming. Topics may include data and control structures, program design, problem solving and algorithm
More informationUsing Tcl. Learning Objectives
Using Tcl Learning Objectives Using the transcript program, you will translate a given specification (in DC-Shell format) into PrimeTime Tcl format. After completing this lab, you should be able to: Write
More informationIntroduction to Computer Systems
Introduction to Computer Systems Today: Welcome to EECS 213 Lecture topics and assignments Next time: Bits & bytes and some Boolean algebra Fabián E. Bustamante, Spring 2010 Welcome to Intro. to Computer
More informationThe Unix Shell & Shell Scripts
The Unix Shell & Shell Scripts You should do steps 1 to 7 before going to the lab. Use the Linux system you installed in the previous lab. In the lab do step 8, the TA may give you additional exercises
More informationIntermediate Programming, Spring Misha Kazhdan
600.120 Intermediate Programming, Spring 2017 Misha Kazhdan Outline Unix/Linux command line Basics of the Emacs editor Compiling and running a simple C program Cloning a repository Connecting to ugrad
More informationIntroduction to Computer Systems
Introduction to Computer Systems Today:! Welcome to EECS 213! Lecture topics and assignments Next time:! Bits & bytes! and some Boolean algebra Fabián E. Bustamante, 2007 Welcome to Intro. to Computer
More informationCSC UNIX System, Spring 2015
` CSC 352 - UNIX System, Spring 2015 Assignment 2, due by 11:59 on Friday March 6 via gmake turnitin. Dr. Dale E. Parson, http://faculty.kutztown.edu/parson The directory, source-file and makefile contents
More information