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

  1. does thread go sleep , give core since going kernel space , gets woken when char buffer has been written
  2. does thread go directly kernel space , come user space after writing char buffer

  1. 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.

  2. it depends on scheduler. might interrupt @ time , execute else. generally, yes, go kernel , back.


Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -