1
00:00:00,510 --> 00:00:03,100
 So control transfer in a fully virtualized

2
00:00:03,100 --> 00:00:06,490
 setting happens implicitly from the guest to

3
00:00:06,490 --> 00:00:09,680
 the hypervisor. How? When the guest operating

4
00:00:09,680 --> 00:00:14,900
 system executes any privileged instruction. Because it

5
00:00:14,900 --> 00:00:21,150
 thinks it can do it, it'll result in a trap and hypervisor will catch it.

6
00:00:21,150 --> 00:00:25,770
 And then do the appropriate thing. That's how control is transferred from the

7
00:00:25,770 --> 00:00:28,960
 guest to the hypervisor implicitly. And in

8
00:00:28,960 --> 00:00:32,470
 the other direction, control transfer happens as

9
00:00:32,470 --> 00:00:35,150
 we already mentioned, via software interrupts or

10
00:00:35,150 --> 00:00:38,330
 events, from the hypervisor to the guest. In

11
00:00:38,330 --> 00:00:41,480
 a para virtualized setting, the control transfer.

12
00:00:41,480 --> 00:00:45,480
 Happen explicitly via hypercalls from the guest into

13
00:00:45,480 --> 00:00:50,850
 the hypervisor. I gave the you the example of page table updates that the guest

14
00:00:50,850 --> 00:00:52,780
 operating system may want to communicate to

15
00:00:52,780 --> 00:00:55,240
 the hypervisor through the API calls. When it

16
00:00:55,240 --> 00:00:59,440
 executes the API call corresponding to that, that

17
00:00:59,440 --> 00:01:04,050
 results in control transfer from the guest into

18
00:01:04,050 --> 00:01:06,870
 the hypervisor. And similar to the full

19
00:01:06,870 --> 00:01:10,280
 virtualization case In para virtualization, in the other

20
00:01:10,280 --> 00:01:12,870
 direction, that is, going from the hypervisor to

21
00:01:12,870 --> 00:01:15,810
 the guest, it is done through software interrupts.

22
00:01:15,810 --> 00:01:18,580
 So that's how control transfer is handled

23
00:01:18,580 --> 00:01:20,790
 in both the fully virtualized and paravirtualized

24
00:01:20,790 --> 00:01:24,830
 environments. The additional facility that you have

25
00:01:24,830 --> 00:01:28,730
 in a paravirtualized environment Is the fact that,

26
00:01:28,730 --> 00:01:31,830
 the guest has control, via hypercalls on

27
00:01:31,830 --> 00:01:35,030
 when event notifications need to be delivered, in

28
00:01:35,030 --> 00:01:37,620
 the case of full virtualization, since the

29
00:01:37,620 --> 00:01:41,480
 operating system is unaware of the existence of

30
00:01:41,480 --> 00:01:44,610
 the hypervisor, events are going to be delivered

31
00:01:44,610 --> 00:01:47,170
 as and when they occur, by the hypervisor

32
00:01:47,170 --> 00:01:50,025
 to the guest. But in a para virtualization

33
00:01:50,025 --> 00:01:55,390
 [INAUDIBLE]. The guest, via hypercalls, can indicate to the

34
00:01:55,390 --> 00:01:58,120
 hypervisor that leave me alone don't send me

35
00:01:58,120 --> 00:02:00,670
 any event notifications now or it can say

36
00:02:00,670 --> 00:02:01,830
 now is a good time to send me

37
00:02:01,830 --> 00:02:06,690
 event notifications. So that level of control exists in

38
00:02:06,690 --> 00:02:09,360
 a paravirtualized environment, which doesn't exist in a

39
00:02:09,360 --> 00:02:11,670
 full virtualized environment. So this is sort of

40
00:02:11,670 --> 00:02:15,950
 similar to an operating system disabling interrupts. That's

41
00:02:15,950 --> 00:02:18,620
 exactly the same facility that's available in a

42
00:02:18,620 --> 00:02:21,930
 para virtualized environment at the granularity of the

43
00:02:21,930 --> 00:02:25,540
 operating system. The operating system can say that

44
00:02:25,540 --> 00:02:27,750
 I don't want any event notifications. I'll come

45
00:02:27,750 --> 00:02:27,750
 ask you when I need some event notifications.


