Unix and C Program Development SEEM

Size: px
Start display at page:

Download "Unix and C Program Development SEEM"

Transcription

1 Unix and C Program Development SEEM

2 Operating Systems A computer system cannot function without an operating system (OS). There are many different operating systems available for PCs, minicomputers, and mainframes. The most common ones being Windows and variations of UNIX (e.g. Linux) UNIX is available for many different hardware platforms Most other operating systems are tied to a specific hardware family. This is one of the first good things about UNIX. SEEM

3 Unix Overview UNIX allows more than one user to use the computer system at a time a desirable feature for business systems. Power and Flexibility Small number of basic elements that can be combined in an infinite variety of ways to suit the application Consistency in commands: ls A* means list files beginning with A rm A* means remove files beginning with A Majority of users are engaged in software development SEEM

4 Unix and Linux Late 1980s two version of UNIX 4.3BSD System V Release 3 Standardizing effort POSIX (Portable Operating System) POSIX committee produced standard by taking the intersection of System V and BSD Set of library procedures open, read, fork, Linux Unix clone originally running on PC Recent Version of Linux has features of a modern UNIX OS Unix and Linux have been adopted in industrialstrength business applications SEEM

5 Unix and Shell MAC and Windows - Graphical User Interface UNIX command line interface, called shell UNIX Graphical environment X Windows SEEM

6 Logging In To use a UNIX system, you first log in with a username a unique name that distinguishes you from the other users of the system. UNIX first asks you for your username by prompting you with the line login: and then asks for your password. Depending on how your system is set up, you should then see either a $ or a > prompt. UNIX is case sensitive, so make sure that the case of the letters is matched exactly. UNIX(r) System V Release 4.0 login: glass Password: what I typed here is secret and doesn t show Last login: Sun Feb 15 18:33:26 from dialin cuse93:> SEEM

7 Shells The > prompt that you see when you first log into UNIX is displayed by the shell Shell is a program that acts as a middleman between you and the raw UNIX operating system. A shell lets you run programs, builds pipelines of processes, saves output to files, and runs more than one program at the same time. SEEM

8 Running A Utility To run a utility, simply enter its name and press the Enter key One sample utility is date which displays the current date and time cuse93:> date... run the date utility Thu Mar 12 10:41:50 MST 1998 cuse93:> SEEM

9 Unix Utility Programs Large number of utility programs Divided into six categories File and directory manipulation commands Example: cp a b ls *.* Filters Example: grep (extracts lines containing patterns), cut, paste, Program development tools such as editors/compilers Example: cc (C compiler), make (maintain large programs whose source code consists of multiple files) Text editing and processing Example: pico, emacs, vim, vi System administration Example: mount (mount file system) Miscellaneous Example: kill 1325 (kill a process), chmod (change privileges of a file) SEEM

10 Unix Utility Programs SEEM

11 Logging Out To leave the UNIX system, type the keyboard sequence Control-D at your shell prompt. This tells your login shell that there is no more input for it to process, causing it to disconnect you from the UNIX system. Most systems then display a prompt and wait for another user to log in. Here s an example: cuse93:> ^D... I m done! UNIX(r) System V Release 4.0 login: wait for another user to log in. Note: The shell can be set to ignore ^D for logout, since you might type it by accident. In this case, you in, type the logout command instead. SEEM

12 Directory and File A hard disk in Unix is typically shared by different users Directory similar to folder in Windows The root directory is specified by a symbol / Under a directory Store files Contains sub-directories SEEM

13 Directories The directories are organized in a hierarchical structure (similar to Windows) / usr sac lec file1 glass file2 wlam SEEM

14 Pathname Pathname - A sequence of directory names that leads you through the hierarchy from a starting directory (e.g. root / ) to a target (directory or file) Some sample pathnames /sac/file1 a file /sac/lec a directory /sac/lec/file2 a file SEEM

15 Home Directory When you first login, you are automatically located at a certain location of a hard disk called home directory Every user has a different home directory The home directory is set by the system administrator For example, after login, the user is located at /sac/lec/glass UNIX(r) System V Release 4.0 login: glass Password: what I typed here is secret and doesn t show Last login: Sun Feb 15 18:33:26 from dialin cuse93:/sac/lec/glass> SEEM

16 Unix - Making A Directory : mkdir We can use the mkdir utility to create a new directory. An example of the mkdir utility: Utility: mkdir newdirectoryname cuse93:> mkdir reverse... create a directory called reverse cuse93:> SEEM

17 Unix - Moving To A Directory : cd In general, it s a good idea to move your shell into a directory if you intend to do a lot of work there. To do this, use the cd command. cuse93:> cd reverse go to the reverse directory cd isn t actually a UNIX utility, but instead is an example of a shell built-in command. Your shell recognizes cd as a special keyword and executes it directly. Shell Command: cd [directoryname] The cd (change directory) shell command changes a shell s current working directory to directoryname. If the directoryname argument is omitted, the shell is moved to its owner s home directory. SEEM

18 Editing Programs: Using an Editor pico Editor General Command Write editor contents to a file [Ctrl] o Save the file and exit pico [Ctrl] x Spell Check [Ctrl] t Justify the text [Ctrl] j Moving around in your file Move one character to the right [Ctrl] f or right arrow key Move one character to the left [Ctrl] b or left arrow key Move up one line [Ctrl] p or up arrow key Move down one line [Ctrl] n or down arrow key Other editors such as emacs and vim can be used SEEM

19 Unix - Listing The Contents Of A Directory: ls We can use the ls utility to list the name and other information about a file or a directory. Suppose that we have used an editor to edit the program reverse.c cuse93:> ls list all files in current directory reverse.c cuse93:> ls -l reverse.c long listing of reverse.c -rw-r--r-- 1 glass 106 Jan 30 19:46 reverse.c The -l is an option for the ls utility SEEM

20 Unix - Listing A File: cat We can use the cat utility to display the content of a text file. cuse93:> cat reverse.c display the contents of the reverse.c /* reverse.c */ #include <stdio.h> /* Function prototype */ void reverse (char* before, char* after); /*******************************************/ int main() { char str[100]; /* buffer to hold reversed string */ reverse("cat",str); /* reverse the string "cat" */ printf ("reverse("cat") = %s\n", str); : : SEEM

21 Unix - Listing A File: more cat is good for listing small files, but doesn t pause between full screens of output. The more utility is better suited for larger files and contains advanced facilities such as the ability to scroll backward through a file. cuse93:> more reverse.c display the contents of the reverse.c /* reverse.c */ #include <stdio.h> /* Function prototype */ void reverse (char* before, char* after); /*******************************************/ int main() : : SEEM

22 Computer System C Compiler Assembler seg3460 Introduction 22

23 Computer System Each type of CPU executes only a particular machine language A program must be translated into machine language before it can be executed A compiler is a software tool which translates source code into a specific target language Often, that target language is the machine language for a particular CPU type SEEM

24 Program Development The mechanics of developing a program include several activities writing the program in a specific programming language (such as C and Java) translating the program into a form that the computer can execute investigating and fixing various types of errors that can occur Software tools can be used to help with all parts of this process SEEM

25 Basic Program Development Edit and save program errors errors Compile program Execute program and evaluate results SEEM

26 Single-module Programs Let s examine a C program that performs a simple task: reversing a string. We will learn how to write, compile, link, and execute a program that solves the problem using a single source file. It s better to split the program up into several independent modules. (will be explained later) A source code listing of the first version of the reverse program is next presented. SEEM

27 1 /* reverse.c */ 2 #include <stdio.h> 3 4 /* Function prototype */ 5 void reverse (char* before, char* after); 6 7 /*******************************************/ 8 int main() 9 { 10 char str[100]; /* buffer to hold reversed string */ 11 reverse("cat",str); /* reverse the string "cat" */ 12 printf ("reverse("cat") = %s\n", str); 13 reverse("noon",str); 14 printf ("reverse("noon") = %s\n", str); 15 } /*******************************************/ 18 void reverse (char* before, char* after) 19 { 20 int i,j,len; len = strlen(before); 23 i=0; 24 for (j=len-1; j>=0; j--) 25 { 26 after[i] = before[j]; 27 i++; 28 } 29 after[len] = NULL; 30 } SEEM

28 C String - Revision In C, a string is represented as an array of characters For example: noon is represented as: n o o n NULL (special char) X (garbage) SEEM

29 C Program Development First we need to type the program source code into a file called source file (or source program file). Suppose that we call this file reverse.c The format of the source file should be a text file since it contains text characters A text file in Unix can be created using an Unix editor such as emacs, pico, vim. Suppose that we first create a directory (folder) called reverse under my home directory to prepare the development of the program. SEEM

30 C Compilers Until recently, a C compiler was a standard component in UNIX, especially UNIX versions that came with source code. Depending on your needs, you should check on this in any version of UNIX you are considering using. Even if your version of UNIX no longer ships a C compiler, you have an alternative, thanks to the GNU Project: GNU C (gcc) and GNU C++ (g++) are freely available C and C++ compilers, respectively GNU Compiler Collection web site, SEEM

31 Compiling a C program Compile the C program with the gcc utility. By default, gcc creates an executable file called a.out in the current directory. The format of executable file is called binary file which contains binary bits. Therefore, we cannot use the Unix utilities cat or more to display the content on the screen. To run the program, type./a.out. Any errors that are encountered are sent to the standard error channel, which is connected by default to your terminal s screen. SEEM

32 Compiling a C program (con t) Here s what happened when I compiled my program: cuse93:> mkdir reverse create subdirectory for source code cuse93:> cd reverse cuse93:> pico reverse.c... create the file reverse.c using pico cuse93:> gcc reverse.c... compile source. reverse.c: In function main : reverse.c:12: parse error before cat reverse.c:14: parse error before noon cuse93:> As you can see, gcc found a number of compile-time errors, listed together with their causes as follows: The errors on lines 12 and 14 were due to an inappropriate use of double quotes within double quotes. SEEM

33 Compiling a C program (con t) If there are so many compilation errors that it cannot fit into one screen. One way is to compile by the following command: gcc reverse.c & more which means that the compilation errors will be displayed screen by screen. It will display the first screen of errors and wait. After the user examines the errors, he/she can choose to display the next screen of errors by hitting RETURN or quit by hitting Control-C. The corrected version of the reverse program is given in the next page. SEEM

34 1 /* reverse.c */ 2 #include <stdio.h> 3 4 /* Function prototype */ 5 void reverse (char* before, char* after); 6 7 /*******************************************/ 8 int main() 9 { 10 char str[100]; /* buffer to hold reversed string */ 11 reverse("cat",str); /* reverse the string "cat" */ 12 printf ("reverse(\"cat\") = %s\n", str); 13 reverse("noon",str); 14 printf ("reverse(\"noon\") = %s\n", str); 15 } /*******************************************/ 18 void reverse (char* before, char* after) 19 { 20 int i,j,len; len = strlen(before); 23 i=0; 24 for (j=len-1; j>=0; j--) 25 { 26 after[i] = before[j]; 27 i++; 28 } 29 after[len] = NULL; 30 } SEEM

35 Compiling a C program (con t) If there are many compilation errors, it is a good strategy to debug the first few errors since some remaining compilation errors may not be actual errors. They exist due to the limitations of the compiler. Hence, fixing earlier errors will usually result in fewer errors encountered in the debugging process. e.g. a semicolon is mistakenly added after the function heading line of reverse would produce a lot of compilation errors. SEEM

