LECTURE-9 More on Linux Operating System Linux Was Conceived

Total Page:16

File Type:pdf, Size:1020Kb

LECTURE-9 More on Linux Operating System Linux Was Conceived LECTURE-9 More on Linux Operating System Linux was conceived (tasarlamak) in April 1991, with the first announcement of the project given in August that year. A Finnish computer science student by the name Linus Torvalds. GNU is a Unix-like operating system. That means it is a collection of many programs: applications, libraries, developer tools, even games. The development of GNU, started in January 1984, is known as the GNU Project. Many of the programs in GNU are released under the auspices of the GNU Project; those we call GNU packages. The name “GNU” is a recursive acronym for “GNU's Not Unix.” “GNU” is pronounced g'noo, as one syllable, like saying “grew” but replacing the r with n. The program in a Unix-like system that allocates machine resources and talks to the hardware is called the “kernel”. GNU is typically used with a kernel called Linux. This combination is the GNU/Linux operating system. GNU/Linux is used by millions, though many call it “Linux” by mistake. GNU's own kernel, The Hurd, was started in 1990 (before Linux was started). Volunteers continue developing the Hurd because it is an interesting technical project. Linux is a kernel. – Not an operating system. – Typically run with “GNU” Operating System –So the correct name is actually “GNU/Linux” – But most folks just say “Linux.” GNU project – Started by Richard Stallman – Provides common “userspace” utilities: – ls, make, gcc, emacs 1 Richard Stallman Figure 9-1 represents a generalized high-level architecture of a GNU/Linux System. In reality, the kernel space is a much more complicated concept, containing many more components. Figure 9-1 A High-level GNU/Linux system architecture 2 The applications and system programs, as well as the GNU C library run on top of the kernel in the user-space. Applications refer to programs with a useful function, such as word processing, games, or C applications developed to run on the processor of a Zynq chip. GNU General Public licence is what is known as a copyleft licence. The basis for the project was the creation of an OS that was ‘free. Development Tools and Resources Virtual Machines Those lacking a machine running a Linux distribution but wishing to develop for Linux have the option of using a Virtual Machine (VM). This is a software implementation of an OS, emulated within the existing primary OS of a target machine provided it has enough processing power and memory. A developer wishing to use a VM for the sole purpose of developing applications for Linux may find one of the free options more than suitable for their needs. Someone wishing to deploy a Linux based VM in a business scenario, however, may be required to look at paid alternatives. Table 9-1 Comparison of VMs. 3 Version Control The collaborative nature of development for Linux necessitates the utilisation of some form of version control. 4 Centralised Version Control Systems (CVCSs) utilise a single server that hosts all versioned files. Every user can login to the server and check-out a local copy of the file for editing. When they are finished, they can commit any edits and the server maintains a record of who authored which version of which file and when. However, suppose the basic example of a case where regular full backups of the server have not been made and the hard disk is corrupted; the entire project is lost beyond repair. A Distributed Version Control System (DVCS) mitigates this. Instead of checking-out a single file, each user mirrors the entire repository on the server allowing for recovery of the entire repository should something go wrong. Git Git is one such DVCS, designed by Linus Torvalds for the initial purpose of managing Linux kernel development. It was released in 2005 as a free alternative to a previous, proprietary Version Control System (VCS) that ceased to provide free use. F Figure 9-2: Exemplary Git version history 5 Debugging Linux Code, at some iteration of its development, will likely contain bugs; this is a statement that holds true for all application development, and Linux is no exception In Linux, several tools are at our disposal to identify the nature and location of any bugs. The GNU debugger(gdb) is provided in the user-space in the form of a command line tool or GUI with the purpose of seeking out bugs in user-space programs, or for use in the kernel as the remote host Linux kernel debugger through gdb (kgdb) Table 9-2: Linux debugging tools. 6 There of course exists many other debugging tools available for getting to the root of a bug in a program, and the suggestions above are merely an introduction to the types of bug you may encounter and the debugging options available. The Linux Kernel A kernel is effectively the core of an operating system. It is the part of the operating system that is first to load on boot, and therefore resides in main memory. 7 Figure 9-3: Important components of the Linux kernel System Call Interface A system call is an interaction between an application in the user space and the required service provided by the kernel. The SCI provides this link between the boundary of the user space and kernel space, where direct calls are not possible. Memory Management The truth is that there is a need for more memory than the finite amount available. Virtual memory can help with this problem, making it appear as though there is more memory available in the system than there actually is. 8 Virtual Memory Figure 9-4 represents a simplified visualisation of virtual memory. Two processes, Process A and Process B, each have their own virtual address space and page table. A page is simply a segment of memory, given a unique Page Frame Number (PFN). The page tables therefore contain mapping information allowing the processor to resolve virtual memory addresses into physical ones. Note that Process A has virtual PFN1 mapped to physical PFN3. Figure 9-4: Simplfied representation of virtual memory Process Management As with any other operating system, tasks to be carried out are performed by processes. Consider the fact that any program on an operating system is actually just some instructions, in the format of machine code, stored as an executable image; a process is therefore such a computer program in operation. 9 •As machine code instructions are executed by the system’s processor, processes change and as such are dynamic. •Linux is a multiprocessing OS, and each process has its own rights and responsibilities, meaning a crash of one process will not impact the other processes. •Processes use both a variety of system resources from the CPU for running instructions and physical memory for holding the process and any corresponding data. Linux File Systems Table 9-3: Some supported Linux file systems Linux Device Drivers A Linux device driver, as in any OS, can be considered as a ‘black box’ that provides a level of abstraction between the hardware devices in a system and the programs running in the OS. By utilizing device drivers, a standardized set of calls can be implemented across all programs which are independent of the specific device; these calls correspond to driver specific functions that carry out the required operations. The result is a modular approach allowing the ability to build drivers outside the kernel and add them in as required. 10 Linux Booting The first thing that happens when a Linux system is powered on, or reset, is that the processor will execute code in a predetermined location. For a desktop computer this location is stored in a section of flash memory on the motherboard, known as the Basic Input/Output System (BIOS). As modern day PCs offer such versatility in the range of boot devices, the first thing that the BIOS will do is determine which devices offer bootable options Once the boot device has been determined, the FSBL is loaded into RAM and executed by the processor. The FSBL is a very small section of code — — less than 512 bytes, or a single sector — and its sole purpose is to load the Second-Stage Bootloader (SSBL) into RAM. The SSBLis the stage in the boot process where a boot menu is presented; if you have used Linux before you may have noticed this. This menu presents a list of possible boot options that are available. When a boot option from the list is chosen, the bootloader will load the corresponding OS, which will then decompress and load itself into memory before initialising the kernel. There are other functions that are carried out by the bootloader before the kernel is launched, but we will get to that later. With the required kernel modules successfully launched, the final stage of the boot process is to invoke the first user-space function, init. This function initialises all high-level parts of the system. 11 Figure 9-5: Stages of the desktop Linux boot process 12 .
Recommended publications
  • Redhawk Linux User's Guide
    Linux® User’s Guide 0898004-520 May 2007 Copyright 2007 by Concurrent Computer Corporation. All rights reserved. This publication or any part thereof is intended for use with Concurrent products by Concurrent personnel, customers, and end–users. It may not be reproduced in any form without the written permission of the publisher. The information contained in this document is believed to be correct at the time of publication. It is subject to change without notice. Concurrent makes no warranties, expressed or implied, concerning the information contained in this document. To report an error or comment on a specific portion of the manual, photocopy the page in question and mark the correction or comment on the copy. Mail the copy (and any additional comments) to Concurrent Computer Corporation, 2881 Gateway Drive, Pompano Beach, Florida, 33069. Mark the envelope “Attention: Publications Department.” This publication may not be reproduced for any other reason in any form without written permission of the publisher. Concurrent Computer Corporation and its logo are registered trademarks of Concurrent Computer Corporation. All other Concurrent product names are trademarks of Concurrent while all other product names are trademarks or registered trademarks of their respective owners. Linux® is used pursuant to a sublicense from the Linux Mark Institute. Printed in U. S. A. Revision History: Date Level Effective With August 2002 000 RedHawk Linux Release 1.1 September 2002 100 RedHawk Linux Release 1.1 December 2002 200 RedHawk Linux Release 1.2 April 2003 300 RedHawk Linux Release 1.3, 1.4 December 2003 400 RedHawk Linux Release 2.0 March 2004 410 RedHawk Linux Release 2.1 July 2004 420 RedHawk Linux Release 2.2 May 2005 430 RedHawk Linux Release 2.3 March 2006 500 RedHawk Linux Release 4.1 May 2006 510 RedHawk Linux Release 4.1 May 2007 520 RedHawk Linux Release 4.2 Preface Scope of Manual This manual consists of three parts.
    [Show full text]
  • Debugging Kernel Problems
    Debugging Kernel Problems by GregLehey Edition for AsiaBSDCon 2004 Taipei, 13 March 2004 Debugging Kernel Problems by GregLehey([email protected]) Copyright © 1995-2004 GregLehey 3Debugging Kernel Problems Preface Debugging kernel problems is a black art. Not manypeople do it, and documentation is rare, in- accurate and incomplete. This document is no exception: faced with the choice of accuracyand completeness, I chose to attempt the latter.Asusual, time was the limiting factor,and this draft is still in beta status. This is a typical situation for the whole topic of kernel debugging: building debug tools and documentation is expensive,and the people who write them are also the people who use them, so there'satendencytobuild as much of the tool as necessary to do the job at hand. If the tool is well-written, it will be reusable by the next person who looks at a particular area; if not, it might fall into disuse. Consider this book a starting point for your own develop- ment of debugging tools, and remember: more than anywhere else, this is an area with ``some as- sembly required''. Debugging Kernel Problems 4 1 Introduction Operating systems fail. All operating systems contain bugs, and theywill sometimes cause the system to behave incorrectly.The BSD kernels are no exception. Compared to most other oper- ating systems, both free and commercial, the BSD kernels offer a large number of debugging tools. This tutorial examines the options available both to the experienced end user and also to the developer. In this tutorial, we’ll look at the following topics: • Howand whykernels fail.
    [Show full text]
  • Introduction to GNU Octave
    Introduction to GNU Octave Hubert Selhofer, revised by Marcel Oliver updated to current Octave version by Thomas L. Scofield 2008/08/16 line 1 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 8 6 4 2 -8 -6 0 -4 -2 -2 0 -4 2 4 -6 6 8 -8 Contents 1 Basics 2 1.1 What is Octave? ........................... 2 1.2 Help! . 2 1.3 Input conventions . 3 1.4 Variables and standard operations . 3 2 Vector and matrix operations 4 2.1 Vectors . 4 2.2 Matrices . 4 1 2.3 Basic matrix arithmetic . 5 2.4 Element-wise operations . 5 2.5 Indexing and slicing . 6 2.6 Solving linear systems of equations . 7 2.7 Inverses, decompositions, eigenvalues . 7 2.8 Testing for zero elements . 8 3 Control structures 8 3.1 Functions . 8 3.2 Global variables . 9 3.3 Loops . 9 3.4 Branching . 9 3.5 Functions of functions . 10 3.6 Efficiency considerations . 10 3.7 Input and output . 11 4 Graphics 11 4.1 2D graphics . 11 4.2 3D graphics: . 12 4.3 Commands for 2D and 3D graphics . 13 5 Exercises 13 5.1 Linear algebra . 13 5.2 Timing . 14 5.3 Stability functions of BDF-integrators . 14 5.4 3D plot . 15 5.5 Hilbert matrix . 15 5.6 Least square fit of a straight line . 16 5.7 Trapezoidal rule . 16 1 Basics 1.1 What is Octave? Octave is an interactive programming language specifically suited for vectoriz- able numerical calculations.
    [Show full text]
  • Lecture 1: Introduction to UNIX
    The Operating System Course Overview Getting Started Lecture 1: Introduction to UNIX CS2042 - UNIX Tools September 29, 2008 Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages Lecture Outline 1 The Operating System Description and History UNIX Flavors Advantages and Disadvantages 2 Course Overview Class Specifics 3 Getting Started Login Information Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages What is UNIX? One of the first widely-used operating systems Basis for many modern OSes Helped set the standard for multi-tasking, multi-user systems Strictly a teaching tool (in its original form) Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages A Brief History of UNIX Origins The first version of UNIX was created in 1969 by a group of guys working for AT&T's Bell Labs. It was one of the first big projects written in the emerging C language. It gained popularity throughout the '70s and '80s, although non-AT&T versions eventually took the lion's share of the market. Predates Microsoft's DOS by 12 years! Lecture 1: UNIX Intro The Operating System Description and History Course Overview UNIX Flavors Getting Started Advantages and Disadvantages Lecture Outline 1 The Operating System Description and History UNIX Flavors Advantages and Disadvantages 2 Course Overview Class Specifics 3
    [Show full text]
  • Linux Kernel and Driver Development Training Slides
    Linux Kernel and Driver Development Training Linux Kernel and Driver Development Training © Copyright 2004-2021, Bootlin. Creative Commons BY-SA 3.0 license. Latest update: October 9, 2021. Document updates and sources: https://bootlin.com/doc/training/linux-kernel Corrections, suggestions, contributions and translations are welcome! embedded Linux and kernel engineering Send them to [email protected] - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/470 Rights to copy © Copyright 2004-2021, Bootlin License: Creative Commons Attribution - Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0/legalcode You are free: I to copy, distribute, display, and perform the work I to make derivative works I to make commercial use of the work Under the following conditions: I Attribution. You must give the original author credit. I Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. I For any reuse or distribution, you must make clear to others the license terms of this work. I Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Document sources: https://github.com/bootlin/training-materials/ - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/470 Hyperlinks in the document There are many hyperlinks in the document I Regular hyperlinks: https://kernel.org/ I Kernel documentation links: dev-tools/kasan I Links to kernel source files and directories: drivers/input/ include/linux/fb.h I Links to the declarations, definitions and instances of kernel symbols (functions, types, data, structures): platform_get_irq() GFP_KERNEL struct file_operations - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/470 Company at a glance I Engineering company created in 2004, named ”Free Electrons” until Feb.
    [Show full text]
  • Debian GNU/Linux Installation Guide Debian GNU/Linux Installation Guide Copyright © 2004 – 2015 the Debian Installer Team
    Debian GNU/Linux Installation Guide Debian GNU/Linux Installation Guide Copyright © 2004 – 2015 the Debian Installer team This document contains installation instructions for the Debian GNU/Linux 8 system (codename “jessie”), for the 32-bit soft-float ARM (“armel”) architecture. It also contains pointers to more information and information on how to make the most of your new Debian system. Note: Although this installation guide for armel is mostly up-to-date, we plan to make some changes and reorganize parts of the manual after the official release of jessie. A newer version of this manual may be found on the Internet at the debian-installer home page (http://www.debian.org/devel/debian-installer/). You may also be able to find additional translations there. This manual is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License. Please refer to the license in Appendix F. Table of Contents Installing Debian GNU/Linux 8 For armel......................................................................................ix 1. Welcome to Debian .........................................................................................................................1 1.1. What is Debian? ...................................................................................................................1 1.2. What is GNU/Linux? ...........................................................................................................2 1.3. What is Debian GNU/Linux?...............................................................................................3
    [Show full text]
  • Xv6 Booting: Transitioning from 16 to 32 Bit Mode
    238P Operating Systems, Fall 2018 xv6 Boot Recap: Transitioning from 16 bit mode to 32 bit mode 3 November 2018 Aftab Hussain University of California, Irvine BIOS xv6 Boot loader what it does Sets up the hardware. Transfers control to the Boot Loader. BIOS xv6 Boot loader what it does Sets up the hardware. Transfers control to the Boot Loader. how it transfers control to the Boot Loader Boot loader is loaded from the 1st 512-byte sector of the boot disk. This 512-byte sector is known as the boot sector. Boot loader is loaded at 0x7c00. Sets processor’s ip register to 0x7c00. BIOS xv6 Boot loader 2 source source files bootasm.S - 16 and 32 bit assembly code. bootmain.c - C code. BIOS xv6 Boot loader 2 source source files bootasm.S - 16 and 32 bit assembly code. bootmain.c - C code. executing bootasm.S 1. Disable interrupts using cli instruction. (Code). > Done in case BIOS has initialized any of its interrupt handlers while setting up the hardware. Also, BIOS is not running anymore, so better to disable them. > Clear segment registers. Use xor for %ax, and copy it to the rest (Code). 2. Switch from real mode to protected mode. (References: a, b). > Note the difference between processor modes and kernel privilege modes > We do the above switch to increase the size of the memory we can address. BIOS xv6 Boot loader 2 source source file executing bootasm.S m. Let’s 2. Switch from real mode to protected mode. expand on this a little bit Addressing in Real Mode In real mode, the processor sends 20-bit addresses to the memory.
    [Show full text]
  • Appendix B Development Tools
    Appendix B Development Tools Problem Statement Although more proprietary packages are available, there are abundant open source packages, giving its users unprecedented flexibility and freedom of choice, that most users can find an application that exactly meets their needs. However, it is also this pool of choices that drive individuals to share a wide range of preferences and biases. As a result, Linux/Open source packages (and softeware in general) is flooded with religious wars over programming languages, editors, licences, etc. Some are worthwhile debates, others are meaningless flamewars. Throughout Appendix B and next chapter, Appendix C, we intend to summarize a few essential tools (from our point of view) that may help readers to know the aspects and how-to of (1) development tools including programming, debugging, and maintaining, and (2) network experiment tools including name-addressing, perimeter probing, traffic-monitoring, benchmarking, simulating/emulating, and finally hacking. Section B.1 guides readers to begin the developing journey with programming tools. A good first step would be writing the first piece of codes using a Visual Improved (vim) text editor. Then compiling it to binary executables with GNU C compiler (gcc), and furthermore offloading some repetitive compiling steps to the make utility. The old 80/20 rule still works on programming where 80% of your codes come from 20% of your efforts leaving 80% of your efforts go buggy about your program. Therefore you would need some debugging tools as dicussed in Section 1.2. including source-level debugging, GNU Debugger (gdb), or a GUI fasion approach, Data Display Debugger (ddd), and debug the kernel itself using remote Kernel GNU Debugger (kgdb).
    [Show full text]
  • Devt: Let the Device Talk
    Iowa State University Capstones, Theses and Creative Components Dissertations Summer 2020 DevT: Let the Device Talk Chander Bhushan Gupta Follow this and additional works at: https://lib.dr.iastate.edu/creativecomponents Part of the Data Storage Systems Commons Recommended Citation Gupta, Chander Bhushan, "DevT: Let the Device Talk" (2020). Creative Components. 585. https://lib.dr.iastate.edu/creativecomponents/585 This Creative Component is brought to you for free and open access by the Iowa State University Capstones, Theses and Dissertations at Iowa State University Digital Repository. It has been accepted for inclusion in Creative Components by an authorized administrator of Iowa State University Digital Repository. For more information, please contact [email protected]. DevT: Let the Device Talk by Chander Bhushan Gupta A Creative Component submitted to the graduate faculty in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Major: Computer Engineering Program of Study Committee: Mai Zheng, Major Professor The student author, whose presentation of the scholarship herein was approved by the program of study committee, is solely responsible for the content of this creative component. The Graduate College will ensure this creative component is globally accessible and will not permit alterations after a degree is conferred. Iowa State University Ames, Iowa 2020 Copyright c Chander Bhushan Gupta, 2020. All rights reserved. ii TABLE OF CONTENTS Page LIST OF TABLES . iv LIST OF FIGURES . .v ACKNOWLEDGMENTS . vii ABSTRACT . viii CHAPTER 1. INTRODUCTION . .1 1.1 Motivation . .3 1.2 Related Work . .5 1.3 Outline . .6 CHAPTER 2. REVIEW OF LITERATURE . .7 2.1 Why FEMU? .
    [Show full text]
  • Thread Scheduling in Multi-Core Operating Systems Redha Gouicem
    Thread Scheduling in Multi-core Operating Systems Redha Gouicem To cite this version: Redha Gouicem. Thread Scheduling in Multi-core Operating Systems. Computer Science [cs]. Sor- bonne Université, 2020. English. tel-02977242 HAL Id: tel-02977242 https://hal.archives-ouvertes.fr/tel-02977242 Submitted on 24 Oct 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Ph.D thesis in Computer Science Thread Scheduling in Multi-core Operating Systems How to Understand, Improve and Fix your Scheduler Redha GOUICEM Sorbonne Université Laboratoire d’Informatique de Paris 6 Inria Whisper Team PH.D.DEFENSE: 23 October 2020, Paris, France JURYMEMBERS: Mr. Pascal Felber, Full Professor, Université de Neuchâtel Reviewer Mr. Vivien Quéma, Full Professor, Grenoble INP (ENSIMAG) Reviewer Mr. Rachid Guerraoui, Full Professor, École Polytechnique Fédérale de Lausanne Examiner Ms. Karine Heydemann, Associate Professor, Sorbonne Université Examiner Mr. Etienne Rivière, Full Professor, University of Louvain Examiner Mr. Gilles Muller, Senior Research Scientist, Inria Advisor Mr. Julien Sopena, Associate Professor, Sorbonne Université Advisor ABSTRACT In this thesis, we address the problem of schedulers for multi-core architectures from several perspectives: design (simplicity and correct- ness), performance improvement and the development of application- specific schedulers.
    [Show full text]
  • Linux Update
    Linux Kernel Debugging Tools Jason Wessel - Product Architect for WR Linux Core Runtime - Kernel.org KGDB Maintainer June 23th, 2010 Agenda • Talk about a number of common kernel debugging tools • Describe high level tactics for using kernel debugging tools • Demonstrate using several tools The harsh reality is you could spend a whole day or more talking about each tool. *** Later find slides/code at: http://kgdb.wiki.kernel.org *** 2 © 2010 Wind River Exciting news • For 2.6.35-rc1 – kdb (the kernel debug shell) merged to mainline! – Ability to debug before console_init() – You can use the EHCI debug port with kgdb • There are thoughts about next few years of kgdb/kdb – Implement complete atomic kernel mode setting – Continue to improve the non ehci debug usb console – Improve keyboard panic handler – Further integration with kprobes and hw assisted debugging – netconsole / kgdboe v2 – Use dedicated HW queues • The only bad news is it takes a long time to get there. 3 © 2010 Wind River Is there anything better than kgdb? • Good – kgdb / kdb • Better – QEMU/KVM backend debugger – Virtual box backend debugger – vmware backend debugger – kdump/kexec • Best – ICE (usb or ethernet) – Simics (because it has backward stepping) • In a class by itself – printk() / trace_printk() The challenge is knowing what to use when... Working tools rock! 4 © 2010 Wind River A bit about printk() and timing • printk is probably the #1 most reliable debug • Any seasoned kernel developer has surely experienced: – Add a printk and the bug goes away! – Timing in
    [Show full text]
  • Network Driver for Micro Os Xv6
    NETWORK DRIVER FOR MICRO OS XV6 A Project Presented to the faculty of the Department of Computer Science California State University, Sacramento Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in Computer Science by Anmoldeep Singh Sandhu SPRING 2020 © 2020 Anmoldeep Singh Sandhu ALL RIGHTS RESERVED ii NETWORK DRIVER FOR MICRO OS XV6 A Project by Anmoldeep Singh Sandhu Approved by: __________________________________, Committee Chair Dr. Jinsong Ouyang __________________________________, Second Reader Dr. Jingwei Yang ____________________________ Date iii Student: Anmoldeep Singh Sandhu I certify that this student has met the requirements for format contained in the University format manual, and this thesis is suitable for electronic submission to the library. Credit is awarded for the Project. __________________________, Graduate Coordinator ___________________ Dr. Jinsong Ouyang Date Department of Computer Science iv Abstract of NETWORK DRIVER FOR MICRO OS XV6 by Anmoldeep Singh Sandhu The network driver is one of the primary requirements for any operating system. Xv6 is a micro-operating system based on version 6 Unix. The latest version of xv6 does not have support for the ethernet driver or the four-layer UDP/IP model. Our work extends the xv6 operating system to support a functioning network driver with the capability of handling a packet burst. This Project also adds support for UDP/IP and Ethernet protocol to the xv6 operating system. _______________________ Committee Chair Dr. Jinsong Ouyang _____________________ Date v ACKNOWLEDGMENTS I am thankful to Dr. Ouyang for providing me the opportunity to learn new skills in the field of driver development. Dr. Ouyang showed trust in me in carrying out this Project.
    [Show full text]