At the Step 1 I already got stuck. The problem is, though, I don't exactly understand this part:
The task's informations are like the page directory and the kernel stack top.Once you've created an initial data structure for keeping track of a task's information; create an "initialise_multitasking()" function. The idea here (initially) is that there's already a task that has been running since boot, and you only need to create the information for it by allocating some memory for the task's information structure that you just created and setting the fields in that structure as appropriate.
I have a question for both of them:
1 - Using recursive paging, this will always be 0xFFFFF000 or the address pointed by it?
2 - Do I have to allocate a new block from the kernel heap for this or I just use the value of esp?
This are for the first process, but can be helpful if you want to share something on creating a new one... even if I think that the tutorial will talk about this.