36 Compiling a C program (con t) Running a C Program After compiling the second version of reverse.c, I ran it by typing the name of the executable file, a.out. As you can see, the answers were correct: cuse93:> gcc reverse.c compile source. cuse93:> ls l reverse.c a.out list file information. -rwxr-xr-x 1 glass Jan5 16:16 a.out* -rw----r-- 1 glass 439 Jan 5 16:15 reverse.c cuse93:>./a.out run program reverse ( cat ) = tac reverse ( noon ) = noon cuse93:> SEEM

37 Compiling a C program (con t) Overriding the Default Executable Name The name of the default executable file, a.out, is rather cryptic, and an a.out file produced by a subsequent compilation would overwrite the one that I just produced. To avoid both problems, it s best to use the -o option with gcc, which allows you to specify the name of the executable file that you wish to create: cuse93:> gcc -o reverse reverse.c name the executable reverse cuse93:> ls -l reverse -rwxr-xr-x 1 glass Jan 5 16:19 reverse* cuse93:>./reverse run the executable reverse reverse ( cat ) = tac reverse ( noon ) = noon cuse93:> SEEM

38 Summary of gcc utility gcc reverse.c source file: reverse.c compilation via gcc executable file: a.out gcc o reverse reverse.c source file: reverse.c compilation via gcc executable file: reverse 38

39 Syntax and Semantics The syntax rules of a language define how we can put together symbols, reserved words, and identifiers to make a valid program The semantics of a program statement define what that statement means (its purpose or role in a program) A program that is syntactically correct is not necessarily logically (semantically) correct A program will always do what we tell it to do, not only what we intend to tell it to do 39

40 Program Errors A program can have three types of errors The compiler will find syntax errors and other basic problems (compile-time errors) If compile-time errors exist, an executable version of the program is not created A problem can occur during program execution, such as trying to divide by zero, which causes a program to terminate abnormally (run-time errors) A program may run, but produce incorrect results, perhaps using an incorrect formula (logical errors) 40

41 Program Errors In Unix, many runtime errors and logical errors only provide the following error messages: Segmentation fault Bus error The above messages do not provide good hints for the causes of the error In other words, it is almost not useful to rely on this message for debugging Therefore, debugging techniques or tools are needed Inserting printing statements to display the content of variables Use a debugger utility SEEM

42 Debugging by Inserting printing Statements A good way for debugging is to insert printing statements in the program. The purpose is to print the content of some important variables to see if the execution follows our design. Suppose we inserted the following line after the statement i++ in the reverse function: printf( i=%d j=%d\n,i,j) The execution would look like: cuse93:>./reverse run the executable reverse i = 1 j = 2 i = 2 j = 1 i = 3 j = 0 reverse ( cat ) = tac i = 1 j = 3 : SEEM

43 Debugging by Inserting printing Statements (cont) When the output text to the screen is very long, we can re-direct the output text to a file instead of the screen so that we can examine the content in a more convenient way. To re-direct in Unix the output from the screen to a text file, we can use the character > meaning that the text output is re-directed from the system output (screen) to a specified text file. In the following example, it is re-directed to a text file called debug.txt cuse93:>./reverse > debug.txt run the executable reverse cuse93:> more debug.txt i = 1 j = 2 i = 2 j = 1 i = 3 j = 0 reverse ( cat ) = tac i = 1 j = 3 : SEEM

44 The Unix Debugger : gdb Preparing a Program for Debugging To debug a program, it must have been compiled using the -g option to gcc, which places debugging information into the object module. cuse93:> gcc g o reverse reverse.c The UNIX debugger, gdb, allows you to debug a program symbolically. It includes the following facilities: single stepping breakpoints editing from within the debugger accessing and modifying variables searching for functions tracing SEEM

45 The Unix Debugger : gdb (con t) Utility: gdb executablefilename gdb is a UNIX debugger. The named executable file is loaded into the debugger and a user prompt is displayed. To obtain information on the various gdb commands, enter help at the prompt. Entering the Debugger Once a program has been compiled correctly, you may invoke gdb, with the name of the executable file as the first argument. gdb presents you with a prompt. You enter help at the prompt to see a list of all the gdb commands: cuse93:> gdb reverse (gdb) help SEEM

46 The Unix Debugger : gdb (con t) (gdb) break reverse Breakpoint 1 at 0x1077c: file reverse.c, line 22 (gdb) run Starting program: reverse Breakpoint 1, reverse(before=0x11360 ) at reverse.c:22 22 len = strlen(before) (gdb) display i 1: i=0 (gdb) display j 2: j = (gdb) step 23 i = 0; 2: j = : i = 0 (gdb) step 24 for (j=len-1; j>=0; j--) 2: j = : i = 0 (gdb) step 26 after [i] = before [j] 2: j = 2 1: i = 0 SEEM

47 The Unix Debugger : gdb (con t) (gdb) continue Continuing. reverse( cat ) = tac Breakpoint 1, reverse (before = 0x11380.) at reverse.c:22 22 len = strlen(before); 2: j = -1 1: i = 3 (gdb) step 23 i = 0; 2: j = -1 1: i = 3 (gdb) step 24 for (j=len-1; j>=0; j--) 2: j = -1 1: i = 0 (gdb) continue Continuing. Reverse( noon ) = noon Program exited with code 01 SEEM

C Program Development and Debugging under Unix SEEM 3460

C Program Development and Debugging under Unix SEEM 3460 C Program Development and Debugging under Unix SEEM 3460 1 C Basic Elements SEEM 3460 2 C - Basic Types Type (32 bit) Smallest Value Largest Value short int -32,768(-2 15 ) 32,767(2 15-1) unsigned short

