What happens to program when it accesses kernel space -
i have read user space , kernel space , how program's execution path can bring user space kernel space, suppose example of if program runs this
poco::net::socketaddress sender; char buffer[64000]; . . . socket.receivefrom(buffer, sizeof(buffer), sender); since call requires accessing network card, think should go kernel space.
my question is: happens program makes socket.receivefrom(...) call
- does thread go sleep , give core since going kernel space , gets woken when char buffer has been written
- does thread go directly kernel space , come user space after writing char buffer
no. thread goes execute kernel code, @ kernel-permissions (ring 0 in x86). thread might go "sleep" (i.e. cpu might go , execute different program, or go idle, depends on scheduler decides) inside kernel. however, might not go sleep @ all, if, example, data available network card. user perspective, know when call returns have data in buffer, , might expect call take while.
it depends on scheduler. might interrupt @ time , execute else. generally, yes, go kernel , back.
Comments
Post a Comment