From 371a782cd09a6f0c7f9f99cf336351635c6fa7c9 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Tue, 21 Feb 2017 12:50:59 +0100 Subject: Drop physical memory management project it was basically done by Richard --- .../project_ideas/physical_memory_management.mdwn | 51 ---------------------- 1 file changed, 51 deletions(-) delete mode 100644 community/gsoc/project_ideas/physical_memory_management.mdwn (limited to 'community/gsoc/project_ideas/physical_memory_management.mdwn') diff --git a/community/gsoc/project_ideas/physical_memory_management.mdwn b/community/gsoc/project_ideas/physical_memory_management.mdwn deleted file mode 100644 index 1bb6a760..00000000 --- a/community/gsoc/project_ideas/physical_memory_management.mdwn +++ /dev/null @@ -1,51 +0,0 @@ -[[!meta copyright="Copyright © 2015, 2016 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -[[!meta title="Physical memory management"]] - -GNU Mach is currently suffering from severe limitations caused by the way -it manages physical memory. For example, since it requires pages to be mapped -in kernel space in order to be used, the maximum amount of usable physical -memory is currently around 800MB (or 1.8GB if a 2/2 split is set). And -because the page allocator is unable to easily return blocks of contiguous -pages, the kernel has to use virtual memory to provide contiguity. -But the kernel virtual space is separate from the direct mapping of -physical memory, so the larger it is, the less physical pages available. -The size of the kernel space is currently around 200MB, with around 100MB -for kernel objects. This small size prevents the system from achieving -scalability, since a panic occurs when the kernel is unable to allocate -a kernel object such as a port. In addition, the kernel uses mainly tables -to store IPC rights. When a table is full, it is enlarged through a kernel -specific version of realloc(). When a file system starts managing many -files (e.g. because some of their content is cached in physical memory), -these tables can get big enough to make realloc() fail because of -fragmentation. - -The goal of this project is to make as much physical memory available as -possible for both the kernel and applications, by rewriting the page -allocator into a buddy allocator to support contiguous block allocations, -using it directly instead of virtual memory as the backend of the slab -allocator for kernel objects, and, if time allows it, transform IPC right -tables (e.g. into radix trees) and get rid of realloc(). - -This project requires a good understanding of virtual memory (both physical -mappings at the MMU level and virtual mappings at the VM level), and strong -skills in C programming. Note that some work has already been done in the -X15 project about this, and can be reused as a reference. - -Useful links : - - * - - * - - * - -Possible mentors: Richard Braun -- cgit v1.2.3