PURE Mid-Progress Report

Slides:



Advertisements
Similar presentations
Dynamic Memory Management
Advertisements

Memory Management Chapter 7.
KERNEL MEMORY ALLOCATION Unix Internals, Uresh Vahalia Sowmya Ponugoti CMSC 691X.
Fixed/Variable Partitioning
Memory Management Chapter 7. Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated efficiently to pack as.
Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable supply of ready processes to.
Allocating Memory.
Chapter 7 Memory Management
Chapter 7 Memory Management Operating Systems: Internals and Design Principles, 6/E William Stallings Dave Bremer Otago Polytechnic, N.Z. ©2009, Prentice.
Memory Management Chapter 7. Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated efficiently to pack as.
Dynamic memory allocation and fragmentation Seminar on Network and Operating Systems Group II.
Memory Management Memory Areas and their use Memory Manager Tasks:
Multiprocessing Memory Management
Chapter 3.1 : Memory Management
CS 280 Data Structures Professor John Peterson. Project Questions?
Memory Management Chapter 7 B.Ramamurthy. Memory Management Subdividing memory to accommodate multiple processes Memory needs to allocated efficiently.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
Memory Management Chapter 5.
CS 280 Data Structures Professor John Peterson. Project Questions? /CIS280/f07/project5http://wiki.western.edu/mcis/index.php.
Chapter 5: Memory Management Dhamdhere: Operating Systems— A Concept-Based Approach Slide No: 1 Copyright ©2005 Memory Management Chapter 5.
Computer Organization and Architecture
Memory Management Five Requirements for Memory Management to satisfy: –Relocation Users generally don’t know where they will be placed in main memory May.
1 Chapter 3.1 : Memory Management Storage hierarchy Storage hierarchy Important memory terms Important memory terms Earlier memory allocation schemes Earlier.
1 Lecture 8: Memory Mangement Operating System I Spring 2008.
Tutorial 6 Memory Management
Real-Time Concepts for Embedded Systems Author: Qing Li with Caroline Yao ISBN: CMPBooks.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 8: Main Memory.
Memory Management Chapter 7.
Dynamic Partition Allocation Allocate memory depending on requirements Partitions adjust depending on memory size Requires relocatable code –Works best.
1 Memory Management Memory Management COSC513 – Spring 2004 Student Name: Nan Qiao Student ID#: Professor: Dr. Morteza Anvari.
1 CMSC421: Principles of Operating Systems Nilanjan Banerjee Principles of Operating Systems Acknowledgments: Some of the slides are adapted from Prof.
Chapter 4 Memory Management.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
1 Advanced Memory Management Techniques  static vs. dynamic kernel memory allocation  resource map allocation  power-of-two free list allocation  buddy.
The buddy memory allocation algorithm Παρουσίαση : Δρ. Αναγνωστό π ουλος Χρήστος.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
Operating Systems Security
Swap Space and Other Memory Management Issues Operating Systems: Internals and Design Principles.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Memory Management Overview.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Mono an multiprogramming.
CS 241 Discussion Section (2/9/2012). MP2 continued Implement malloc, free, calloc and realloc Reuse free memory – Sequential fit – Segregated fit.
CS 241 Discussion Section (12/1/2011). Tradeoffs When do you: – Expand Increase total memory usage – Split Make smaller chunks (avoid internal fragmentation)
MEMORY MANAGEMENT Operating System. Memory Management Memory management is how the OS makes best use of the memory available to it Remember that the OS.
2010INT Operating Systems, School of Information Technology, Griffith University – Gold Coast Copyright © William Stallings /2 Memory Management.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Memory management The main purpose of a computer system is to execute programs. These programs, together with the data they access, must be in main memory.
Memory Management One of the most important OS jobs.
Memory Management Chapter 7.
Chapter 7 Memory Management
Chapter 17 Free-Space Management
Memory Management Chapter 7.
Memory Management Memory Areas and their use Memory Manager Tasks:
Chapter 2: The Linux System Part 4
Partitioned Memory Allocation
William Stallings Computer Organization and Architecture
I/O Resource Management: Software
Memory Management Memory Areas and their use Memory Manager Tasks:
Chapter 8: Main Memory.
So far… Text RO …. printf() RW link printf Linking, loading
Main Memory Background Swapping Contiguous Allocation Paging
Memory Management Tasks
Chapter 8: Memory management
Lecture 3: Main Memory.
Operating System Chapter 7. Memory Management
Memory Management (1).
Chapter 8: Memory Management strategies
Memory Management Memory Areas and their use Memory Manager Tasks:
Presentation transcript:

PURE Mid-Progress Report Ranran Li, Priya Mehta Mentor: Nathan Dautenhahn

PerspicuOS The nested kernel is the architecture for an operating system, in which two levels of privilege exist. PerspicuOS is the prototype of this system and was created by modifying FreeBSD 9.0. The MMU is separate from the rest of the kernel in order to allow for these different privilege levels. So the problem that we are dealing with at a high level is that existing monolithic kernels trust a very large set of code, which has been shown susceptible to attack. The nested kernel seeks to reduce the trusted computing base (TCB) of the system so that the amount of trusted and potentially vulnerable code is greatly reduced.

Buddy Allocator The buddy allocator works by dividing memory into partitions based on given memory requests. Each block of memory has a specific order, ranging from 0 to an upper limit. When a larger block of memory is split, it becomes two smaller equally-divided blocks, which are considered to be "buddies" of each other. A block that is split can only merge with its “buddy” if both are free and can be merged back into a larger block.

Necessity of Buddy Allocator in PerspicuOS Because PerspicuOS is isolated from the operating system it must manage its own internal memory, and the current implementation does not have a dynamic memory allocator. The specific benefit is that we will be able to reclaim memory efficiently in both space and time, but more importantly, we will be able to dynamically grow the region of space available to PerspicuOS for protecting memory in the overall system.

What we have learned and done so far First, we completed a git tutorial. We’ve learned the basics of git, including push, pull, etc. We use github to share all of our code and documents. Then we learned about the buddy memory allocator which is going to be used within the PerspicuOS nested kernel. The nested kernel buddy allocator will have three functional interfaces: initialize, allocate, and free. To initialize, we have two linked lists of metadata on the stack to keep track of the freed and used memory. To allocate, we divide the big memory block in half until we find the best fit size, then alloc memory into that block.To free, we’ll merge the free block with its freed buddy to create a bigger free memory block. Diagram: We have a skeleton of the code which will support the above functionalities.

What needs to be done next We are going to choose an implementation for our code. We are going to choose a specific data structure, either binary tree or linked lists. After that, we will decide what will be the upper and lower bound for size of the memory block in our buddy allocator. Once this is done, we will finish coding the buddy allocator and implement it into the nested kernel.