OSDev.org
https://forum.osdev.org/

In what order should I work on memory?
https://forum.osdev.org/viewtopic.php?f=15&t=36834
Page 1 of 1

Author:  mrjbom [ Tue Jun 02, 2020 2:39 pm ]
Post subject:  In what order should I work on memory?

Hi.
I fully understand the order in which to implement some parts in my 32-bit core.
My goal now is to add multitasking.
I found the article "kernel multitasking"

The requirements have page paging.
But I don't know if I have everything I need before implementing paging.
I don't have any virtual memory right now.

At the moment I manage my physical memory like this:
I divide all physical memory into 4096-byte pages. And I make them out if I have to.
Now I need to make a virtual memory? Only then do you start multitasking?
In what order do I need to implement something?

Thanks.

Author:  Octocontrabass [ Wed Jun 03, 2020 12:44 am ]
Post subject:  Re: In what order should I work on memory?

It's a good idea to have virtual memory management working before you try to implement multitasking.

Author:  Octacone [ Wed Jun 03, 2020 11:29 am ]
Post subject:  Re: In what order should I work on memory?

mrjbom wrote:
I found the article "kernel multitasking"


That article is crap! Don't use it, also never do assembly task switching in C code like shown in that tutorial!
Here is a proper one: https://wiki.osdev.org/Brendan%27s_Multi-tasking_Tutorial

Author:  thewrongchristian [ Wed Jun 03, 2020 11:54 am ]
Post subject:  Re: In what order should I work on memory?

mrjbom wrote:
Hi.
I fully understand the order in which to implement some parts in my 32-bit core.
My goal now is to add multitasking.
I found the article "kernel multitasking"

The requirements have page paging.
But I don't know if I have everything I need before implementing paging.
I don't have any virtual memory right now.

At the moment I manage my physical memory like this:
I divide all physical memory into 4096-byte pages. And I make them out if I have to.
Now I need to make a virtual memory? Only then do you start multitasking?
In what order do I need to implement something?

Thanks.


You don't need virtual memory to implement multi-tasking. Lots of kernels have only a single address space with multiple threads of execution.

But, paging does enable a whole host of other features, not least the ability to have multiple address spaces, to provide a protection domain to allow independent, isolated processes, as well as releasing you from the shackles of physical memory layout and size.

Paging is just the mapping from a linear virtual address space to a potentially non-linear physical address space. Virtual memory can be facilitated by paging, but you can also implement paging without having virtual memory, and indeed, UNIX/32V (the port of V7 UNIX to the DEC VAX) is an example of an OS using the paging hardware, but not using paging to implement virtual memory.

Author:  8infy [ Wed Jun 03, 2020 1:29 pm ]
Post subject:  Re: In what order should I work on memory?

Octacone wrote:
mrjbom wrote:
I found the article "kernel multitasking"


That article is crap! Don't use it, also never do assembly task switching in C code like shown in that tutorial!
Here is a proper one: https://wiki.osdev.org/Brendan%27s_Multi-tasking_Tutorial


How do I find more hidden gems like this one? Searching the wiki yields nothing useful at all...

Author:  mrjbom [ Thu Jun 04, 2020 2:29 am ]
Post subject:  Re: In what order should I work on memory?

Octacone wrote:
mrjbom wrote:
I found the article "kernel multitasking"


That article is crap! Don't use it, also never do assembly task switching in C code like shown in that tutorial!
Here is a proper one: https://wiki.osdev.org/Brendan%27s_Multi-tasking_Tutorial


Wow, it looks much better. It's too bad I haven't seen him before! Thanks!

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/