More information

The make Utility in Unix SEEM

The make Utility in Unix SEEM The make Utility in Unix SEEM 3460 1 Recall the reverse Module reverse.h 1 /* reverse.h */ 2 3 void reverse (char *before, char *after); 4 /* Declare but do not define this function */ SEEM 3460 2 Recall

More information

The make Utility in Unix SEEM

The make Utility in Unix SEEM The make Utility in Unix SEEM 3460 1 Recall the reverse Module reverse.h 1 /* reverse.h */ 2 3 void reverse (char before[], char after[]); 4 /* Declare but do not define this function */ SEEM 3460 2 Recall

More information

Laboratory 1 Semester 1 11/12

Laboratory 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 information

Operating Systems, Unix Files and Commands SEEM

Operating Systems, Unix Files and Commands SEEM Operating Systems, Unix Files and Commands SEEM 3460 1 Major Components of Operating Systems (OS) Process management Resource management CPU Memory Device File system Bootstrapping SEEM 3460 2 Programs

More information

Problem Set 1: Unix Commands 1

Problem 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 information

Intermediate Programming, Spring Misha Kazhdan

Intermediate 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 information

Practical Session 0 Introduction to Linux

Practical Session 0 Introduction to Linux School of Computer Science and Software Engineering Clayton Campus, Monash University CSE2303 and CSE2304 Semester I, 2001 Practical Session 0 Introduction to Linux Novell accounts. Every Monash student

More information

We first learn one useful option of gcc. Copy the following C source file to your

We first learn one useful option of gcc. Copy the following C source file to your Lecture 5 p.1 Faculty of Computer Science, Dalhousie University CSCI 2132 Software Development Lab 5: gcc and gdb tools 10-Oct-2018 Location: Teaching Labs Time: Thursday Instructor: Vlado Keselj Lab 5:

More information

CSE 351. GDB Introduction

CSE 351. GDB Introduction CSE 351 GDB Introduction Lab 2 Out either tonight or tomorrow Due April 27 th (you have ~12 days) Reading and understanding x86_64 assembly Debugging and disassembling programs Today: General debugging

More information

Chapter-3. Introduction to Unix: Fundamental Commands

Chapter-3. Introduction to Unix: Fundamental Commands Chapter-3 Introduction to Unix: Fundamental Commands What You Will Learn The fundamental commands of the Unix operating system. Everything told for Unix here is applicable to the Linux operating system

More information

CS Fundamentals of Programming II Fall Very Basic UNIX

CS Fundamentals of Programming II Fall Very Basic UNIX CS 215 - Fundamentals of Programming II Fall 2012 - Very Basic UNIX This handout very briefly describes how to use Unix and how to use the Linux server and client machines in the CS (Project) Lab (KC-265)

More information

Introduction to Linux (Part II) BUPT/QMUL 2018/03/21

Introduction to Linux (Part II) BUPT/QMUL 2018/03/21 Introduction to Linux (Part II) BUPT/QMUL 2018/03/21 Contents 10. vi 11. Other commands 12. Developing tools 2 10. Editor - vi Text editor Insert mode Override mode Use sub-commands Tradition tools and

More information

Unix Internal Assessment-2 solution. Ans:There are two ways of starting a job in the background with the shell s & operator and the nohup command.

Unix Internal Assessment-2 solution. Ans:There are two ways of starting a job in the background with the shell s & operator and the nohup command. Unix Internal Assessment-2 solution 1 a.explain the mechanism of process creation. Ans: There are three distinct phases in the creation of a process and uses three important system calls viz., fork, exec,

More information

Using the Unix system. UNIX Introduction

Using the Unix system. UNIX Introduction Using the Unix system Navigating the Unix file system Editing with emacs Compiling with gcc UNIX Introduction The UNIX operating system is made up of three parts: the kernel, the shell and the programs

More information

Getting started with UNIX/Linux for G51PRG and G51CSA

Getting started with UNIX/Linux for G51PRG and G51CSA Getting started with UNIX/Linux for G51PRG and G51CSA David F. Brailsford Steven R. Bagley 1. Introduction These first exercises are very simple and are primarily to get you used to the systems we shall

More information

CSC111 Computer Science II

CSC111 Computer Science II CSC111 Computer Science II Lab 1 Getting to know Linux Introduction The purpose of this lab is to introduce you to the command line interface in Linux. Getting started In our labs If you are in one of

More information

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform November 8, 2016 1 Introduction The laboratory exercises in this course are to be conducted in an environment that might not be familiar to many of you. It is based on open source software. We use an open

More information

CMPUT 201: Practical Programming Methodology. Guohui Lin Department of Computing Science University of Alberta September 2018

CMPUT 201: Practical Programming Methodology. Guohui Lin Department of Computing Science University of Alberta September 2018 CMPUT 201: Practical Programming Methodology Guohui Lin guohui@ualberta.ca Department of Computing Science University of Alberta September 2018 Lecture 1: Course Outline Agenda: Course calendar description

More information

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and What are the services provided by an OS? What are system calls? What are some common categories of system calls? What are the principles behind OS design and implementation? What are common ways of structuring

More information

Linux Command Line Primer. By: Scott Marshall

Linux Command Line Primer. By: Scott Marshall Linux Command Line Primer By: Scott Marshall Draft: 10/21/2007 Table of Contents Topic Page(s) Preface 1 General Filesystem Background Information 2 General Filesystem Commands 2 Working with Files and

More information

The Unix Shell & Shell Scripts

The 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 information

Linux/Cygwin Practice Computer Architecture

