System Software Prof. Dr. H. Mössenböck
|
|
- Florence O’Neal’
- 8 years ago
- Views:
Transcription
1 System Software Prof. Dr. H. Mössenböck 1. Memory Management 2. Garbage Collection 3. Linkers and Loaders 4. Debuggers 5. Text Editors Marks obtained by end-term exam
2 1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Single free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 2
3 Main tasks of memory management Allocation and deallocation of memory global data global variables, code managed by the loader stack local variables managed by the compiler heap dynamically created objects managed by the run-time system Reclaiming unused memory (garbage collection) p p = q; p q Dealing with memory fragmentation Paging and swapping (virtual memory) not discussed in this course 3
4 1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Single free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 4
5 Stack-like management of the heap mark/alloc/free top m a m m top m top a top m = mark(); a = alloc(size); more alloc() calls free(m); returns the current end of the heap (top) allocates a block of size size and returns its address a resets the heap end to m (deallocates anything that was allocated after mark()) Advantage simple and efficient int alloc(int size) { if (top + size > heapend) { error(...); a = 0; else { a = top; top = top + size; return a; void free(int m) { top = m; Disadvantage objects must be deallocated in LIFO order (applicable e.g. for the symbol table of a compiler) 5
6 Heap management with a free list allocation of a block a = alloc(size); deallocation of a block dealloc(a); May lead to holes in the heap, which must be maintained by a free list heap free (free list) alloc() must allocate a block from the free list, i.e.: find a sufficiently large block in the free list remove it from the free list dealloc() add the deallocated block to the free list merge the block with free neighbors 6
7 1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Single free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 7
8 Single free list All blocks are linked into a single large list heap free Possible sort orders of the free list 1. LIFO: the most recently deallocated block is the first in the list. Simple to implement 2. FIFO: the most recently deallocated block is the last in the list. 3. Blocks are sorted by address. Simple block merging; slow insert 4. Blocks are sorted by their size. Simple search of a suitable block; slow insert 8
9 Possible block format used block 1 length data p free block 0 length next unused This format implies a minimum block size (e.g. 8 bytes) Why do we need the length of used blocks? It allows us to traverse the heap sequentially: p = p + p.length; 9
10 Allocation of blocks p = alloc(size); Strategies for searching the free list First Fit returns the first suitable block with length >= size simple and efficient - causes fragmentation (small blocks accumulate at the beginning of the list) Best Fit Next Fit returns the block with the smallest waste (blocks are split) block j : length j >= (size+4) && i j: length i >= length j + minimum waste - slow (must traverse the whole list; good if the list is sorted by block size) variant of First Fit free blocks are linked cyclically; the search starts where it ended last time free free 10
11 Splitting free blocks Free block free list 0 len next unused len Splitting p = alloc(size); 0 len' next unused 1 len'' used p size len' len'' The block is cut off from the end => next does not have to be changed If less than 8 bytes would remain the whole block is used 11
12 Allocation of blocks (pseudo code) static Block free; // free list static Block alloc (int size) { Block start = free; Block prev = free; free = free.next; while (free.len < size+4 && free!= start) { prev = free; free = free.next; if (free == start) { error(...); return null; else { Block p = free; int newlen = p.len - (size+4); if (newlen >= 8) { // split block p = (Block)(p p.len - size); p.len = size + 4; free.len = newlen; else if (free == prev) { // last free block free = null; else { // remove block from list prev.next = free.next; free = prev; Set all data bytes in block p to 0; p.used = true; return p; free prev free 0 len next p free 0 nl next free newlen len 1 len p size len size 12
13 Deallocation of blocks dealloc(p); free left p right - merge block p with free neighbors - add merged block to the free list void dealloc (Block p) { left = left neighbor of p; if (!left.used) { merge left and p; p = left; else { add p to free list; right = right neighbor of p; if (!right.used) { remove right from free list; merge p and right; // traverse heap sequentially // enlarge left.len; left remains in free list // right = (Block)(p + p.len); // seq. search of right's predecessor // p is already in the free list Requires sequential traversals of the heap and the free list => slow 13
14 Boundary tags In order to avoid the sequential searching of blocks Free list is doubly linked length and used bit are also stored at the block end (also in used blocks) 0 len next prev 0 p len minimum block size = 16 bytes right neighbor of p: left neighbor of p: successor of p in free list: predecessor of p in free list: p + p.len p - (p-8).len p.next p.prev There must be a used dummy block at the beginning and the end of the heap. 14
15 Lazy merge dealloc(p) does not merge free blocks with their neighbors free p free If alloc() does not find a sufficiently large block: traverse the heap sequentially merge adjacent free blocks build new free list p.next = free; free = p; p = heapstart; free = null; while (p < heapend) { if (!p.used) { while (right neighbor of p is free) merge neighbor with p; add p to free list; p = (Block)(p + p.len); free 15
16 1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Single free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 16
17 Allocation of blocks Observation 90% of all blocks have only one of 5 different sizes Multiple free lists for blocks of size 2 i bytes n*1024 free Blocks in the last list have different sizes, but their size is a multiple of 1024 bytes Strategy for allocating a block of size s n = next power of 2 greater or equal than s remove the first block from the list corresponding to n Any surplus stays with the allocated block (block size is always 2 i ) 17
18 Algorithms Block alloc (int size) { if (size > 512) { p = suitable block from the last list (e.g. first fit); put remaining i*1024 byte back to the last list; else { int s = 8, n = 3; // free[0..2] are dummies while (s < size) { s = 2 * s; n++; // n = log 2 (size) ; if (free[n] == null) split(n+1); p = free[n]; free[n] = p.next; initialize block p with 0; return p; // p = first block from free[n] void split (int n) { if (n == 10) { p = cut off 1024 byte block from the last list; else { if (free[n] == null) split(n+1); p = free[n]; free[n] = p.next; split p into two equally sized blocks and add them to free[n-1]; 18
19 Example Allocation of 40 bytes (given the follwing free lists) n* tries to obtain a block of size 64; but the 64-list is empty Split a 1024 byte block and use it to fill the empty lists Take a 64 byte block leaving 24 bytes unused (internal fragmentation) In most cases a suitable block is found with a single access => efficient At the beginning the whole heap is a single block in the 1024-list 19
20 Deallocation of blocks void dealloc (Block p) { int s = 8, n = 3; while (s < p.len) { s = 2 * s; n++; if (n > 10) n = 10; p.next = free[n]; free[n] = p; // n = log 2 (p.len) ; // add p to free[n] Blocks are not merged, because a block of the same size is probably needed soon again (maybe one should do a lazy merge from time to time) 20
21 Reducing internal fragmentation... by more block sizes block sizes 2 i i, 3*2 i k * less internal fragmentation - more free lists - more difficult to compute the right list - more complicated to split blocks 21
22 Reducing internal fragmentation... by free lists containing blocks of variable sizes (in a certain interval) list i contains blocks of size 2 i.. 2 i+1-1 Example we need a block with 40 bytes search the list containing blocks of size ; we find a block of size 58, say split the block into bytes add 18-byte block into list with sizes no internal fragmentation + the lists are shorter than with a single free list - the list must be searched for a suitable block (e.g. next fit) - leads to many small blocks of waste free blocks should be merged lazily from time to time 22
23 1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Single free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 23
24 Idea of the Buddy System alloc(size) Multiple free lists with blocks of size 2 i as described above dealloc(p) Every block has a partner (buddy) of the same size p q p is the buddy of q and vice versa A block can only be merged with its buddy The address of p's buddy can be computed from the address of p Goal: simple and efficient merging of blocks 24
25 Buddy addresses Buddies emerge from splitting blocks of size 2 i Assume that we have a block of size 64 (= 2 6 ) at address If we split this block we obtain two buddies x and y of size 32 (= 2 5 ) 0 32 adr(x) = 0 = size = adr(y) = 32 = x y 5 If we split y again we obtain x y If we split x again we obtain x y adr(x) = 32 = size = 2 4 adr(y) = 48 = adr(x) = 32 = size = 2 3 adr(y) = 40 = A block of size 2 i has an address which is a multiple of 2 i (it has i zeroes at the end) 25
26 Deallocation of a block of size 2 i Merge the block with its buddy if the buddy is free free p i heap void dealloc (Block p) { // size of p = 2 i int s = 8, i = 3, buddy, beg; while (s < p.len) { s = s * 2; i++; // s = p.len, i = log 2 (p.len) for (;;) { if ( ((p-4) >> i) % 2 == 1) { buddy = p - p.len; beg = buddy; else { buddy = p + p.len; beg = p; if (buddy.used buddy.len!= p.len buddy < heapstart buddy >= heapend) break; remove buddy from free[i]; // seq. search in short list p = beg; p.len = 2 * p.len; i++; add p to free[i]; buddy beg p beg p buddy p if p is deallocated, multiple blocks are merged cannot be merged with its buddy any more => add it to the free list 26
27 1. Memory Management 1.1 Overview 1.2 Allocation and deallocation of memory 1.3 Single free list 1.4 Multiple free lists 1.5 Buddy system 1.6 Memory fragmentation 27
28 External and internal fragmentation heap external fragmentation small (unusable) holes between blocks internal fragmentation unused bytes within an allocated block External fragmentation can be removed by compaction + collects all "holes" into a contiguous area of free memory + allows simple alloc() without free lists (blocks are cut off from the free area) - compaction leads to new block addresses => all references must be updated Some garbage collectors compact the heap automatically (see later) 28
29 Compaction Requires 2 traversals of the heap and 1 traversal through all pointers pointers heap 1. For every block, compute its address after compaction Modify all pointers so that they point to the new address problem: where are the pointers? They can be in local variables or in other objects. 3. Move blocks to their new address allocated blocks must have an extra space to store the new address. 29
30 Compaction with master pointers block size master pointers pointers Pointers reference blocks via master pointers (e.g. "handles" on the Macintosh) Every block is referenced by just a single master pointer Step 1: Reverse master pointers master[] for (all elements i in master) { p = master[i]; master[i] = p.len; p.len = i; Step 2: Compact master[] a = heapstart; for (all blocks p) { if (p.used) { i = p.len; p.len = master[i]; master[i] = a; move block p to a; a = a + p.len; + requires only 2 instead of 3 traversals + blocks do not need extra space to store their new address - indirect access via master pointers is slower than direct access via pointers 30
Memory Allocation. Static Allocation. Dynamic Allocation. Memory Management. Dynamic Allocation. Dynamic Storage Allocation
Dynamic Storage Allocation CS 44 Operating Systems Fall 5 Presented By Vibha Prasad Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need
More informationLecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()
CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic
More information1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
More informationOrganization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.edu Names, Bindings, and Scopes A name is a symbolic identifier used
More informationData Structures and Data Manipulation
Data Structures and Data Manipulation What the Specification Says: Explain how static data structures may be used to implement dynamic data structures; Describe algorithms for the insertion, retrieval
More informationLinked Lists, Stacks, Queues, Deques. It s time for a chainge!
Linked Lists, Stacks, Queues, Deques It s time for a chainge! Learning Goals After this unit, you should be able to... Differentiate an abstraction from an implementation. Define and give examples of problems
More information& Data Processing 2. Exercise 3: Memory Management. Dipl.-Ing. Bogdan Marin. Universität Duisburg-Essen
Folie a: Name & Data Processing 2 3: Memory Management Dipl.-Ing. Bogdan Marin Fakultät für Ingenieurwissenschaften Abteilung Elektro-und Informationstechnik -Technische Informatik- Objectives Memory Management
More informationSequential Data Structures
Sequential Data Structures In this lecture we introduce the basic data structures for storing sequences of objects. These data structures are based on arrays and linked lists, which you met in first year
More information7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
More informationQuestions 1 through 25 are worth 2 points each. Choose one best answer for each.
Questions 1 through 25 are worth 2 points each. Choose one best answer for each. 1. For the singly linked list implementation of the queue, where are the enqueues and dequeues performed? c a. Enqueue in
More informationBinary Search Trees. A Generic Tree. Binary Trees. Nodes in a binary search tree ( B-S-T) are of the form. P parent. Key. Satellite data L R
Binary Search Trees A Generic Tree Nodes in a binary search tree ( B-S-T) are of the form P parent Key A Satellite data L R B C D E F G H I J The B-S-T has a root node which is the only node whose parent
More informationStack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationIntroduction to Data Structures and Algorithms
Introduction to Data Structures and Algorithms Chapter: Elementary Data Structures(1) Lehrstuhl Informatik 7 (Prof. Dr.-Ing. Reinhard German) Martensstraße 3, 91058 Erlangen Overview on simple data structures
More informationOPERATING SYSTEM - MEMORY MANAGEMENT
OPERATING SYSTEM - MEMORY MANAGEMENT http://www.tutorialspoint.com/operating_system/os_memory_management.htm Copyright tutorialspoint.com Memory management is the functionality of an operating system which
More informationCommon Data Structures
Data Structures 1 Common Data Structures Arrays (single and multiple dimensional) Linked Lists Stacks Queues Trees Graphs You should already be familiar with arrays, so they will not be discussed. Trees
More informationComputer Architecture
Computer Architecture Slide Sets WS 2013/2014 Prof. Dr. Uwe Brinkschulte M.Sc. Benjamin Betting Part 11 Memory Management Computer Architecture Part 11 page 1 of 44 Prof. Dr. Uwe Brinkschulte, M.Sc. Benjamin
More informationDATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
More informationUnit 4.3 - Storage Structures 1. Storage Structures. Unit 4.3
Storage Structures Unit 4.3 Unit 4.3 - Storage Structures 1 The Physical Store Storage Capacity Medium Transfer Rate Seek Time Main Memory 800 MB/s 500 MB Instant Hard Drive 10 MB/s 120 GB 10 ms CD-ROM
More informationAbstract Data Type. EECS 281: Data Structures and Algorithms. The Foundation: Data Structures and Abstract Data Types
EECS 281: Data Structures and Algorithms The Foundation: Data Structures and Abstract Data Types Computer science is the science of abstraction. Abstract Data Type Abstraction of a data structure on that
More informationAnalysis of a Search Algorithm
CSE 326 Lecture 4: Lists and Stacks 1. Agfgd 2. Dgsdsfd 3. Hdffdsf 4. Sdfgsfdg 5. Tefsdgass We will review: Analysis: Searching a sorted array (from last time) List ADT: Insert, Delete, Find, First, Kth,
More informationGlossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
More information5. A full binary tree with n leaves contains [A] n nodes. [B] log n 2 nodes. [C] 2n 1 nodes. [D] n 2 nodes.
1. The advantage of.. is that they solve the problem if sequential storage representation. But disadvantage in that is they are sequential lists. [A] Lists [B] Linked Lists [A] Trees [A] Queues 2. The
More informationLecture 12 Doubly Linked Lists (with Recursion)
Lecture 12 Doubly Linked Lists (with Recursion) In this lecture Introduction to Doubly linked lists What is recursion? Designing a node of a DLL Recursion and Linked Lists o Finding a node in a LL (recursively)
More informationOperating Systems CSE 410, Spring 2004. File Management. Stephen Wagner Michigan State University
Operating Systems CSE 410, Spring 2004 File Management Stephen Wagner Michigan State University File Management File management system has traditionally been considered part of the operating system. Applications
More informationCHAPTER 4 ESSENTIAL DATA STRUCTRURES
CHAPTER 4 ESSENTIAL DATA STRUCTURES 72 CHAPTER 4 ESSENTIAL DATA STRUCTRURES In every algorithm, there is a need to store data. Ranging from storing a single value in a single variable, to more complex
More information1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
More informationHome Page. Data Structures. Title Page. Page 1 of 24. Go Back. Full Screen. Close. Quit
Data Structures Page 1 of 24 A.1. Arrays (Vectors) n-element vector start address + ielementsize 0 +1 +2 +3 +4... +n-1 start address continuous memory block static, if size is known at compile time dynamic,
More informationMemory unit sees only the addresses, and not how they are generated (instruction counter, indexing, direct)
Memory Management 55 Memory Management Multitasking without memory management is like having a party in a closet. Charles Petzold. Programming Windows 3.1 Programs expand to fill the memory that holds
More informationSistemi Operativi. Lezione 25: JOS processes (ENVS) Corso: Sistemi Operativi Danilo Bruschi A.A. 2015/2016
Sistemi Operativi Lezione 25: JOS processes (ENVS) 1 JOS PCB (ENV) 2 env_status ENV_FREE: Indicates that the Env structure is inactive, and therefore on the env_free_list. ENV_RUNNABLE: Indicates that
More informationLecture 11 Doubly Linked Lists & Array of Linked Lists. Doubly Linked Lists
Lecture 11 Doubly Linked Lists & Array of Linked Lists In this lecture Doubly linked lists Array of Linked Lists Creating an Array of Linked Lists Representing a Sparse Matrix Defining a Node for a Sparse
More informationA binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
More informationSorting Algorithms. Nelson Padua-Perez Bill Pugh. Department of Computer Science University of Maryland, College Park
Sorting Algorithms Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park Overview Comparison sort Bubble sort Selection sort Tree sort Heap sort Quick sort Merge
More informationDATABASE DESIGN - 1DL400
DATABASE DESIGN - 1DL400 Spring 2015 A course on modern database systems!! http://www.it.uu.se/research/group/udbl/kurser/dbii_vt15/ Kjell Orsborn! Uppsala Database Laboratory! Department of Information
More informationBinary Heap Algorithms
CS Data Structures and Algorithms Lecture Slides Wednesday, April 5, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005 2009 Glenn G. Chappell
More informationChapter 12. Paging an Virtual Memory Systems
Chapter 12 Paging an Virtual Memory Systems Paging & Virtual Memory Virtual Memory - giving the illusion of more physical memory than there really is (via demand paging) Pure Paging - The total program
More informationJava's garbage-collected heap
Sponsored by: This story appeared on JavaWorld at http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html Java's garbage-collected heap An introduction to the garbage-collected heap of the Java
More informationADTs,, Arrays, Linked Lists
1 ADTs,, Arrays, Linked Lists Outline and Required Reading: ADTs ( 2.1.2) Arrays ( 1.5) Linked Lists ( 4.3.1, 4.3.2) COSC 2011, Fall 2003, Section A Instructor: N. Vlajic Abstract Data Type (ADT) 2 abstract
More informationThe V8 JavaScript Engine
The V8 JavaScript Engine Design, Implementation, Testing and Benchmarking Mads Ager, Software Engineer Agenda Part 1: What is JavaScript? Part 2: V8 internals Part 3: V8 testing and benchmarking What is
More informationUIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming 1 2 Foreword First of all, this book isn t really for dummies. I wrote it for myself and other kids who are on the team. Everything
More informationAnalysis of Binary Search algorithm and Selection Sort algorithm
Analysis of Binary Search algorithm and Selection Sort algorithm In this section we shall take up two representative problems in computer science, work out the algorithms based on the best strategy to
More informationData Structure [Question Bank]
Unit I (Analysis of Algorithms) 1. What are algorithms and how they are useful? 2. Describe the factor on best algorithms depends on? 3. Differentiate: Correct & Incorrect Algorithms? 4. Write short note:
More informationChapter 12 File Management
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 12 File Management Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Roadmap Overview File organisation and Access
More informationCOS 318: Operating Systems
COS 318: Operating Systems File Performance and Reliability Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall10/cos318/ Topics File buffer cache
More informationChapter 12 File Management. Roadmap
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 12 File Management Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Overview Roadmap File organisation and Access
More informationSemester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
More informationQuiz 4 Solutions EECS 211: FUNDAMENTALS OF COMPUTER PROGRAMMING II. 1 Q u i z 4 S o l u t i o n s
Quiz 4 Solutions Q1: What value does function mystery return when called with a value of 4? int mystery ( int number ) { if ( number
More informationGarbage Collection in the Java HotSpot Virtual Machine
http://www.devx.com Printed from http://www.devx.com/java/article/21977/1954 Garbage Collection in the Java HotSpot Virtual Machine Gain a better understanding of how garbage collection in the Java HotSpot
More information1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
More informationLINKED DATA STRUCTURES
LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference
More informationCS5460: Operating Systems
CS5460: Operating Systems Lecture 13: Memory Management (Chapter 8) Where are we? Basic OS structure, HW/SW interface, interrupts, scheduling Concurrency Memory management Storage management Other topics
More informationSegmentation and Fragmentation
Segmentation and Fragmentation Operating System Design MOSIG 1 Instructor: Arnaud Legrand Class Assistants: Benjamin Negrevergne, Sascha Hunold September 16, 2010 A. Legrand Segmentation and Fragmentation
More informationSample Questions Csci 1112 A. Bellaachia
Sample Questions Csci 1112 A. Bellaachia Important Series : o S( N) 1 2 N N i N(1 N) / 2 i 1 o Sum of squares: N 2 N( N 1)(2N 1) N i for large N i 1 6 o Sum of exponents: N k 1 k N i for large N and k
More informationHow to create/avoid memory leak in Java and.net? Venkat Subramaniam venkats@durasoftcorp.com http://www.durasoftcorp.com
How to create/avoid memory leak in Java and.net? Venkat Subramaniam venkats@durasoftcorp.com http://www.durasoftcorp.com Abstract Java and.net provide run time environment for managed code, and Automatic
More informationMemory management basics (1) Requirements (1) Objectives. Operating Systems Part of E1.9 - Principles of Computers and Software Engineering
Memory management basics (1) Requirements (1) Operating Systems Part of E1.9 - Principles of Computers and Software Engineering Lecture 7: Memory Management I Memory management intends to satisfy the following
More informationChapter 13. Chapter Outline. Disk Storage, Basic File Structures, and Hashing
Chapter 13 Disk Storage, Basic File Structures, and Hashing Copyright 2007 Ramez Elmasri and Shamkant B. Navathe Chapter Outline Disk Storage Devices Files of Records Operations on Files Unordered Files
More informationPersistent Binary Search Trees
Persistent Binary Search Trees Datastructures, UvA. May 30, 2008 0440949, Andreas van Cranenburgh Abstract A persistent binary tree allows access to all previous versions of the tree. This paper presents
More informationCS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we learned about the ADT Priority Queue. A
More informationPseudo code Tutorial and Exercises Teacher s Version
Pseudo code Tutorial and Exercises Teacher s Version Pseudo-code is an informal way to express the design of a computer program or an algorithm in 1.45. The aim is to get the idea quickly and also easy
More informationFile Management. Chapter 12
Chapter 12 File Management File is the basic element of most of the applications, since the input to an application, as well as its output, is usually a file. They also typically outlive the execution
More informationChapter 13. Disk Storage, Basic File Structures, and Hashing
Chapter 13 Disk Storage, Basic File Structures, and Hashing Chapter Outline Disk Storage Devices Files of Records Operations on Files Unordered Files Ordered Files Hashed Files Dynamic and Extendible Hashing
More informationroot node level: internal node edge leaf node CS@VT Data Structures & Algorithms 2000-2009 McQuain
inary Trees 1 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the root, which are disjoint from each
More informationLinked List Problems
Linked List Problems By Nick Parlante Copyright 1998-99, Nick Parlante Abstract This document presents 18 linked list problems covering a wide range of difficulty. Most obviously, these problems are useful
More informationChapter 12 File Management
Operating Systems: Internals and Design Principles Chapter 12 File Management Eighth Edition By William Stallings Files Data collections created by users The File System is one of the most important parts
More informationBiostatistics 615/815
Merge Sort Biostatistics 615/815 Lecture 8 Notes on Problem Set 2 Union Find algorithms Dynamic Programming Results were very ypositive! You should be gradually becoming g y g comfortable compiling, debugging
More informationOPERATING SYSTEMS MEMORY MANAGEMENT
OPERATING SYSTEMS MEMORY MANAGEMENT Jerry Breecher 8: Memory Management 1 OPERATING SYSTEM Memory Management What Is In This Chapter? Just as processes share the CPU, they also share physical memory. This
More informationExternal Sorting. Why Sort? 2-Way Sort: Requires 3 Buffers. Chapter 13
External Sorting Chapter 13 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Why Sort? A classic problem in computer science! Data requested in sorted order e.g., find students in increasing
More informationData Structures. Jaehyun Park. CS 97SI Stanford University. June 29, 2015
Data Structures Jaehyun Park CS 97SI Stanford University June 29, 2015 Typical Quarter at Stanford void quarter() { while(true) { // no break :( task x = GetNextTask(tasks); process(x); // new tasks may
More informationRecent Advances in Financial Planning and Product Development
Memory Management in Java and Ada Language for safety software development SARA HOSSEINI-DINANI, MICHAEL SCHWARZ & JOSEF BÖRCSÖK Computer Architecture & System Programming University Kassel Wilhelmshöher
More informationKrishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
More informationPhysical Data Organization
Physical Data Organization Database design using logical model of the database - appropriate level for users to focus on - user independence from implementation details Performance - other major factor
More informationChapter 7 Memory Management
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 7 Memory Management Patricia Roy Manatee Community College, Venice, FL 2008, Prentice Hall Memory Management Subdividing
More informationAngelika Langer www.angelikalanger.com. The Art of Garbage Collection Tuning
Angelika Langer www.angelikalanger.com The Art of Garbage Collection Tuning objective discuss garbage collection algorithms in Sun/Oracle's JVM give brief overview of GC tuning strategies GC tuning (2)
More informationCan interpreting be as fast as byte compiling? + Other developments in pqr
Can interpreting be as fast as byte compiling? + Other developments in pqr Radford M. Neal, University of Toronto Dept. of Statistical Sciences and Dept. of Computer Science http://www.cs.utoronto.ca/
More informationLecture 1: Data Storage & Index
Lecture 1: Data Storage & Index R&G Chapter 8-11 Concurrency control Query Execution and Optimization Relational Operators File & Access Methods Buffer Management Disk Space Management Recovery Manager
More informationDATA STRUCTURE - STACK
DATA STRUCTURE - STACK http://www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm Copyright tutorialspoint.com A stack is an abstract data type ADT, commonly used in most programming
More informationCopyright 2007 Ramez Elmasri and Shamkant B. Navathe. Slide 13-1
Slide 13-1 Chapter 13 Disk Storage, Basic File Structures, and Hashing Chapter Outline Disk Storage Devices Files of Records Operations on Files Unordered Files Ordered Files Hashed Files Dynamic and Extendible
More informationStorage in Database Systems. CMPSCI 445 Fall 2010
Storage in Database Systems CMPSCI 445 Fall 2010 1 Storage Topics Architecture and Overview Disks Buffer management Files of records 2 DBMS Architecture Query Parser Query Rewriter Query Optimizer Query
More informationUnit 1. 5. Write iterative and recursive C functions to find the greatest common divisor of two integers. [6]
Unit 1 1. Write the following statements in C : [4] Print the address of a float variable P. Declare and initialize an array to four characters a,b,c,d. 2. Declare a pointer to a function f which accepts
More informationBuilding Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
More informationThe Advantages and Disadvantages of Network Computing Nodes
Big Data & Scripting storage networks and distributed file systems 1, 2, in the remainder we use networks of computing nodes to enable computations on even larger datasets for a computation, each node
More informationWrite Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, rinard@lcs.mit.edu ABSTRACT We present
More informationAlgorithms and Data Structures Exercise for the Final Exam (17 June 2014) Stack, Queue, Lists, Trees, Heap
Algorithms and Data Structures Exercise for the Final Exam (17 June 2014) Stack, Queue, Lists, Trees, Heap Singly linked list (1) Data about exam results are stored into a singly linked list. Each list
More informationLecture 6: Binary Search Trees CSCI 700 - Algorithms I. Andrew Rosenberg
Lecture 6: Binary Search Trees CSCI 700 - Algorithms I Andrew Rosenberg Last Time Linear Time Sorting Counting Sort Radix Sort Bucket Sort Today Binary Search Trees Data Structures Data structure is a
More informationAdvanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz Michel.Schinz@epfl.ch Assistant: Iulian Dragos INR 321, 368 64
More informationrecursion, O(n), linked lists 6/14
recursion, O(n), linked lists 6/14 recursion reducing the amount of data to process and processing a smaller amount of data example: process one item in a list, recursively process the rest of the list
More informationChapter 13 Disk Storage, Basic File Structures, and Hashing.
Chapter 13 Disk Storage, Basic File Structures, and Hashing. Copyright 2004 Pearson Education, Inc. Chapter Outline Disk Storage Devices Files of Records Operations on Files Unordered Files Ordered Files
More informationData Structures Fibonacci Heaps, Amortized Analysis
Chapter 4 Data Structures Fibonacci Heaps, Amortized Analysis Algorithm Theory WS 2012/13 Fabian Kuhn Fibonacci Heaps Lacy merge variant of binomial heaps: Do not merge trees as long as possible Structure:
More informationCS106A, Stanford Handout #38. Strings and Chars
CS106A, Stanford Handout #38 Fall, 2004-05 Nick Parlante Strings and Chars The char type (pronounced "car") represents a single character. A char literal value can be written in the code using single quotes
More information6. Storage and File Structures
ECS-165A WQ 11 110 6. Storage and File Structures Goals Understand the basic concepts underlying different storage media, buffer management, files structures, and organization of records in files. Contents
More informationChapter 14 The Binary Search Tree
Chapter 14 The Binary Search Tree In Chapter 5 we discussed the binary search algorithm, which depends on a sorted vector. Although the binary search, being in O(lg(n)), is very efficient, inserting a
More informationLinked Lists Linked Lists, Queues, and Stacks
Linked Lists Linked Lists, Queues, and Stacks CSE 10: Introduction to C Programming Fall 200 Dynamic data structure Size is not fixed at compile time Each element of a linked list: holds a value points
More informationKeil C51 Cross Compiler
Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation
More informationMemory Management Outline. Background Swapping Contiguous Memory Allocation Paging Segmentation Segmented Paging
Memory Management Outline Background Swapping Contiguous Memory Allocation Paging Segmentation Segmented Paging 1 Background Memory is a large array of bytes memory and registers are only storage CPU can
More informationRaima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
More informationOutput: 12 18 30 72 90 87. struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;
50 20 70 10 30 69 90 14 35 68 85 98 16 22 60 34 (c) Execute the algorithm shown below using the tree shown above. Show the exact output produced by the algorithm. Assume that the initial call is: prob3(root)
More informationAccurate and Efficient Object Tracing for Java Applications
Accurate and Efficient Object Tracing for Java Applications Philipp Lengauer 1 Verena Bitto 2 Hanspeter Mössenböck 1 1 Institute for System Software 2 Christian Doppler Laboratory MEVSS Johannes Kepler
More informationPrevious Lectures. B-Trees. External storage. Two types of memory. B-trees. Main principles
B-Trees Algorithms and data structures for external memory as opposed to the main memory B-Trees Previous Lectures Height balanced binary search trees: AVL trees, red-black trees. Multiway search trees:
More informationRecursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD
1 Slides 1. Table of Contents 2. Definitions 3. Simple 4. Recursive Execution Trace 5. Attributes 6. Recursive Array Summation 7. Recursive Array Summation Trace 8. Coding Recursively 9. Recursive Design
More informationEmbedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
More information