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.
In what order should I work on memory?
-
- Member
- Posts: 5568
- Joined: Mon Mar 25, 2013 7:01 pm
Re: In what order should I work on memory?
That article is crap! Don't use it, also never do assembly task switching in C code like shown in that tutorial!mrjbom wrote: I found the article "kernel multitasking"
Here is a proper one: https://wiki.osdev.org/Brendan%27s_Mult ... g_Tutorial
OS: Basic OS
About: 32 Bit Monolithic Kernel Written in C++ and Assembly, Custom FAT 32 Bootloader
About: 32 Bit Monolithic Kernel Written in C++ and Assembly, Custom FAT 32 Bootloader
-
- Member
- Posts: 426
- Joined: Tue Apr 03, 2018 2:44 am
Re: In what order should I work on memory?
You don't need virtual memory to implement multi-tasking. Lots of kernels have only a single address space with multiple threads of execution.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.
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.
Re: In what order should I work on memory?
How do I find more hidden gems like this one? Searching the wiki yields nothing useful at all...Octacone wrote:That article is crap! Don't use it, also never do assembly task switching in C code like shown in that tutorial!mrjbom wrote: I found the article "kernel multitasking"
Here is a proper one: https://wiki.osdev.org/Brendan%27s_Mult ... g_Tutorial
Re: In what order should I work on memory?
Wow, it looks much better. It's too bad I haven't seen him before! Thanks!Octacone wrote:That article is crap! Don't use it, also never do assembly task switching in C code like shown in that tutorial!mrjbom wrote: I found the article "kernel multitasking"
Here is a proper one: https://wiki.osdev.org/Brendan%27s_Mult ... g_Tutorial