Linux/Cygwin Practice Computer Architecture Linux/Cygwin Practice 2010 Computer Architecture Linux Login Use ssh client applications to connect (Port : 22) SSH Clients zterm ( http://www.brainz.co.kr/products/products4_2.php ) Putty ( http://kldp.net/frs/download.php/3411/hangulputty-0.58.h2.exe

More information

Lecture 1. A. Sahu and S. V. Rao. Indian Institute of Technology Guwahati

Lecture 1. A. Sahu and S. V. Rao. Indian Institute of Technology Guwahati Lecture 1 Introduction to Computing A. Sahu and S. V. Rao Dept of Comp. Sc. & Engg. Indian Institute of Technology Guwahati 1 Outline Computer System Problem Solving and Flow Chart Linux Command ls, mkdir,

More information

Operating Systems. Copyleft 2005, Binnur Kurt

Operating Systems. Copyleft 2005, Binnur Kurt 3 Operating Systems Copyleft 2005, Binnur Kurt Content The concept of an operating system. The internal architecture of an operating system. The architecture of the Linux operating system in more detail.

More information

Introduction to Linux. Fundamentals of Computer Science

Introduction to Linux. Fundamentals of Computer Science Introduction to Linux Fundamentals of Computer Science Outline Operating Systems Linux History Linux Architecture Logging in to Linux Command Format Linux Filesystem Directory and File Commands Wildcard

More information

Operating Systems 3. Operating Systems. Content. What is an Operating System? What is an Operating System? Resource Abstraction and Sharing

Operating Systems 3. Operating Systems. Content. What is an Operating System? What is an Operating System? Resource Abstraction and Sharing Content 3 Operating Systems The concept of an operating system. The internal architecture of an operating system. The architecture of the Linux operating system in more detail. How to log into (and out

More information

Using the Zoo Workstations

Using the Zoo Workstations Using the Zoo Workstations Version 1.86: January 16, 2014 If you ve used Linux before, you can probably skip many of these instructions, but skim just in case. Please direct corrections and suggestions

More information

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

Jackson State University Department of Computer Science CSC / Advanced Information Security Spring 2013 Lab Project # 5 Jackson State University Department of Computer Science CSC 439-01/539-02 Advanced Information Security Spring 2013 Lab Project # 5 Use of GNU Debugger (GDB) for Reverse Engineering of C Programs in a

More information

15-122: Principles of Imperative Computation

15-122: Principles of Imperative Computation 15-122: Principles of Imperative Computation Lab 0 Navigating your account in Linux Tom Cortina, Rob Simmons Unlike typical graphical interfaces for operating systems, here you are entering commands directly

More information

commandname flags arguments

commandname flags arguments Unix Review, additional Unix commands CS101, Mock Introduction This handout/lecture reviews some basic UNIX commands that you should know how to use. A more detailed description of this and other commands

More information

EKT332 COMPUTER NETWORK

EKT332 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 information

Introduction to Linux

Introduction to Linux Introduction to Linux The command-line interface A command-line interface (CLI) is a type of interface, that is, a way to interact with a computer. Window systems, punched cards or a bunch of dials, buttons

More information

Getting Started. Running Utilities. Shells. Special Characters. Special Characters. Chapter 2 Unix Utilities for non-programmers

Getting Started. Running Utilities. Shells. Special Characters. Special Characters. Chapter 2 Unix Utilities for non-programmers Chapter 2 Unix Utilities for non-programmers Graham Glass and King Ables, UNIX for Programmers and Users, Third Edition, Pearson Prentice Hall, 2003. Original Notes by Raj Sunderraman Converted to presentation

More information

CSE 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 , 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 information

Oxford University Computing Services. Getting Started with Unix

Oxford University Computing Services. Getting Started with Unix Oxford University Computing Services Getting Started with Unix Unix c3.1/2 Typographical Conventions Listed below are the typographical conventions used in this guide. Names of keys on the keyboard are

More information

Exploring UNIX: Session 3

Exploring UNIX: Session 3 Exploring UNIX: Session 3 UNIX file system permissions UNIX is a multi user operating system. This means several users can be logged in simultaneously. For obvious reasons UNIX makes sure users cannot

More information

Overview LEARN. History of Linux Linux Architecture Linux File System Linux Access Linux Commands File Permission Editors Conclusion and Questions

Overview LEARN. History of Linux Linux Architecture Linux File System Linux Access Linux Commands File Permission Editors Conclusion and Questions Lanka Education and Research Network Linux Architecture, Linux File System, Linux Basic Commands 28 th November 2016 Dilum Samarasinhe () Overview History of Linux Linux Architecture Linux File System

More information

Introduction to Linux Workshop 1

Introduction to Linux Workshop 1 Introduction to Linux Workshop 1 The George Washington University SEAS Computing Facility Created by Jason Hurlburt, Hadi Mohammadi, Marco Suarez hurlburj@gwu.edu Logging In The lab computers will authenticate

More information

Computers and Computation. The Modern Computer. The Operating System. The Operating System

Computers and Computation. The Modern Computer. The Operating System. The Operating System The Modern Computer Computers and Computation What is a computer? A machine that manipulates data according to instructions. Despite their apparent complexity, at the lowest level computers perform simple

More information

Crash Course in Unix. For more info check out the Unix man pages -orhttp://www.cs.rpi.edu/~hollingd/unix. -or- Unix in a Nutshell (an O Reilly book).

Crash Course in Unix. For more info check out the Unix man pages -orhttp://www.cs.rpi.edu/~hollingd/unix. -or- Unix in a Nutshell (an O Reilly book). Crash Course in Unix For more info check out the Unix man pages -orhttp://www.cs.rpi.edu/~hollingd/unix -or- Unix in a Nutshell (an O Reilly book). 1 Unix Accounts To access a Unix system you need to have

More information

Introduction to UNIX. Logging in. Basic System Architecture 10/7/10. most systems have graphical login on Linux machines

Introduction to UNIX. Logging in. Basic System Architecture 10/7/10. most systems have graphical login on Linux machines Introduction to UNIX Logging in Basic system architecture Getting help Intro to shell (tcsh) Basic UNIX File Maintenance Intro to emacs I/O Redirection Shell scripts Logging in most systems have graphical

More information

Introduction p. 1 Who Should Read This Book? p. 1 What You Need to Know Before Reading This Book p. 2 How This Book Is Organized p.

Introduction p. 1 Who Should Read This Book? p. 1 What You Need to Know Before Reading This Book p. 2 How This Book Is Organized p. Introduction p. 1 Who Should Read This Book? p. 1 What You Need to Know Before Reading This Book p. 2 How This Book Is Organized p. 2 Conventions Used in This Book p. 2 Introduction to UNIX p. 5 An Overview

More information

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209 CSC209 Software Tools and Systems Programming https://mcs.utm.utoronto.ca/~209 What is this Course About? Software Tools Using them Building them Systems Programming Quirks of C The file system System

More information

Beyond this course. Machine code. Readings: CP:AMA 2.1, 15.4

Beyond this course. Machine code. Readings: CP:AMA 2.1, 15.4 Beyond this course Readings: CP:AMA 2.1, 15.4 CS 136 Spring 2018 13: Beyond 1 Machine code In Section 04 we briefly discussed compiling: converting source code into machine code so it can be run or executed.

More information

Mills HPC Tutorial Series. Linux Basics I

Mills HPC Tutorial Series. Linux Basics I Mills HPC Tutorial Series Linux Basics I Objectives Command Line Window Anatomy Command Structure Command Examples Help Files and Directories Permissions Wildcards and Home (~) Redirection and Pipe Create

More information

Lab 1 Introduction to UNIX and C

Lab 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 information

Introduction to Linux. Woo-Yeong Jeong Computer Systems Laboratory Sungkyunkwan University

Introduction to Linux. Woo-Yeong Jeong Computer Systems Laboratory Sungkyunkwan University Introduction to Linux Woo-Yeong Jeong (wooyeong@csl.skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu What is Linux? A Unix-like operating system of a computer What is an

More information

Princeton University COS 217: Introduction to Programming Systems GDB Tutorial and Reference

Princeton University COS 217: Introduction to Programming Systems GDB Tutorial and Reference Princeton University COS 217: Introduction to Programming Systems GDB Tutorial and Reference Part 1: Tutorial This tutorial describes how to use a minimal subset of the gdb debugger. For more information

More information

Introduction to Unix: Fundamental Commands

Introduction to Unix: Fundamental Commands Introduction to Unix: Fundamental Commands Ricky Patterson UVA Library Based on slides from Turgut Yilmaz Istanbul Teknik University 1 What We Will Learn The fundamental commands of the Unix operating

More information

Contents. Note: pay attention to where you are. Note: Plaintext version. Note: pay attention to where you are... 1 Note: Plaintext version...

Contents. Note: pay attention to where you are. Note: Plaintext version. Note: pay attention to where you are... 1 Note: Plaintext version... Contents Note: pay attention to where you are........................................... 1 Note: Plaintext version................................................... 1 Hello World of the Bash shell 2 Accessing

More information

Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: C and Unix Overview

Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring Topic Notes: C and Unix Overview Computer Science 2500 Computer Organization Rensselaer Polytechnic Institute Spring 2009 Topic Notes: C and Unix Overview This course is about computer organization, but since most of our programming is

More information

Saint Louis University. Intro to Linux and C. CSCI 2400/ ECE 3217: Computer Architecture. Instructors: David Ferry

Saint Louis University. Intro to Linux and C. CSCI 2400/ ECE 3217: Computer Architecture. Instructors: David Ferry Intro to Linux and C CSCI 2400/ ECE 3217: Computer Architecture Instructors: David Ferry 1 Overview Linux C Hello program in C Compiling 2 History of Linux Way back in the day: Bell Labs Unix Widely available

More information

CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX

CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX CS 215 Fundamentals of Programming II Spring 2019 Very Basic UNIX This handout very briefly describes how to use Unix and how to use the Linux server and client machines in the EECS labs that dual boot

More information

Exercise 1: Basic Tools

Exercise 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 information

Basic File Attributes

Basic File Attributes Basic File Attributes The UNIX file system allows the user to access other files not belonging to them and without infringing on security. A file has a number of attributes (properties) that are stored

More information

The kernel is the low-level software that manages hardware, multitasks programs, etc.

The kernel is the low-level software that manages hardware, multitasks programs, etc. November 2011 1 Why Use Linux? Save Money Initial purchase and maintenance Resume Linux is used by MANY organizations More choices Tons of Linux operating systems November 2011 2 What is Linux? 1. Contains

More information

Program Design: Using the Debugger

Program Design: Using the Debugger rogram Design, February 2, 2004 1 Program Design: Using the Debugger A debugger is an alternative to putting print (printf in C) statements in your program, recompiling and trying to find out what values

More information

CSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0.

CSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0. CSCI0330 Intro Computer Systems Doeppner Lab 02 - Tools Lab Due: Sunday, September 23, 2018 at 6:00 PM 1 Introduction 0 2 Assignment 0 3 gdb 1 3.1 Setting a Breakpoint 2 3.2 Setting a Watchpoint on Local

More information

Introduction to the Command line. Introduction to the command line. Introduction to the Command line. GNU/Linux at South Wales

Introduction to the Command line. Introduction to the command line. Introduction to the Command line. GNU/Linux at South Wales Introduction to the command line slide 1 Introduction to the Command line slide 2 in this module we will examine: tools necessary to develop game engines:gdb, emacs and friends examine how one can integrate

More information

Unix Workshop Aug 2014

Unix Workshop Aug 2014 Unix Workshop 2014 5 Aug 2014 What is Unix Multitasking, multiuser operating system Often the OS of choice for large servers, large clusters Unix Around You You re probably familiar with these: Linux Solaris

More information

CS370 Operating Systems

CS370 Operating Systems CS370 Operating Systems Colorado State University Yashwant K Malaiya Fall 2016 Lecture 5 Slides based on Text by Silberschatz, Galvin, Gagne Various sources 1 1 User Operating System Interface - CLI CLI

More information

EL2310 Scientific Programming

EL2310 Scientific Programming Lecture 6: Introduction to C (pronobis@kth.se) Overview Overview Lecture 6: Introduction to C Roots of C Getting started with C Closer look at Hello World Programming Environment Schedule Last time (and

More information

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

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) CSE 374 Programming Concepts & Tools Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) Hacker tool of the week (tags) Problem: I want to find the definition of a function or

More information

System Programming. Introduction to Unix

System Programming. Introduction to Unix Content : by Dr. B. Boufama School of Computer Science University of Windsor Instructor: Dr. A. Habed adlane@cs.uwindsor.ca http://cs.uwindsor.ca/ adlane/60-256 Content Content 1 Introduction 2 3 Introduction

More information

CHAPTER 1 UNIX FOR NONPROGRAMMERS

CHAPTER 1 UNIX FOR NONPROGRAMMERS CHAPTER 1 UNIX FOR NONPROGRAMMERS The man command is used to display the manual entry associated with word entered as argument. The -k option is used displays a list of manual entries that contain entered

More information

Unix Filesystem. January 26 th, 2004 Class Meeting 2

Unix Filesystem. January 26 th, 2004 Class Meeting 2 Unix Filesystem January 26 th, 2004 Class Meeting 2 * Notes adapted by Christian Allgood from previous work by other members of the CS faculty at Virginia Tech Unix Filesystem! The filesystem is your interface

More information

Linux Training. for New Users of Cluster. Georgia Advanced Computing Resource Center University of Georgia Suchitra Pakala

Linux Training. for New Users of Cluster. Georgia Advanced Computing Resource Center University of Georgia Suchitra Pakala Linux Training for New Users of Cluster Georgia Advanced Computing Resource Center University of Georgia Suchitra Pakala pakala@uga.edu 1 Overview GACRC Linux Operating System Shell, Filesystem, and Common

More information

1. The Mac Environment in Sierra Hall 1242

1. The Mac Environment in Sierra Hall 1242 Wednesday, August 26, 2015 Lab Notes Topics for today The Mac Environment C (and Unix) Notes on C Part 1 Program 1 1. The Mac Environment in Sierra Hall 1242 a. Turning on the Mac If the Mac is in sleep

More information

Using LINUX a BCMB/CHEM 8190 Tutorial Updated (1/17/12)

Using LINUX a BCMB/CHEM 8190 Tutorial Updated (1/17/12) Using LINUX a BCMB/CHEM 8190 Tutorial Updated (1/17/12) Objective: Learn some basic aspects of the UNIX operating system and how to use it. What is UNIX? UNIX is the operating system used by most computers

More information

CMPT 300. Operating Systems. Brief Intro to UNIX and C

CMPT 300. Operating Systems. Brief Intro to UNIX and C CMPT 300 Operating Systems Brief Intro to UNIX and C Outline Welcome Review Questions UNIX basics and Vi editor Using SSH to remote access Lab2(4214) Compiling a C Program Makefile Basic C/C++ programming

More information

Lab 1 Introduction to UNIX and C

Lab 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 information

INTRODUCTION TO BIOINFORMATICS

INTRODUCTION TO BIOINFORMATICS Introducing the LINUX Operating System BecA-ILRI INTRODUCTION TO BIOINFORMATICS Mark Wamalwa BecA- ILRI Hub, Nairobi, Kenya h"p://hub.africabiosciences.org/ h"p://www.ilri.org/ m.wamalwa@cgiar.org 1 What

More information

Lecture 03 Bits, Bytes and Data Types

Lecture 03 Bits, Bytes and Data Types Lecture 03 Bits, Bytes and Data Types Computer Languages A computer language is a language that is used to communicate with a machine. Like all languages, computer languages have syntax (form) and semantics

More information

EL2310 Scientific Programming

EL2310 Scientific Programming (yaseminb@kth.se) Overview Overview Roots of C Getting started with C Closer look at Hello World Programming Environment Discussion Basic Datatypes and printf Schedule Introduction to C - main part of

More information

Introduction to Linux

Introduction to Linux Introduction to Operating Systems All computers that we interact with run an operating system There are several popular operating systems Operating Systems OS consists of a suite of basic software Operating

More information

Using UNIX. -rwxr--r-- 1 root sys Sep 5 14:15 good_program

Using UNIX. -rwxr--r-- 1 root sys Sep 5 14:15 good_program Using UNIX. UNIX is mainly a command line interface. This means that you write the commands you want executed. In the beginning that will seem inferior to windows point-and-click, but in the long run the

More information

UNIX Quick Reference

UNIX Quick Reference UNIX Quick Reference This card represents a brief summary of some of the more frequently used UNIX commands that all users should be at least somewhat familiar with. Some commands listed have much more

More information

Unix Tutorial Haverford Astronomy 2014/2015

Unix Tutorial Haverford Astronomy 2014/2015 Unix Tutorial Haverford Astronomy 2014/2015 Overview of Haverford astronomy computing resources This tutorial is intended for use on computers running the Linux operating system, including those in the

More information

CSCE 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 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 information

Introduction to the Linux Command Line

Introduction to the Linux Command Line Introduction to the Linux Command Line May, 2015 How to Connect (securely) ssh sftp scp Basic Unix or Linux Commands Files & directories Environment variables Not necessarily in this order.? Getting Connected

More information

Perl and R Scripting for Biologists

Perl and R Scripting for Biologists Perl and R Scripting for Biologists Lukas Mueller PLBR 4092 Course overview Linux basics (today) Linux advanced (Aure, next week) Why Linux? Free open source operating system based on UNIX specifications

More information

Princeton University COS 217: Introduction to Programming Systems GDB Tutorial and Reference for x86-64 Assembly Language

Princeton University COS 217: Introduction to Programming Systems GDB Tutorial and Reference for x86-64 Assembly Language Princeton University COS 217: Introduction to Programming Systems GDB Tutorial and Reference for x86-64 Assembly Language Part 1: Tutorial Motivation Suppose you're developing the power.s program. Further

More information

Introduction. SSH Secure Shell Client 1

Introduction. SSH Secure Shell Client 1 SSH Secure Shell Client 1 Introduction An SSH Secure Shell Client is a piece of software that allows a user to do a number of functions. Some of these functions are: file transferring, setting permissions,

More information

Introduction to Supercomputing

Introduction 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 information

Introduction to Linux

Introduction 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 information

EECS2301. Lab 1 Winter 2016

EECS2301. Lab 1 Winter 2016 EECS2301 Lab 1 Winter 2016 Lab Objectives In this lab, you will be introduced to the Linux operating system. The basic commands will be presented in this lab. By the end of you alb, you will be asked to

More information

Linux File System and Basic Commands

Linux File System and Basic Commands Linux File System and Basic Commands 0.1 Files, directories, and pwd The GNU/Linux operating system is much different from your typical Microsoft Windows PC, and probably looks different from Apple OS

More information

Introduction to Linux Environment. Yun-Wen Chen

Introduction to Linux Environment. Yun-Wen Chen Introduction to Linux Environment Yun-Wen Chen 1 The Text (Command) Mode in Linux Environment 2 The Main Operating Systems We May Meet 1. Windows 2. Mac 3. Linux (Unix) 3 Windows Command Mode and DOS Type

More information

Computer Science 322 Operating Systems Mount Holyoke College Spring Topic Notes: C and Unix Overview

Computer Science 322 Operating Systems Mount Holyoke College Spring Topic Notes: C and Unix Overview Computer Science 322 Operating Systems Mount Holyoke College Spring 2010 Topic Notes: C and Unix Overview This course is about operating systems, but since most of our upcoming programming is in C on a

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

CS Unix Tools. Fall 2010 Lecture 10. Hussam Abu-Libdeh based on slides by David Slater. September 29th, 2010

CS Unix Tools. Fall 2010 Lecture 10. Hussam Abu-Libdeh based on slides by David Slater. September 29th, 2010 Fall 2010 Lecture 10 Hussam Abu-Libdeh based on slides by David Slater September 29th, 2010 Vim = Awesome! Vim is a powerful lightweight text editor. The name Vim is an acronym for Vi IMproved vi is an

More information

CSCI 2132 Software Development. Lecture 3: Unix Shells and Other Basic Concepts

CSCI 2132 Software Development. Lecture 3: Unix Shells and Other Basic Concepts CSCI 2132 Software Development Lecture 3: Unix Shells and Other Basic Concepts Instructor: Vlado Keselj Faculty of Computer Science Dalhousie University 10-Sep-2018 (3) CSCI 2132 1 Introduction to UNIX

More information

Unix File System. Class Meeting 2. * Notes adapted by Joy Mukherjee from previous work by other members of the CS faculty at Virginia Tech

Unix File System. Class Meeting 2. * Notes adapted by Joy Mukherjee from previous work by other members of the CS faculty at Virginia Tech Unix File System Class Meeting 2 * Notes adapted by Joy Mukherjee from previous work by other members of the CS faculty at Virginia Tech Unix File System The file system is your interface to: physical

More information

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

CS140 Operating Systems Final December 12, 2007 OPEN BOOK, OPEN NOTES CS140 Operating Systems Final December 12, 2007 OPEN BOOK, OPEN NOTES Your name: SUNet ID: In accordance with both the letter and the spirit of the Stanford Honor Code, I did not cheat on this exam. Furthermore,

More information

Operating System Interaction via bash

Operating System Interaction via bash Operating System Interaction via bash bash, or the Bourne-Again Shell, is a popular operating system shell that is used by many platforms bash uses the command line interaction style generally accepted

More information

1. The Mac Environment in SIE 1222

1. The Mac Environment in SIE 1222 Friday, September 1, 2017 Lab Notes Topics for today The Mac Environment C (and Unix) Notes on C Part 1 Program 1 1. The Mac Environment in SIE 1222 a. Turning on the Mac If the Mac is in sleep mode you

More information

Temple University Computer Science Programming Under the Linux Operating System January 2017

Temple University Computer Science Programming Under the Linux Operating System January 2017 Temple University Computer Science Programming Under the Linux Operating System January 2017 Here are the Linux commands you need to know to get started with Lab 1, and all subsequent labs as well. These

More information

CSCI 2132 Software Development. Lecture 4: Files and Directories

CSCI 2132 Software Development. Lecture 4: Files and Directories CSCI 2132 Software Development Lecture 4: Files and Directories Instructor: Vlado Keselj Faculty of Computer Science Dalhousie University 12-Sep-2018 (4) CSCI 2132 1 Previous Lecture Some hardware concepts

More information

CMSC 104 Lecture 2 by S Lupoli adapted by C Grasso

CMSC 104 Lecture 2 by S Lupoli adapted by C Grasso CMSC 104 Lecture 2 by S Lupoli adapted by C Grasso A layer of software that runs between the hardware and the user. Controls how the CPU, memory and I/O devices work together to execute programs Keeps

More information