WEBVTT 1 00:01:34.050 --> 00:01:40.590 William Cheng: Hello. Welcome to the live Lecture eight. On June 12 2020 2 00:01:42.060 --> 00:01:46.800 William Cheng: Anybody has any question please feel free to unmute the microphone. 3 00:01:52.560 --> 00:01:52.860 William Cheng: Morning. 4 00:01:53.790 --> 00:01:59.520 Hardik Mahipal Surana: I had a question not in this respect to the lecture but LOOKS LIKE TO THE ASSIGNMENT, THE LAW. Sure. 5 00:02:00.060 --> 00:02:02.910 Hardik Mahipal Surana: So I'm actually entering into a case where 6 00:02:04.110 --> 00:02:12.720 Hardik Mahipal Surana: Once I press Control see my monitoring that does all of the tasks that were mentioned in the discussion slides and I tried 7 00:02:13.260 --> 00:02:29.880 Hardik Mahipal Surana: In the end I broadcast all of the server threads and in the summertime. Once I broadcast my my thread comes out of the condition variable queue and then it checks for the global flag which was said. And at that point, when 8 00:02:31.980 --> 00:02:39.990 Hardik Mahipal Surana: The controls. He was not pressed it starts, you know, removing a packet from Q2. And then when controls I press Control see before. 9 00:02:40.530 --> 00:02:50.100 Hardik Mahipal Surana: I run the score up my my global flag SAYS THAT SHANNON has not been initiated and after I do the check. Then controls. He gets pressed. So I'm in the middle of 10 00:02:50.700 --> 00:02:58.740 Hardik Mahipal Surana: Trying to remove a packet from Q2, but at this stage, since controls. He has been pressed, I shouldn't be removing the package from you today. So 11 00:02:58.920 --> 00:03:06.420 William Cheng: So that's why in the control C catching threat as soon as you return from from Sig. Wait, you should lock them he attacks. 12 00:03:07.230 --> 00:03:08.040 Hardik Mahipal Surana: I am doing 13 00:03:08.910 --> 00:03:18.000 William Cheng: Well, so in that case, if the server has the new tax law, then the control see catching threat they will block or mutates me tatlock right 14 00:03:19.230 --> 00:03:19.740 Hardik Mahipal Surana: Years. 15 00:03:20.940 --> 00:03:26.910 Hardik Mahipal Surana: So I'm actually getting some segmentation fault issues because I'm trying to access a packet from Q2. 16 00:03:30.390 --> 00:03:32.640 William Cheng: You only do that if you have the new tax law. 17 00:03:32.790 --> 00:03:33.870 Hardik Mahipal Surana: Right. Yes. 18 00:03:34.440 --> 00:03:36.210 William Cheng: So in that case, there should be no conflict. 19 00:03:37.680 --> 00:03:54.840 Hardik Mahipal Surana: I do. Ideally, yes, but I don't understand why I'm facing that issue. I'm getting a few segmentation falls and I tried using GDP to understand where that is happening and it shows me points where I'm trying to reference a pointer from the packet 20 00:03:56.400 --> 00:04:03.120 William Cheng: Right, so, so, so either you unlock the new attacks when you're not supposed to, or you have a memory corruption bug somewhere. 21 00:04:03.900 --> 00:04:12.900 William Cheng: That cause something were to happen, right. Because once you have memory corruption bugs and all kinds of weird stuff can happen. So you got to make sure that you're not doing something that will corrupt memory. 22 00:04:13.920 --> 00:04:23.010 William Cheng: But, but then in that case, I mean, you know, what's important is to understand how this works. Right. You know, if you have the new time slot. That means that no other thick and get the new tax. 23 00:04:24.120 --> 00:04:33.570 William Cheng: Right. So if you have the new time slot and another another threat apparently looks like it has the new tags. Well, then that means that something is wrong with your address space. 24 00:04:35.070 --> 00:04:39.090 William Cheng: Okay, so, so if that actually can happen. That means that there's a memory corruption bug. 25 00:04:40.470 --> 00:04:50.370 William Cheng: Okay at the other possibility is that that's not happening. But it looks like it's happening, you know, then then again you have to debug your code to find out how. How can something like that happen. 26 00:04:53.970 --> 00:05:02.160 William Cheng: Right, I mean Debugging is not, there's really no fixed procedure, but this is how you debug it and you'll find all your bugs on if there's a procedure like that there will be no bugs. 27 00:05:03.660 --> 00:05:09.690 William Cheng: Okay, so what you need to do is that you need to, you know, he says, the first of all you need to find out exactly where your program crashed. 28 00:05:10.470 --> 00:05:21.360 William Cheng: Okay, so, so if you, you know, if you're saying that you feel if your server threat wakes up from the pizza, pizza, a new tags. Sorry. Peter condition. Wait. 29 00:05:21.960 --> 00:05:28.020 William Cheng: Right, so, so what's what's important to understand is that before you call pizza condition where you have to be that slot. 30 00:05:28.710 --> 00:05:37.830 William Cheng: Right. So, what you call Peter condition way now temporarily, you're going to have the pieces, you're going to have to meet as a lot. But as soon as the Peter condition where return. You have to be tax law. 31 00:05:39.510 --> 00:05:47.640 William Cheng: Okay, so if you made a programming mistake and you know, then you, you then you don't call Peter a condition where you have the new tax law. Well, then that will be a problem. 32 00:05:48.540 --> 00:05:53.520 William Cheng: Okay, but if you, you know, it says there's remember that the rest of people pleaser condition way is 33 00:05:54.030 --> 00:06:04.650 William Cheng: Piece of effects not why not guard piece recognition way so you have to record like that. So in this case, where you copies are conditional way. You know, you must have the music's loud. So therefore, when Peter condition were returned. You still have the meantime. 34 00:06:05.880 --> 00:06:11.190 William Cheng: If you have the music's loud and no other thread can, you know, can, can, can only view tax credit. 35 00:06:11.610 --> 00:06:22.920 Hardik Mahipal Surana: So ideally, once we wake up from the condition variable and we have the new tax law again at that stage, since we have the mutations. We just need to check the global flag once and then 36 00:06:24.600 --> 00:06:27.300 Hardik Mahipal Surana: Check whether the packet. There is a packet being serviced or 37 00:06:28.260 --> 00:06:44.490 William Cheng: No, no, no. The cold look like this right piece it. Okay, so, so let me do this right piece of me. That's okay so so so piece I mean tatlock right, wow, while nod guard right P thread condition. Wait, right. 38 00:06:46.140 --> 00:06:51.000 William Cheng: So, so what is this God right then this guard in the, I think in the warm up to 39 00:06:52.020 --> 00:06:57.540 William Cheng: In the warm up to FAQ, it shows you that, you know, Q2 is 40 00:06:59.820 --> 00:07:03.090 William Cheng: A future is empty, and it's not time to quit right 41 00:07:04.680 --> 00:07:15.780 William Cheng: Okay, so, so the the the scenarios that you know the the scenario that you have is that Q2 is not empty right so Q2 is not empty, then that they even jump out of the infinite loop right 42 00:07:17.010 --> 00:07:23.190 William Cheng: Yes, right. So if you jump out of the infinite loop. The first thing you still have to do is to check if Control C has been pressed 43 00:07:25.800 --> 00:07:30.750 William Cheng: Yes, right. Because if Control C has been pressed, you must not, you know, secure package so so it 44 00:07:32.220 --> 00:07:41.640 William Cheng: Says if right if you are, you know, if you have to quit. Why, in that case, you have to, you have to, you know, basically a long commute acts and just get out right 45 00:07:44.010 --> 00:07:49.140 William Cheng: Okay but but otherwise. Otherwise, if you reach your it must mean that your QQ is not empty, right. 46 00:07:50.490 --> 00:08:04.050 William Cheng: Yes wife cuter is not empty, and then when he said a DQ the pack of on Q2. Because at this point, you have the new tax law, if you will, if you put a defect, apart from Q2 and you get a segmentation ball. Well, that means that you, you have a blog somewhere else. 47 00:08:05.280 --> 00:08:11.910 William Cheng: Because how could it be that Q2 is not is not empty, and when you DQ a packet, you're gonna get a segmentation ball that's not possible. 48 00:08:13.290 --> 00:08:15.150 William Cheng: Unless you have a bug. Great. 49 00:08:15.240 --> 00:08:18.900 Hardik Mahipal Surana: I am emptying both q1 and q2. Before I broadcast the so 50 00:08:20.700 --> 00:08:21.450 William Cheng: Why would you do that. 51 00:08:23.400 --> 00:08:24.000 Hardik Mahipal Surana: Because 52 00:08:24.030 --> 00:08:28.020 William Cheng: We need you. I will. Are you talking about the coat we press Control. See, yes. 53 00:08:28.440 --> 00:08:30.690 William Cheng: Yeah so. So again, my recommendation. 54 00:08:31.800 --> 00:08:37.410 William Cheng: My recommendation. Okay. You don't need to follow that. But my recommendation is that what you've press Control see right 55 00:08:38.280 --> 00:08:51.900 William Cheng: You know, you, you. What will you return from Subway you locked me tags you can sell your rivals where you could cancel the packets of that and then you said you said a global variable to say it's time to quit or you broadcast the CV and you unlock the new tax yourself terminate. 56 00:08:53.670 --> 00:09:09.150 William Cheng: Okay, leave all the packets in Q1, Q2. I keep posting this empty in the class, we will go, I said that, you know, my recommendation is that the main threat will be the one that remove all those packets. Okay, well, what, why is that a better, better, better way 57 00:09:12.210 --> 00:09:12.750 William Cheng: I mean, 58 00:09:14.190 --> 00:09:18.450 Hardik Mahipal Surana: I think because once we cancel the package to concerts and so what 59 00:09:19.320 --> 00:09:35.310 Hardik Mahipal Surana: If that currently servicing a packet. Then once the model of the control see catching thread exists, then we know for a fact that we have initiated the cancer for the packet and to concerts and then the remaining package already in the kids need to be remote to the main thread can 60 00:09:36.270 --> 00:09:48.240 William Cheng: My logic is actually simpler right you know the die. This is that your main thread create those fourth way john with all those four threads. OK. So now when you try to remove Haggis on q1 and q2. There's no other thread running right 61 00:09:49.020 --> 00:10:01.500 William Cheng: Yes. So, therefore, you don't have to worry about. You don't even have to log the new tax if you don't want to write because because all the other thread, they're not, you know, I know you know up because no other side is adding packet or removing packet 62 00:10:04.050 --> 00:10:10.980 William Cheng: So, so you know again inside, Control C catching threat if you want to remove all the packet, that's fine, because you have the new tax law. You can do it, do all that. 63 00:10:11.370 --> 00:10:22.170 William Cheng: Okay, then in that case, when you remove the packet. Okay. Is that a contrasting that with the new tax law, then it's not possible for the server to be removing a packet. At the same time, right. 64 00:10:23.910 --> 00:10:30.390 William Cheng: Because you have the music loud. Yes. So you must have a bug somewhere, you just need to see if you just need to find the bug. Okay. Okay. 65 00:10:30.870 --> 00:10:37.560 William Cheng: Right, so, so sometimes talking about can be very, very tricky and it can be very time consuming and sometimes one bug will take one or two days to debug. 66 00:10:37.950 --> 00:10:49.020 William Cheng: I mean, that's another reason you know I want people to, you know, to try to get through to submit the assignment early. So this way, just in case you have a nasty bug, they will take you one or two days to debug and then that can still happen. 67 00:10:51.240 --> 00:10:53.760 Hardik Mahipal Surana: Sure, I can go to position. 68 00:10:54.060 --> 00:11:04.260 William Cheng: Yeah, so, so, yeah. So when you try to debug it again. So how do you develop the program it but we, you know, for you to give up the program. First you have to make predictions, right. Yep. Say, I think this is what's going to happen. 69 00:11:05.130 --> 00:11:11.820 William Cheng: Okay, and then you see if that happens or not. If it turns out that didn't happen either your assumption is wrong or your code is wrong. 70 00:11:13.950 --> 00:11:22.560 William Cheng: Right, so, so in that case you need to say why is my assumption round is my code is wrong. And then if your assumptions is wrong. What do you need to get a new assumption. If you're somebody is correct. Well, then it must be a code is wrong. 71 00:11:23.550 --> 00:11:27.690 William Cheng: Right. So in that case, you, you, you, you try to find out exactly where your code made a mistake. 72 00:11:30.030 --> 00:11:42.720 William Cheng: Okay. Well, of course, in the worst case scenario is the assumption is wrong and the code is wrong. So in that case, you have to sort of, you know, start, you know, really, we think about what assumption or what what what what kind of code, you should be writing. Yes. 73 00:11:44.190 --> 00:11:52.290 William Cheng: Okay, so I hope he does. Oh, yeah, yeah. So, so what what what I'm saying. Over here is that if you know exactly where all your critical section code is 74 00:11:52.740 --> 00:12:05.220 William Cheng: You know, then, then the condition that you just mentioned just cannot happen. Right, so therefore it must be, you know, one of the one of the assumption there is wrong because you'll be because you're you're you're you. You have a bug in your code. 75 00:12:07.380 --> 00:12:08.640 William Cheng: Okay, okay. 76 00:12:11.760 --> 00:12:24.420 William Cheng: Yeah, because if you said, if, if the cure packet and now the you know the the the the Q1, or Q2, you know, the degree they get a segmentation fall I mean that that doesn't sell you know if you have no bugs and that's not possible. 77 00:12:26.820 --> 00:12:34.710 William Cheng: Okay, so one thing that you need to sort of convince yourself is that if I have no bug, then this condition is not possible because of all these reasons, because all the things that we learned in class. 78 00:12:35.700 --> 00:12:39.990 William Cheng: Right. And if that's true, then, then it must be a bug in your code and then you just need to find a bug. 79 00:12:44.730 --> 00:12:49.650 William Cheng: Yeah so so multi threading. That's one of the reason multithreading is sort of a harder thing to debug. 80 00:12:49.920 --> 00:12:57.120 William Cheng: Because, you know, these kind of things are happening any water right. The, the, the, the control see press a thread is you can trust you can be present anytime 81 00:12:57.450 --> 00:13:05.220 William Cheng: And the you know the servers wreck and run it anytime. So, therefore, you know, all kinds of timing can actually happen. So that makes it harder to debug. 82 00:13:08.730 --> 00:13:18.630 Hardik Mahipal Surana: Another question I had was, what happens or what should happen when we press Control Z. As soon as we start the program. I mean, before you and the emulation. 83 00:13:21.150 --> 00:13:29.670 William Cheng: Well, then, then you progress you get killed right away. Right. Yeah, but why don't you stop so so so Rob, what I would do is that you know as soon as the main program starts 84 00:13:30.180 --> 00:13:39.900 William Cheng: I will block until see right away when you can also you know parts command line argument first and then and then block, Control C. But once you start printing, you know, emulation parameters. 85 00:13:40.290 --> 00:13:48.930 William Cheng: Right. So the first thing that we print the print emulation parameter you should print up before you create any threats. Okay. So, therefore, before you print those things out. You should block control see 86 00:13:50.340 --> 00:13:54.960 William Cheng: Raza once you start, you know, printing those things out. What, then, then, and then in that case, you're in control. Right. 87 00:13:56.430 --> 00:14:08.670 William Cheng: So again, the timing is very important. And then you. You're the you're the programmer. You get to decide where you're going, where you want to do this and you know making you know making a bad decision can affect the the running of your program. 88 00:14:13.290 --> 00:14:24.930 William Cheng: Okay, so, yeah. So, so I just want to mention that meant this the spec doesn't say exactly when you should do this right, so part of the exercise is to sort of go through this kind of thinking and try to sort of figure out what is reasonable and what is not. 89 00:14:26.070 --> 00:14:26.310 Okay. 90 00:14:28.740 --> 00:14:30.060 William Cheng: Thank you. You're welcome. 91 00:14:31.860 --> 00:14:36.450 William Cheng: Okay. So, by the way, you know, the weekend is coming. And if you continue to have trouble. 92 00:14:37.320 --> 00:14:43.440 William Cheng: You know, just just just send me email, right, and tell me what you're you know what you're seeing. And then I you know I can actually give you 93 00:14:44.040 --> 00:14:54.240 William Cheng: Additional pointer of, you know, what will you know what does that break point and I'm a again, if you look at this cut over here. There are quite a few places you can set break point right so you can either set a breakpoint everywhere. 94 00:14:55.020 --> 00:15:10.560 William Cheng: So it's so it's so and and what you're trying to do is to find the first time at the bug happen, right. You want to catch as early as early as possible because the later you catch it, that the worst things that the worst things will get ok ok ok 95 00:15:15.090 --> 00:15:17.190 Lalit Gupta: OK, I have a question regarding my luck. 96 00:15:18.570 --> 00:15:22.080 Lalit Gupta: In the lecture it I think you've talked about the can we do Malik. 97 00:15:23.250 --> 00:15:29.460 Lalit Gupta: We get a page of memory, which is I think you said 4K of memory for k of memory. 98 00:15:30.660 --> 00:15:42.870 William Cheng: So that's how the colonel allocate memory. So we called Malik and three, you know, so. So since we use the first memory Alka alligator. Then in that case you don't get multiple four kilobytes. 99 00:15:45.900 --> 00:15:49.920 William Cheng: So the multiple four kilobytes. That's only done when you're using the buddy system. 100 00:15:51.060 --> 00:16:00.930 Lalit Gupta: So, so in our computer in the inevitable prediction that we are doing in our laptop. So what is the thing that is happening isn't doing like our 101 00:16:02.220 --> 00:16:03.750 Lalit Gupta: Page event vendor Malik. 102 00:16:04.140 --> 00:16:11.610 William Cheng: On so so so there are three memory alligator right one is in the user space in user space we're doing the first fit memory alligator. 103 00:16:12.120 --> 00:16:19.170 William Cheng: OK. And then inside the Colonel, they use two different kinds of memory alligator. One is the buddy system and the other one is a slap alligator. 104 00:16:21.270 --> 00:16:29.700 Lalit Gupta: Okay, so you. So you're saying that if you do in the program. We do Malak, let's say, a size of 105 00:16:30.840 --> 00:16:35.160 Lalit Gupta: A size of and then it will give only four byte of memory, right. 106 00:16:35.340 --> 00:16:36.210 William Cheng: Exactly, yes. 107 00:16:36.780 --> 00:16:38.280 Lalit Gupta: Or if I wanted to give more than that. 108 00:16:39.030 --> 00:16:44.400 William Cheng: It will give the exact well so so again because of the implementation their boundary tags. Right. 109 00:16:45.660 --> 00:16:55.470 William Cheng: Okay. So we asked for four bytes over here. Here's four bytes of memory. We're going to have boundary tack on top and boundary tag on the bottom right in the lecture, I said, You know, I 110 00:16:56.010 --> 00:17:02.220 William Cheng: Sort of mentioned that we're going to be really, really wastefully memory. So we're going to have eight bytes of boundary tag at the top and a bouncer budget budget, I get 111 00:17:03.300 --> 00:17:10.980 William Cheng: Some of the memory allocated. There are more memory efficient, maybe the only have four bytes of memory at the top of four bytes of boundary tag at the top and for by the boundary tagging the bottom 112 00:17:11.190 --> 00:17:15.690 William Cheng: So in that case, we tried to call Malik for you're going to end up getting a getting tall bites. 113 00:17:17.010 --> 00:17:22.200 Lalit Gupta: Yes, yes, yes. Yeah, but we have we have the access to. We have is only for the Fulbright 114 00:17:23.130 --> 00:17:31.050 William Cheng: While the you can access anything. Is that your is that is how you address space. You're just not supposed to touch anything outside these four bytes. 115 00:17:32.160 --> 00:17:41.280 Lalit Gupta: Yes. So, so when so so why does the colonel on to ask for for pay your memory. 116 00:17:41.850 --> 00:17:43.800 William Cheng: Because first America is too slow. 117 00:17:45.570 --> 00:17:51.330 William Cheng: Right. I mean, so, so over here, there's a slide that says you know that that is that the problem with the first remember alligator. 118 00:17:52.500 --> 00:17:54.240 William Cheng: Where is that, let me take a look 119 00:17:55.860 --> 00:18:00.330 William Cheng: Right, so first memory alligator. It's order n. In the worst case, 120 00:18:01.410 --> 00:18:10.050 William Cheng: So it's not suitable to use inside the colonel instead of Colonel, we need to have predictable worst case performance. So therefore, we use the buddy system and Assad alligator. 121 00:18:12.360 --> 00:18:18.690 Lalit Gupta: Okay. And why is it like okay to you ok to use the sausage algorithm in the user space. 122 00:18:20.460 --> 00:18:21.150 William Cheng: Um, 123 00:18:22.650 --> 00:18:23.340 William Cheng: Well, I guess. 124 00:18:25.170 --> 00:18:40.890 William Cheng: That's sort of a design choice. So typically, what's done is that you know that people found that this is acceptable. I heard numbers, something like, you know, whenever you write a program your programs spent about 20% of its time in Malaga free 125 00:18:42.060 --> 00:18:53.520 William Cheng: Okay, so your program is losing performance by 20% because they're using Malika free. Okay, so is that acceptable. Some people will say yes, some people say no. I guess I'll get different people at different opinion. 126 00:18:55.020 --> 00:19:03.660 Lalit Gupta: Okay, so you when you are saying 20% of the time. This means 20% of the time the user space is calling or the the coroner spaces calling this 127 00:19:05.250 --> 00:19:10.650 William Cheng: Doesn't use Malcolm free so so only the user space program use Malcolm free. So, for example, your warm up to 128 00:19:11.430 --> 00:19:21.750 William Cheng: Okay, the one if you measure the number of CPU second that's using. Okay. Some people will say that it's going to spend 20% of the time inside Malcolm free 129 00:19:24.720 --> 00:19:25.290 Lalit Gupta: Okay. 130 00:19:25.980 --> 00:19:32.310 William Cheng: So that sounds really big, whereas I sounds like a lot of time is wasted on that volume free, but now some people say, that's fine. 131 00:19:34.440 --> 00:19:36.150 Lalit Gupta: Okay, so. Okay. 132 00:19:37.620 --> 00:19:45.240 William Cheng: So some people say that if you want to use a buddy system in the user space program you will be wasting so much memory that it become not acceptable. 133 00:19:46.650 --> 00:19:48.900 Lalit Gupta: Okay, basically, to kind of a trade off like 134 00:19:48.900 --> 00:19:57.000 William Cheng: Yeah. Everything is a trade off. There's, there's, you know, very often, you know, I mean, for, for example, if you compare first fit and and best fit. 135 00:19:57.870 --> 00:20:09.060 William Cheng: You know, people study that to death and eventually they say well you know you should always use first fit because most of the time, it works better than best fit. Okay, but it's still there possible. You know, it is possible that best fit can still do better. 136 00:20:10.110 --> 00:20:16.260 William Cheng: But, you know, sort of, people will eventually come up with a conclusion that first fit is always better than best fit on the average 137 00:20:17.070 --> 00:20:26.220 William Cheng: Okay, but a lot of time is just trade off. Right, very, very rare that you have something to say something is always better than the other one. And typically, you know, if we can prove it mathematically, just as better than B and that's great. 138 00:20:27.030 --> 00:20:31.050 William Cheng: But you need to somehow sort of demonstrate is greater than B and but most of the time is just trade offs. 139 00:20:32.280 --> 00:20:36.810 William Cheng: I mean grad school. We're going to see all kinds of trade offs. Very, very rarely something is better than me. 140 00:20:38.070 --> 00:20:38.640 Lalit Gupta: Yeah. 141 00:20:39.930 --> 00:20:42.120 Lalit Gupta: So in the kernel space. 142 00:20:43.980 --> 00:20:45.330 Lalit Gupta: By default, it uses this 143 00:20:46.500 --> 00:20:50.040 Lalit Gupta: Body system. And then if we want to allocate some kind of 144 00:20:52.140 --> 00:20:59.190 Lalit Gupta: Some kind of space, such as PCB, etc. We kind of thing. Then it, then it will use this slab elevator. Right. 145 00:20:59.580 --> 00:21:13.680 William Cheng: Right, so the slap allocate it is also think about the slap alligator is building on top of the buddy system, right, because in order for you to get a slap you need to, you know, ask the buses and say, Hey, you know, give me 64 kilobytes. Give me 16 kilobytes or something like that. 146 00:21:14.670 --> 00:21:19.560 Lalit Gupta: Okay, and then we will structure this thing for tangible structure just for globe. Right. 147 00:21:19.800 --> 00:21:23.850 William Cheng: Yeah, we'll put them into this. So once we get a big slap right like a 64 kilobytes. 148 00:21:24.030 --> 00:21:30.870 William Cheng: We're gonna, you know, put them put all the process control blah in them into array and then we're going to allocate them one at a time, right, then it's going to be real fast. 149 00:21:31.770 --> 00:21:35.400 Lalit Gupta: Okay. Okay, this one is not clear. Thank you. 150 00:21:36.180 --> 00:21:36.450 Okay. 151 00:21:40.320 --> 00:21:45.900 William Cheng: Yeah, so our kernel source code come with both the buddy system and the you know the 152 00:21:46.440 --> 00:21:54.390 William Cheng: The snap alligator. So, you know, if you have, if you have time after semester is over, you can try to study it and it's extremely complicated. 153 00:21:56.850 --> 00:21:57.240 William Cheng: Actually 154 00:21:58.440 --> 00:22:04.200 William Cheng: You know, I'm also not saying that first memory alpha is not complicated when you're doing your kernel three 155 00:22:04.680 --> 00:22:10.050 William Cheng: Some of the bugs, you're going to encounter is because it because it's due to the first memory alligator. 156 00:22:10.710 --> 00:22:19.530 William Cheng: So, so you're going to get a little bit of familiar. You gotta get a little bit of a little bit familiar with the first MMA alligator and and then you got to see that's also pretty complicated. 157 00:22:20.460 --> 00:22:27.900 William Cheng: Okay, so all these memory alligator because they have to work all the time and they have to be fairly efficient Sunday. In the end, they're all very, very complicated. 158 00:22:30.270 --> 00:22:31.470 William Cheng: Yeah, it's crazy. 159 00:22:41.670 --> 00:22:54.450 William Cheng: So today we don't have, like, you know, two students in the room, any, any more questions. If there's no questions, then I'm just going to you know get stop recording let you guys talk a little bit and then we'll close it down. Yeah. 160 00:22:54.540 --> 00:22:55.740 Lalit Gupta: I have no question. Sure. 161 00:22:55.770 --> 00:22:56.130 William Cheng: Go ahead. 162 00:22:59.340 --> 00:22:59.490 Oh, 163 00:23:00.540 --> 00:23:01.260 Lalit Gupta: Yeah, no question. 164 00:23:01.740 --> 00:23:02.040 Okay. 165 00:23:03.990 --> 00:23:09.180 William Cheng: Alright, so, so in this case I'm gonna stop recording. Okay, let's see.