OK, let's have class. So today we're going to continue talking about address translation, and we'll talk about a way to solve some of the problems that Carl described on Friday and an approach that's much more in line with what modern systems actually do, as well as a friendly piece of hardware that actually helps us solve this problem in a nice way. So Simon 2 is due on Friday at this point. Hopefully, where you would want to be is pretty much close to being done. I can see people smiling. I'm sure that means I'm done. I feel good about that. Or maybe it means I have no idea what you're talking about. What is the Simon 2? I haven't started. I don't know. Either way. So yeah, the goal here is to get to the point where you have something working and then spend, you're probably going to need a few days to hunt down some of the corner cases you're missing. Make sure you're handling error codes properly, throwing the right error codes, things like that. OK. Yeah, so hopefully this is like started to sink in about the assignments in this class, which is that they are difficult. Now, Simon 3 is worth twice as many points as Simon 2. And that's kind of a rough estimate of how much more difficult it is.  Because assignment 2 is fun. Simon 3 is actually probably more fun than assignment 2. So hopefully you guys will find that out. Yeah, so this is like, assignment 2 is just like the end of volume 1 of Kill Bill. And then you still have quite a bit of a kill list to get through. OK. I just posted some announcements on the forum, but I sort of want to address this in class. So I suspect I was talking to some people last week at a conference I went to, and they've done a study on plagiarism. And one of the things that they discovered is a lot of times the plagiarized code that students submit doesn't actually do very well on the assignment. And I've actually found that to be true in this class as well. I've had students fail this class for submitting code that didn't compile much less actually run. OK. So think about that for a minute. And what that leads me to believe, because I'm a scientist, is that a lot of these cheating episodes are caused by sort of last-minute freakouts. I mean, there may be some people here, maybe in the sound of my voice right now or watching from home, who I've just gotten through school by cheating on stuff, by just submitting code that's plagiarized, and come into a class with that in mind. I hope that's not you. But I suspect the common case is that it's Friday at 4.30 PM, and you wait until Thursday to start the assignment, despite the fact that I've been badgering about it for a while. And it's like, OK, I'm going to go find something online, cut and paste it into my terminal, and hope that it works. Those are actually also nice cheating incidents, because they're really easy to detect when you have people that are like, I, through my incredible brain power, miraculously produced this 1,000 line chunk of code, character for character, identical to somebody else's on the internet. Like, that's just a chance. I've had people tell me, well, it's just an accident. It was just coincidence. I mean, I don't know. I would love to be able to calculate what the likelihood is, that that's actually the case. Maybe the likelihood that the sun won't rise tomorrow due to quantum effects or something. So it's not likely. So anyway, this is sort of the danger zone a little bit, I think, for some people in here who might think that they don't want to cheat on the assignment, but are worried about being behind or whatever. So just please, if you get to that point, don't do it. Go talk to Carl for a little while. That's a good way to kill some time till the deadlines. You don't get in trouble. You know, it's a great way. I mean, I love talking to Carl, right? I mean, I learned some really interesting stuff every time I talked to Carl. He's a farmer who's been talked to. Or the other TAs, they're also interesting to talk to. Like, call a friend, go for a walk. Just don't go to GitHub and find somebody else's assignment that doesn't work. Cut and paste the code from it and submit that. So please, just I'm begging you. Whatever you think bad is gonna happen if you don't submit an assignment too, the thing that will happen if you plagiarize the assignment too is worse. And I can give you very, very good odds. My batting average on actually managing to fail people to do this is pretty good. So don't do it. I don't like it. I mean, I really don't. I'm praying, because this is my last semester, please let there be no cheating cases. Okay. Questions about anything? Oh, no class on Friday. I'll just point that out. In class, I will be gone. And it's last Friday before spring break. And the assignment is due. We'll have lots of hours on Friday. Any questions about anything up to this point? Okay. So let's review a little bit about what we talked about on Friday. The goal here is, so we've discovered the Saturday space abstraction. We like it. We wanna get it to work. The goal is to allow as many translations as possible to proceed without getting the kernel involved. The kernel is way too slow to put on this path. The more the kernel gets involved, the system slows down to a really, really large extent. So we want almost every virtual to physical translation to proceed without the kernels involved. And I just said, right? So what's the split here? So this is another case of sort of a, a split between these two things that we try to arrange when we build systems. What's the kernel's role in the situation? Right, so the kernel is in charge of setting and enforcing policies about how addresses get translated. An address space is really nothing more than the collection of a set of policies that the kernel is enforcing. That says that a process is allowed to use a particular virtual address or not allowed to use that virtual address. And if the process is allowed to use the virtual address, what does it map to? The hardware is here to provide the mechanism to make this happen quickly. So whatever we do in hardware, we need to make sure that the operating system remains firmly in control of how the translation happens. Okay. So we talked a little bit about this, the idea of implicit translation. So when you guys use, when your programs use virtual addresses and all the addresses that your programs use are virtual addresses, this is happening every time. The kernel's not always involved every time. Like we said, that would be too slow. But every time you use a memory address, there is translation that's taking place. Behind the process is back and ideally as rapidly as possible. All right, so there were a few different approaches that we talked about on Friday. This was probably the simplest. So someone described to me how base and bounds translation works. For each one of these translation approaches, there's some amount of state that the kernel has to store for each process. Remember, because process virtual addresses have no meaning outside of a process context. If you ask me what is 0x10,000.2, I cannot answer that question without a process. And then there's also an algorithm for using that information along with the address that I'm translating to produce a final physical address. So base and bounds. Did Carl go over this on Friday? I think so, I think they're supposed to be reviewed, but everybody's giving me blank stares, okay, yeah. Okay? So right, so I've got one big contiguous set of physical memory. What information does the kernel have to store about that? Yeah, so I need to know where the memory that's actually allocated this process is in physical memory and how large it is. Those are my base and my bound. Now how do I translate a virtual address from the process to a physical address? Yeah, so I just simply, so the first thing I need to do is check to make sure it's okay. So this is something that I have to be able to do. This is part of the policy, is making sure that the address is valid. The check here is just making sure that the virtual address is smaller than the size of the segment, because every address space in this case starts at zero and moves up. Every process address space. And the translation is easy. All I do is add it to the base address. What were some problems with this approach? Yeah, okay, someone wanna answer that question? What do I check here? Do I check virtual address less than bound or virtual address plus base less than bound? Depends on, that's a good question, because it depends on what I mean by bound. If the bound is the size, let's say the bound is the size of the segment, the size of the amount of physical memory that I'm allocated to each process, or to this process, then what do I check? Just the virtual address, because virtual address is the offset into this particular segment. But let's say the bound is the physical address where that chunk stops, then what do I check? Then I would check the base plus the physical. Good question. What's wrong with this? Why doesn't this work? This is not a good fit for our address space abstraction. There's one very, very big, big gaping problem with base and bounds, yeah. Yeah, specifically what? What's gonna happen here? If I have to give every, I could do this today. So that's what's really interesting. Back when these techniques were being proposed, nobody had four gigabytes of memory in their computer, but now everybody does. So I could actually get away with this today if I wanted to, I don't. But I could say, okay, I'm gonna make a small decrease. Let's say I give each process a one gigabyte virtual address space. It's not much smaller than what I'm giving them already. And now I can put four of them in four gigabytes of memory. So that sounds great, about four cores, four gigabytes of memory. I'm gonna assign one gigabyte to each process and just let it set up its whole address space there right continuously. Why does that not work very well? Yeah. So what about that huge gaping hole between the heap and the stack? That's, what's in there? Like in the actual virtual address space, what's in between the heap and the stack? This could be gigabytes of space. What's in there? Nothing. Those are, what's gonna happen if the process tries to translate one of those addresses? Yeah, I shouldn't use so many violence metaphors in this class. Like, what's a different way of putting that, right? Like game over. Yeah, anyway. Yeah, yeah, yeah. Sorry, you've been eliminated. Voting you off the island. I don't know where the process goes at that point, but who cares? Do you know where the contestants from those shows go? Nobody knows. Into outer space. So, yeah, so those are invalid addresses and the interesting thing is I'm allocating physical memory for them. So this is a terrible idea. I've got invalid physical, I've got invalid virtual addresses to point to valid physical memory. This is bad. I'm wasting all of those addresses. They're not valid, they can't be translated but they're still actual physical memory backing, right? And that's because somebody pointed out outer spaces tend to be sparse. That's the goal is to exploit that sparsity. So I need something that's better fit for my outer space of distraction and doesn't produce as much internal fragmentation. What's the difference between internal and external fragmentation? Internal fragmentation is when spaces where it stood where. Inside my allocations. My allocations are a good fit for when I'm doing it so there's lots of internal wasted space. External fragmentation is when spaces wasted where? Well, internal, yeah. On the physical memory. Well, in between, right? So external is when I have fragmentation that occurs between the my existing allocations. So internal fragmentation wastes spaces inside the allocations, external fragmentation wastes spaces between outside. So it has to do with how those allocations are placed and the size of it. Okay. And if I don't do this very well, this can also suffer from external fragmentation. Although there's probably ways to get around this. Okay. So then we talked about segmentation. So how do I extend this idea slightly to make it into a better fit for address spaces? So there's a trade-off, there's a game we're playing here. There's a set of trade-offs that we're making. So simplest possible approach, bad for fragmentation. How do I address that using as little extra information as possible? Yeah, so think about it. I've got a virtual address space, a lot of it's empty. If I cover it with one big basin balance, I've wasted a lot of memory inside that allocation. But what I can do is I can say, okay, well, I've got a code segment over here, or I've got a part of the address space that typically has code in it. A lot of this layout is due to convention, but I've got a part over here that typically has code. I cover it with one segment. I've got a part over here that has the stacks. I cover that with another segment. I've got another part in here that has the heap in it. I'll cover that with another segment. And by the time I've allocated three or four or five segments of the process, I've pretty much covered everything. And so I'm good. So how does this get a little bit more complicated compared to basin balance? They're not contiguous, so what extra information do I have to keep around? Yeah, so with basin balance, there was this implicit assumption that the basin balance, the virtual address always started at zero. When I start using segments, every segment is not gonna start at zero. They're gonna start kind of where I need them. So now I have multiple bases in bounds. And so not only do I need to store where they are in physical memory, but I need to store a little bit more information about where they are in virtual memory as well. So each segment has a start virtual address, a base physical address and a bound. So three pieces of information per segment with the addition of the start virtual address. The bound is the same. Why? Why can I just store one bound rather than, I could also store the end virtual address and the end physical address. That would also be correct. Why can I get away with just storing the bound? Well, what's true about the size of the segment in virtual and physical memory? It's the same, right? So the size of the segment can vary. The code that when I start, I might not have a heap at all. So there might be no heap segment, but the stack segment might start off smaller than the code segment or whatever. But whatever the sizes of the segments are, they're the same in virtual and physical memory. Now, again, everything's getting a little bit more complicated. So rather than a single check, I have to look through all of the segments that I've allocated for the process and try to figure out if a particular virtual address is valid by figuring out, is it inside any of the segments? So before I just had one check to do, which is I could just check inside the one single base and bounds. Now I've got to do it for each segment. And to translate, once I found the segment that contains this virtual address, assuming it exists because it's valid, then I do a little bit more math, all right? So segmentation is good and then it fixes some of those problems. What's bad about segmentation? So now I'm not wasting these huge chunks of space where there are invalid addresses. So that's good. All those invalid addresses that I had to back with physical memory before I don't have to, but what's the problem here? It can also potentially waste space, where? Oh, no, this amount of information is reasonable. Most processes are not gonna have that many segments. Most have five, six, something like that. I mean, even fewer, maybe two, right? A code data segment and then a stack, yeah.  I mean, I can, yeah, this can suffer from some external fragmentation because the segments are now different sizes, but where is there wasted space here? So the first case of wasted space has to do with address space locality, address space sparsity. Most valid addresses are clustered together. The next part of wasted space has to do with runtime locality. Dave, do you want to guess? Okay, so give me an example. Yeah, so this helps with external fragmentation because I'm not wasting all those spaces in between valid segments. But think about the code segment. Think about the code segment for like, okay, I'll stop making fun of Microsoft Word. I'm gonna shift targets, Adobe. Adobe is an easy target. They make some terrible software. All right, sorry.  But if you are, you can help them because they need it. All right, so let's talk about Photoshop, right? How large do you think the code segment of Photoshop is? It's got all the code to run Photoshop. Does anyone use Photoshop? Okay, so this is like, like give me your estimate of the code size of Photoshop. Huge, yeah, I mean there's all sorts of code in there to do like crazy stuff. All sorts of functions that you never use. How much of that code segment do you even know how to use? Let me ask you that question. Anyone here a Photoshop wizard? Okay, Gus is a Photoshop wizard. How many parts of Photoshop do you think you can actually reliably operate? There we go, 10%, right? For me it's like 1%, like how do I get out of here? I opened it by accident. I'm like, click exit, you know? There's probably like five different exit dialogues somewhere, right? It's like run script to exit, I don't know, whatever. I mean, yeah, so these tools have gotten really complicated and a lot of times there's multiple ways to do things or whatever, but it doesn't matter. I mean, the other thing is at any given point in time you're only using a few of those functions. So if you think about, if you could think about a graph that would highlight the parts of an address space that are in use at any given point in time, they're very small. So there's some little bit of code that I'm using to run some subroutine that's like blurring the image and then there's the part of the image that's stored in memory and a lot of the rest of the address space is dark. It's not actually, now those sort of hot spots move around as you use the program and moves from one subroutine to another subroutine, whatever. This is called execution locality or temporal locality. And so if every time I need to run one tiny little bit of Photoshop code I have to yank this huge code segment that's like a gigabyte in size into memory, I've got a considerable amount of internal fragmentation. And if the segments have to be contiguous in memory there's also this external segmentation problem as well. So here are my issues. All right, questions at this point. I find it useful to review this stuff. I'm sorry if Carl said everything that I just said in a more interesting and entertaining way on Friday. All right, questions. Okay, so the goal here is as follows. I just wanna, because segmentation still has some problems left the goal when we started or something that would solve all of our problems is this idea of being able to extremely efficiently map a byte to a byte. So if I can map any virtual byte to any physical byte I could use this ability to fix the problems with segmentation because I wouldn't have to yank this whole segment in I could just map every byte of the segment to a different spot and control those mappings independent. Now the OS can't do this but the question is is there a way to get hardware to help us? And it turns out that there is a piece of hardware and you can, like a lot of the terminology in this class this particular piece of terminology is very specific to a particular implementation of something but it doesn't matter. This concept is pretty universal. So what we're gonna talk about today is sometimes referred to as a translation look aside buffer. Yikes, what is wrong with this thing today? Is someone messing with me? Someone's got a clicker? Anyway, don't do that. Just giving you guys bad ideas. So and this is a really sort of classic systems approach. Sometimes I refer to an operate system as a series of caches. Registers are a cache for the L1 cache which is a cache for the L2 cache which is a cache for the L3 cache which is a cache for main memory which is a cache for your disk which is a cache for the internet. Which is a cache for all of human knowledge that we're slowly populating. Yeah, I mean, to some degree, like that's how computer systems work. I just explained it in one sentence. It's still hard to get them to work. That's how computer memory works. There are other caches for other things. But what we're gonna do is we say, okay, the operating system can't do this. Is there a piece of hardware I can use to help me? The piece of hardware is something that sometimes referred to as, and this is kind of cool, content addressable memory. Does that make sense? Has anyone ever heard about the addressable memory before? At some point they taught you about this in some other class, like a cam. Maybe you just called it a cam and the acronym was never explained. Yeah, so I think this is kind of cool. Normal memory, I address it using an address in memory. And maybe you guys are wondering what I'm talking about here. So when I address normal memory, I give you an address in memory and then I tell you load or store. When I address content addressable memory, I give you an identifier for something that is stored in the memory and it returns an address. Does that make sense? So it's like if I could go to memory and say, tell me every location in memory that contains the byte 12. And it would be able to answer that question. So this is content addressable. It's addressed by what's inside the memory rather than where the memory is or some sort of arbitrary location. So here's an example of how this works. Here's my TLB. And the way I'm gonna use TLBs here is I'm gonna use them to cache this mapping that I want to do. The mapping from virtual byte right now to physical byte. So here's my cache and the cache remember is addressable by content. And what that means is that I can, you can think of it as simultaneously being able to do this look up efficiently across the entire cache. So when I ask the TLB to look up OX800, what does it return? Yeah, so essentially it will return the location that contains this content. Does this make sense? So instead of asking it for location two or location one or whatever would this would be, if I start from zero, this is location one, I query it based on the contents of that cell. This is kind of neat. And what I get back is, okay, I do have that value and there's also this other byte next to it that is X306. So I can use this to do translation. So I ask the TLB, can you translate OX800? It says yes. And then looks that up. Okay, well we'll go through more examples later. Okay, so this sounds awesome.  I never knew that was a thing. Because if you think about this, this totally explodes the possibilities of the kind of things you can do with memory. Imagine I have a hash table where I can look up every entry in memory super efficiently. That's kind of what we're doing here. There's only one problem. Cans are really complicated to build. There's a lot of hardware circuitry and they don't scale. So I can't make one that's four gigabytes. If I could, I could do some wax stuff. Like computers would be different. But I can't, so I have to make them small. And so they can't, so what's the problem here? Let's say I can only build a TLB that has 32 entries in it. Why does that matter? Yeah. Well I have a lot of, remember I'm using this as a cache. So I'm not expecting it to store every translation. But if it can only store 32 translations and I'm translating bytes to bytes, how many bytes of virtual memory can I translate? That doesn't sound like very many, right? That wouldn't be very, so it turns out one of the magical things about virtual memory is you don't need a very big cache here to do the job, but 32 bytes is not large enough. Like you need to do better than 32, okay? Or 128 or 25, and they can probably make cams out there to like 10, 24 if you spend like a billion dollars, okay? But that's still not enough. So at this point, here's where we are. Segments that are too large, so they do internal fragmentation. Mapping bytes means that the TLB can't store enough information. So what would happen here? This would work. Let's say I have a 32 byte, a 32 entry TLB that can map bytes to bytes. I can map 32 bytes of virtual memory. This will work, but what will keep happening? This is gonna be really slow, why? Because I'm gonna keep asking the TLB, can you translate this byte? And the TLB says I don't know how to do that. And then what do I have to do? I have to ask the operating system for help. Then the operating system has to get involved and make sure that that address isn't invalid. And if it's valid, it has to tell the TLB how to translate it. So the smaller the amount of memory that the TLB can map, the more often the operating system gets involved and everything slows down, all right? So the modern solution to this is to pick, to use these TLB pieces of hardware because they're super useful, but to pick a translation granularity that allows them to map enough memory. So there's a very clear trade-off here between internal fragmentation inside my mapping units and this amount of memory that the TLB can map. Those are, this is the trade-off that I'm playing. I'm trying to find a middle ground so that the TLB can map enough entries, but those entries don't get so big that there's a lot of internal fragmentation. This also, so the other thing that I do care about here a little bit is that, remember that kernel has to store information about these mappings. When I stored information about base and bounds, I had like two bytes or eight bytes of information to store. When I stored information about segments, I had like 12 bytes times the number of segments which is still really small. This approach is gonna require that the operating system store a lot more information. So to limit the size of that information, I also wanna choose a mapping granularity that's not too small. If the operating system had to save one mapping per byte, then the size of the mapping table is the size of the amount of memory that the process is using and that is too big. All right, now remember, we have a friend here which is execution locality. I just wanna make sure you guys understand how powerful this is because this allows us to get away with a much smaller cache. So here's what typically happens as a program runs. When you do something weird, like you know you do something unexpected, like you ask Photoshop to take a picture and convert it to grayscale, okay? Photoshop suddenly starts running this subroutine that maybe you've never run before. And so initially when it gets there, there's a lot of misses in the cache. It's accessing data that's not in the TLB, it's accessing code that's not in the TLB. So for the first infinitesimal little amount of time, you get all these cache misses and then the cache fills up and then the rest of things run entirely inside the cache. And so a little bit of penalty every time the program sort of changes states, but then once it's in a new state, assuming the cache is big enough, there shouldn't be any more misses and it can make a lot of progress without asking the operators for help. Does that make sense? So again, as you're clicking on menus and stuff like that, you're kind of like giving it these unpredictable inputs and forcing it to adapt. Once it's in a more stable situation and it's working on something, the goal is for all the translators to be cached so they can happen really fast without the operators having to get involved. What we call these units pages and page size of 4K was like this canonical page size for a gazillion years. I suspect it's still pretty common despite the fact that as memory has grown, there are some systems that have started to use things like 8K as a default page size. There are variants of Linux that allow you to have large page regions where the pages can be multiple megabytes. So on some level, the fact that memory has gotten really cheap and systems have gotten lots more memory has caused us to rethink some of these design decisions but it doesn't really map, right? I mean, we're gonna choose a size of a page and pages are what gets mapped, rather than bytes. And this is how you can think about this. If I have a TLB that has a certain number of entries, I can combine that with the page size and get a limit on the amount of memory that can be mapped by that TLB at one point in time. So with a 4K page and 128, is this still wrong? It's still wrong, sorry. It should be 512K, whoops. Okay, someone should, free extra credit if you file a bug report against this slide because it is wrong. 4K times 128 is 512 just in case you were confused. So my 128 entry TLB allows me to cache 128 entries each points to a page of memory being 4K, that means I can cache 512K of translations at any given point in time. Sometimes, so remember I was talking before about the memory that's being used by a particular part of a program? That's also referred to as a working set in some terminologies. So the pages I need to kind of do a particular computation or do a particular amount of work, this is not a well-defined concept, by the way. It just reflects the fact that when a program is working on a particular task, it tends to use a pretty stable set of pages. And as long as those pages fit inside my cache, I'm good. It's also helpful if those pages fit inside like high-level caches, like an L2 cache, for example, yeah. Yeah, exactly, yeah. So the TLB always has to be able to look up based on virtual address and return entries that contain a physical address as well, yeah. No, that's a great question, right? So how much information does the TLB have to store to identify, this is a good little preview, I think this is on the next few slides, but if a page size is 4K, how many bytes does it take to identify that page uniquely? On a 32-bit system, sorry, that's important. On a 32-bit system, how many bits does it take to identify a 4K chunk of memory? 12, close, 12 was on the right track. No, not close in that way. 12 addresses 4K. So there are 12 bits that are used to address the part of the page you're talking about. So if it takes 12 bits to address within 4K, how many does it take to actually address the page itself? We'll come back to this. 20, 20 bits, right? 12 bits describe the offset within the page, the other 20 bits identify the page itself. We'll come back to this. Ashish looks confused, that's always dangerous. Yes, yes. So one way to think about pages is that pages are like fixed-size segments, right? Remember when I talked about segments, they could be various sizes. Pages allow us to simplify things a little bit by assuming that every page is 4K. Or again, on systems that support large pages, I have one type of page that's 4K or 8K, and another that's like four megabytes. Why the move towards these larger page sizes? I mean, 4K seems nice, it's like a nice number. It's like a computer science number. I see people like writing code, it's like number of max processes, 30. 30 is not a computer science number, don't use that. A computer doesn't like 30. The computer looks at that and it's like, oh, man, what is that number? Just use 32 or something, power of two, please. It'll make me so much happier. And that's important, obviously. Yeah, wait, yeah, four megabyte pages, why? Why are we seeing larger page sizes? I mean, there's a particular type of object that applications use and manipulate a lot today where these larger page sizes make a lot of sense. What would that be? When it gets close to mid-turn time, I'm just generating multiple choice questions in my head when I'm talking to you, by the way. Anything where there's like a longer than a five or 10 second pause, I'm like, okay. Like, why would I, again, I mean, Pater's supposed to reflect something about what the process does. Where do I start to want like large chunks of memory? Where are all the bytes in four megabytes? What type of content is there where all the bytes in a four megabyte chunk are kind of related to each other? They're probably gonna be used together. Well, to a particular type of file. Yeah, any sort of like video, I mean, videos are like gigabytes long. Like four megabytes of video content at a full frame rate for high def is like a second or two, maybe? I don't know, someone can do that math for me, but it's not very much. So if an operating system is gonna, if the program's gonna use those four bytes, they're just gonna use all of them at once, right? I don't need to break that into smaller chunks. Either you watched that part of the movie or you didn't, right? Either you seek past it or you seek to it. I don't need to break it up into chunks that hold like a microsecond worth of movie content. That doesn't make any sense. All right. All right, I just said that. Where are we at in time? Oh, we're good. Okay, so when we start translating pages, and this is sort of like segments except for their fixed size, but we break, but because they're fixed size, we can break every page into two parts. There's the top part of the page that identifies a 4K chunk of memory. It's known as the virtual page number, and the remainder is the offset. So, and every virtual page, as the chief pointed out, maps to a physical page. So what I'm doing is I'm breaking virtual memory up into 4K chunks, and I also break physical memory up into 4K chunks. And every allocated piece of physical memory maps to some virtual page. If it's in use by a process, the kernel might also be using it for other things. But every process page maps onto some contiguous chunk of 4K memory. And as you can see from a fragmentation perspective, particularly external fragmentation, this is very nice. We'll come back to that in a sec. All addresses in the single virtual page map to the same physical page that sort of implicit. And so here's my algorithm for using these, and I have a little bit of a slide about it too. So the first thing I need to do is figure out whether or not that virtual page number is valid. And this is where the data structures aspect of this problem comes in, and this is something we'll talk about, Carl will talk about on Wednesday. So the app rate system has to be able to quickly figure out whether or not a virtual page number is valid. I don't worry about addresses anymore. This is all done on a page granularity. So I figure out what virtual page the program is trying to use, and I figure out if it's valid. As a corollary to this, I only provide access to memory on 4K boundaries. So this is kind of interesting. People sometimes are like, well, is it possible for the kernel to allocate like 32 bytes to a program? No, I can only give it pages. There's no way to protect anything inside of a page. So if Malik wants memory, Malik can ask for 32 bytes, but what it's gonna get back whether it wants it or not is a page. And then the next time, maybe it asks for 32 bytes and I just don't have to give it pages if it's inside the allocation I already gave it. But the point is that all the protection and allocation is now done on page boundaries. So I check to make sure it's valid. Then I translate the virtual page number to a physical page number. And this is something that the operating system has to be able to do. And it also has to be able to tell the translation look aside buffer how to do it. Because remember, the operating system does not wanna do this every time. It wants to look it up once and then it's gonna tell the cache, here's how to do this in the future so you don't have to bother me. And when I'm done, what I have, so the process of translation is kind of pull off the offset, translate the virtual page number to a physical page number and then plug the offset set back in. And for this particular, well actually this is true for any Power Rift 2, but for 4K pages, you can think of it as ripping the bottom 12 bits off, translating the top 20 bits to a different 20 bits. Again, this is 32 bit translation and then stapling the bottom 12 bits back on. And you can literally do that in bit operations and you will for assignment three. All right, anyway, you guys can watch this later. This is my favorite little clip from the social network. So the only funny thing I'll point out about this that you wouldn't get without me here to point this out is that when I saw this movie, I saw this slide and I was like, that is way too complicated.  And then when I started preparing the slides for this class and I was looking at his old slides, I found that slide. So that's a real slide. So if you think my slides are complicated, look at that, I have no idea what that's about. Except that there's a lot of boxes and arrows on it. Okay, so let's walk through an example using the TLB. Let's say that we're using 4K pages, that's pretty typical. So how do I translate this address? OX 800,346. So there's some helpful things visually to remember. In Hacks, each character is how many bits? Four. Four, right? Remember this about Hacks? Two to the fourth is 16. Zero through nine gets me 10 symbols and then eight through F gets me the other six. So that's why I go up through F, right? So every character is four bits. So what characters correspond to the last 12 bits of this address? The bottom 12 bits. 346. So I can pull this apart. I'm gonna yank off the bottom 12 bits, translate the top 20 bits. Now I didn't show you 20 bits, I only showed you 12 bits, but the top two are zeros, sort of by the top two nibbles as they call, I love that word. Bits and nibbles are zero. All right, so what is this? This is a virtual page, remember, is it valid? Right, because it's in the TLB, what does it translate to? 306, so what's the final answer here? 306, 346, that's it. So once I've translated those top 20 bits, I have to plug the offset back up. Because the offset identifies a unique byte on the system, but it's only the top 20 bytes of each address that actually get translated every time. All right, what about this guy? Yeah? 050336. 050336, yep, got it, replace it, plug it back together, rip it apart, find the top 20 bits, plug it back together. Yeah, any questions about that? So this is what would happen at runtime once these addresses have been inserted into the TLB by the operating system. And remember, the TLB is this special piece of hardware that's built to do this thing and this thing only, and so it is extremely fast. It's close to the processor, every processor has its own TLB. So the address management is actually done on a per core basis, and this can be done, I don't know what the cycle overhead of this is. This is a great question, but this happens all the time. So I suspect it's like zero. I suspect this causes no stalls in the CPU pipeline. Because every code byte that I pull, every data byte that I pull, it's all being translated. All right. So where did, yeah. Ah, okay, good question. So what happens if it's not found in the TLB? Let's say I tried to translate something that was not in the TLB. What has to happen? Yeah, I mean, have you guys seen this error? When you've been, some of you guys have seen this, right? On OS 161, what does it say? TLB miss on load or store. Usually that's a bogus address that you gave it, right? But the error message that's being generated by OS 161 is actually an error, that's an exception that you are going to get very familiar with in assignment three, because you're going to handle those. What's going to happen is the TLB is not all of them. Some of them are your fault, right?  But some of them for assignment three, you're going to handle because they're going to be valid addresses that the TLB doesn't know how to translate in. So where do these entries come from? The operating system puts them there. So remember, when my execution locality changes, I jump to a different part of the program. Initially I get a bunch of TLB misses because the entries that are there are not describing the part of memory that the program is using. What happens is I break into the operating system and the operating system says, okay, this is good, this is good, this is good. Plugs those entries into the TLB and off we go, right? And this is called a TLB exception in this particular case and you guys have seen some of those when you tried to address buggy memory. It's possible that the address that, so an invalid address, like something that's going to eventually cause a segmentation fault, it's going to run through kill curve thread and shut the process down. The first thing it'll do is generate a TLB miss.  And again, this is stuff that you guys will have to do for assignment three. All right, I think I'll stop. Am I out of time? People keep getting up too early. I'm not out of time, I've got four minutes left. Sit down. Sending me these signals. Have you guys figured out? This is like psychological. Like if I started putting on my code at 40 after, we can get out of here early. All right, so pros to paging. What's nice about this compared to segmentation? I don't have to store the size, so that's nice. But what's really nice about all the pages being the same size? What does that eliminate? External fragmentation. Remember, sometimes it's like I allocated 20 bytes here and I allocated 20 bytes there and I've got 10 bytes left over and I've got 10 bytes over there and I need 20 bytes, but it's split up and I can't do it. This goes away, everything's 4K. I need 4K, I've got 4K, right? If I've got chunks between two allocations, they're 4K or a multiple of 4K, so it's not a problem. So this really helps with external fragmentation. Many of the things I liked about segmentation can be layered on top of this approach. So in a lot of cases what you see is sort of a hybrid model where some of the operating system data structures are organized like segments, but within those segments, I have per page information. So I can still do some of the things I wanted to do with segments. I can have segments be read only if they describe the code or whatever.  So I've got zero external fragmentation and much less internal fragmentation than segmentation because rather than having to give the entire code region a contiguous chunk of memory, I can only map the parts of the code region that are in use. And when we talk about swapping, we'll see why this is even more important because the parts of the code region that aren't used, those features from Photoshop that you never use, those may never even get into memory at all. They may never come into memory, they may live forever on disk. You paid gazillion dollars to that piece of software and some of that program has never, ever even been in your computer's memory. How does that make you feel? All right, so, and no external fragmentation, okay. So cons, one of the cons, I'm almost done. One of the cons we just talked about, which is this does require a little bit more translation. The translation granularity is smaller. So I need more hardware to translate less memory. And I need per page operating system states may be wondering how does the operating system keep all this information about the process? And here's where I get to do some fun engineering inside the operating system to make sure that the operating system itself can look up information about pages efficiently because it has to, the physical address that ends up in the TOB, that's something that the kernel had to find. And one of the things you guys will talk about either Wednesday or next week is how that happens. All right, I'm gonna stop here. Good luck finishing up assignment two. I'm really sad I can't be here. I think people are doing pretty well, but keep cranking this week and I will see you guys the Monday after spring break.


Hi Sherry! This is Ashley from Oxford Toyota. I noticed that you are interested in the new 2016 Ford Runner. I want to hint and send you over our current inventory for you to look over at your convenience. If anything interests you, please let me know that way I can get more information. We would love for you to stop by the dealership. Please give me a call. My number is<PHONE_NUMBER> or email me back. I'll be happy to get more information. Thanks. Bye.


For today's money makeup lesson, I want to share with you my top three tricks to bring your eye makeup to the next level. We're talking creating contrast, checking angles, and adding some balance. The first thing is cleaning up around the eyes, which I think most of us are aware of, but I want you to check your angles while you're doing this. The way that you clean up the outer edge of the eye depends on the look that you're creating, but also your eye spacing. If you're not sure about your eye spacing, I'll recap it for you. We have average, close set, and wide set. Average is the width of one eye length apart, close set is less than the width of one eye length apart, and wide set is more than the width of one eye length apart. To find this measurement, you're going to use your finger and your thumb, measure one eye, and then place it in the middle. If there's no space, then your average, if you poke yourself in the eye, then your close set. And if you have a little bit of space, then your wide set. For most people, I recommend just using the average angle. If you're not sure which one you fit into, basically you're using the edge of the nose, eye and brow to create a line, and you're blending inwards from this point. Then you just use the tear duct area to create a parallel line and keep your eye shadow between these two points. Very easy and very flattering.  It's also used in a siren eye angle. And for wide set eyes, you're going to use the average placement, but you're keeping a little tighter on the outer edge. Use a vertical line from the tear duct, and this will bring the eyes closer together, very similar to what we see when we create a dough eye makeup look.  Now, concealing and cleaning around the eyes will also create more contrast. Sometimes you might feel like you need a little bit more eye shadow to add more depth, but by brightening around the eyes, that depth will show up a little bit more. And the same goes for the eyebrows. Now, your brows also play a large role in how your eye makeup is going to be framed. They're the frame for your eyes. So for a balanced look, match the drama of the eyes with the depth of the brows, or for a bold eye, even tone down the brows to create a little bit more contrast. Now, for my personal style, I like my brows to match the drama of the eye makeup. So if you have a strong eye, maybe a little bit more dramatic than normal, but you don't want it to look too dramatic, add a little bit more depth to the brows to create more balance. Now, depth does not mean darker. It actually just means a little bit more filled in than normal. Even just use a slightly lighter shade than you usually would, and this will create more depth, but not going darker. But also remember to clean up around the brows, because that's your first step to see how much product you are going to need to add that contrast and add that depth. And like we said, adding depth to the brows will create more balance, but your mascara application matters as well. I always recommend checking your lower lashes to see if they need more or less product to match with the upper lashes.  So what I like to do is I like to use a two for one ratio with the upper lashes always being two times thicker, denser and darker than the lower lashes to make sure that I have that nice balance. My lower lashes are for some reason always in better condition than my upper lashes, so I'll either skip mascara on the lower lashes or I'll add some upper lashes to create more balance. And there you go, three ways to upgrade your eye makeup look, creating some sharp contrast, adding some depth and some balance, all without even adding any more eyeshadow. I hope these finishing steps were helpful. If you have any tricks, let me know. And if you want to see this look, which is a soft spotlight eye, I should have it up by Friday, though I am going to a friend's wedding this week.  I've also been really sick for the last few weeks, so I'm just happy that I'm well enough to go. I'm really excited about it. But I'll hopefully have a makeup look up by Friday as long as the wedding doesn't take too much out of me. And as always, my friends, be kind to yourself, be kind to others. If you made it this far, then let me know in the comments using emojis, what you have been up to. And I will see you in the next one. Bye!


Hello and welcome everyone to another chat with Entrepreneur India. I am Kavya Pillai and with me is someone who would like to introduce himself So, Namaste everyone and thank you for having me here my name is Aakash Rani Singh and In very simplest possible way. I'm a happy guy.  That's it That's my introduction cause anything which makes me happy and do not cause cause any harm to anyone else I do it. So it's making me feel happy travel. I travel. It's making me feel happy being a documentary filmmaker I do it. It's making me happy working for climate change for nature. I'm doing it art and solution I'm doing it writing. I'm doing it So I can do anything in everything but putting so many tags is really confusing out there to understand me hence I'm just simply a happy guy. All right So, but when we do look you up, there are terms like climate enthusiast and environmentalist So, what could you say which one are we going with? So see there was this quotation Jack of all master of none. It's a old quotation. The new quotation is Jack of all master of one. Okay, right? So for me that master of one thing can be climate change and I'm Jack of all I do everything and everything anything possible on the ground I just try and do it whenever I feel like not that I have to do it every day But then I've made a table by myself. So I'm a carpenter as well Or I may I produce music sometimes as well. So I'm a music producer as well, but nobody knows out there, right? I just do it because I feel like nobody knew that I made a table as well But then people do know that I'm a photographer or I'm a traveler. So yeah Interesting all right with that Could you tell me your journey on social media because you're known prominently on social media So I just want to know how did that happen? so Unknowingly because of my mom my mom is this person who always wants me to do everything like in alignment proper Like for example shoes yankyur ake sayi jagya pe rako. So this started as a childhood But unknowingly this became a part of my brain how it functioned that I want to do everything in improper alignment in a proper way So when I started traveling back in 2012 time With God's blessing I had a phone which has a decent camera So I was taking pictures while I was traveling whenever I would see a good sunset on a road or sunrise or whatever it is I will take a picture all I would try to do is just simply unknowingly in my brain. I will align everything properly, right? I got decent pictures. I put it on social media people started appreciating and I was traveling anyway So I started eating more photos Right and I was going good places with my own will wherever I want I can go So I would go to let's say Taj Mahal or mountains or wherever I want to go People appreciated the photo unknowingly It gathered more followers and people started telling me that hey, you are such a good photographer I'm like hey, I'm a photographer. Oh cool. I am a photographer. So I started Accepting it that I am and I can be better So from there first of all social media became a thing that I have a relationship with right from there I kept putting on my travel a lot slowly I got into videos as well that have when I'm doing photography and people are appreciating You feel like doing more like if I appreciate you every day that hey, let's say you're very good How you communicate you'll put more efforts and be more or do more of it similarly photography to videography and then a time came when I started focusing on climate change and I feel that to most of the people science is very boring subject They don't want to learn more about it. What what sense does it make to them? So what I thought that hey How do we feed food to children's like playing with them and just suddenly in between give them the spoon of food or Medicine whatever it is. That's what I started doing with social media. They put up first for very good travel content So that people are engaging with it then put up very good high-quality cinematic content of Travel so people like hey This is not only travel but good visuals as well and in between that content a little bit of climate change Right, so that I'm not boring people and I'm giving them a chance to slowly shift to something rather than 100% Climate change otherwise people will like it suddenly Akash went from photography to videography in travel and suddenly he's a Physics or a chemistry or science teacher. We want to unfollow him, right? Because nobody's coming on Instagram to learn physics today, right? So that's how I use social media to put things out And that's the reason on my profile You'll see all of these three things are visible travel cinematic good quality content and climate change because I want to keep it easy for people So I'm a climate optimist the idea is very simple earlier the book was called. I'm an optimist That's it But then we thought hey let people know that what are we really talking about so it's my perspective in life I want to see positive in everything because as I said like what you tell me my brain will accept and do more of it Unknowingly if you appreciate me for something So I really want to see positive things in as in positive angle in everything whatever happens because it has happened I can't control it. It's not in my control and also that in a day there are thousand things are gonna come up Where do I want to invest my time and energy to write Happen something wrong happen. It's okay. Can I decide I want to invest my energy on something good?  Yes, the problem is there and there has been time back in let's say From 27 2017 2018 all of these times I was to cry almost every other day because I would read more and more about climate change Okay, this is going wrong that is going wrong and we are not taking action Human species it's a climate change is a threat for human species and all those things and I would just cry So am I really in a position to take action? No because I'm busy crying and I'm losing out energy on it And I'm not really in a press. I'm really not living a day in with a perspective where I can make the change Right, so less of a doer. I was more of a just a victim But then as a victim, I'm not really able to get to the solution. Do you want to just keep crying? that's when the thing came to me that I want to start focusing on being happy and See what can be done now? Okay, there's a problem. It's okay accepted now. Let's focus to the solution That's where this thing came now the book The book talks about different different industries food and beverages are industry Cosmetics is an industry Tourism is an industry plastic Beauty all of these industry has a one chapter in the book overall There are 10 chapters in each of the chapter I talk about let's say how I got to learn about me being a vegetarian My diet is also impacting climate change. Right? What can I do? What is the solution? Right? then The chapter flows like this how I found it the problem the solution and then I also have a Resource section because if I tell you that hey, you can be a plant base and you say hey, Akash I want to be how to do be how to do that. I'm like, oh, I Don't know that you can just be that's it So I'm leaving you in between but the book doesn't leave you there the book comes with a resource section where I give you Let's say three for option. Do you want to read more books about this specific subject to learn more? You say no Akash. I'm not a book person. I'm like, hey, you want to watch documentaries easy I used to learn no documentaries too long.  I want to take you right now, okay? Here are the online shops you can buy your Grocery from in a sustainable way for plant-based food Like Akasha. I don't want to make I want to go out right now.  Yeah, so starting from top you want to learn the deepest thing about the food and sustainability Here are the books. No, I just want to take the action don't want to learn go right now eat at this cafe I can name right now here wherever we are sitting I can tell you cafes in this local area itself where you can go and eat So you're like easy. Hey, this helps and even online platforms Which are like aggregators, right? So where you can go and you can choose which company do you want to buy from? They are filtering it out for you Cruelty-free plant-based whatever so this is just just the food chapter. That's how we go for each and every chapter You want to buy beauty products? There you go. These are the brands buy it from we have done the scrutiny on them We have used them personally. We have spoken to the company We have tried to investigate in them as much as we can right so to filter it out for you because I know that you Won't go out there and start doing a Investigation on the brand that hey, is it really a good one or not, right? So that's how the book flows few good things about the book We have used a vegetable ink to print the book right to make it more sustainable because it's not that I want to write Everything with the chemicals and then preach to you that hey, but you will do good do the good thing So we use a vegetable ink then it's on FSC environment-friendly paper the most friendliest Which I could find here in India and when it comes to this much of a bulk printing And also the sustainability of the book itself that how long will it last once we print it? And then on the top of it all hundred percent of my earning is an author all of my royalty Go to a charity called greener earth foundation where the money will be used to offset the carbon footprint of the project itself Making it India's first carbon neutral book So use the word sustainability so my next question is on that the word sustainability is used widely and do speak your thoughts on the word and how brands are Including this word in the advertising and company structure so Lot of people first of all do not really understand the meaning of sustainability Sustainability is so it's like a ladder. It's not a final stage. You reach on it and now you're sustainable No, it's a ladder you keep climbing you be more sustainable more sustainable more sustainable Because obviously everything we do has some of the other impact on environment because we are borrowing natural resources We are in meeting different gases which has to be processed in the environment But eventually again bring it back to the neutral right neutral like simple a car being on a neutral gear so Sustainability people first of all, they don't understand brands largely like when we really look at the If if in case like a larger brands have a team which sits out in their headquarters and study over there They would understand sustainability, but mostly sustainability go out to people in terms of PR or in a Let's say media section of the brand PR section of the brand or the what we call Which are very like event organizing part of the brand They are the one majorly who are speaking out the word to people, but they don't really understand it Right and every time they don't really go out there to cross check it with the people who sit over there with a degree Which can really help them understand that okay, what exactly sustainability is so a lot of miscommunication is there But also I feel that It's okay it's all about balance when there are a lot of brands who come out and they use this word for greenwashing to Attract people who are really thinking that hey, I want to buy today something sustainable Oh, I want to think for the environment and for my own health. I want to buy some sustainable product. They do Get let's say cheated by the brands who are using this as a greenwash But then also it's important when this happens other brands get angry who are really sustainable and they put in more efforts To bring their product out that hey, this is actually sustainable, right? And it helps it's kind of like a competition, right? And also there are good brands. I know I work with I think I don't want to name out a brand individually here But in each of the category Whichever industry we talk about from buying my clothes to the food I eat or let's say even if some cosmetic products I use there are brands in India and they are homegrown brands. They are not multinational brands coming from some other country They are from India itself. So locally produced that is also about sustainability that if you're making it locally It's more sustainable. But if you bring it from another country, there's already a carbon footprint of the whole Transportation of that product from another country. That's a huge thing. So but there are brands which are Indian they are making product for whichever category we want and I think I'm really happy about this itself because when what happens whenever I as a consumer I want to consume sustainable, but the problem is Akash who's producing it I'm ready to go out buy it But is there a brand who can offer me this thing? So I think there are brands who are using it in a good way To actually come out and do good work But there are brands who are using it for greenwashing and I think with time the Brands who are greenwashing will go low because people will be more aware and even the associations who work in the space for having a Authority which really kind of like approve or disapprove whether you can't be doing this and using these brands or using these keywords you can Cheat on consumers like consumer forums, right? Even I am trying to I will be is it's already mentioned in the book I'm coming with a petition on change.org partnering with them where we are requesting people to come and Learn more about what is greenwashing and how exactly the word sustainability should be used And we want to put it out to people to sign up with us as a pledge and then we want to take it to the authorities who are the decision-maker in this space to come out with a Whole set of guideline which brand needs to follow before they use any of such a keyword Sustainability you're gonna keep people in check. Yeah, and that's important because if I really want to help you that hey I'm telling you that read the book go out by sustainable. Do you feel like Akash they cheated on me? It's written sustainable. I bought it So I'm like hey, I'm sorry. I should have made it clear to you. They wrote sustainable But it's greenwashing so I'm like hey I need to come from this end as well to protect you because I'm the one sending you to the market to buy sustainable Maybe like Akash you already told me to buy sustainable, but but it's not cheating So I'm like, okay, let me come from this side as well and keep a check on these brands as well But hey, you can't cheat my consumers whom I'm sending to you to buy sustainably and so You know with with the power of influence, right? Social media has made a lot of people very socially conscious about what they put out there With your content being a consumer of your content or similar such content. Do you feel people? Have now become environmentally conscious as well So see Indi no doubt and one of the biggest credit goes to Covid right because Covid happened We realized that how nature is far more really powerful than we can even imagine right within a day The whole running country or the whole running world was inside their home, right? So and that kind of like it gave them a shock that hey We really need to respect nature or earth or we can't really play along play around with it So that's one thing, but then yes that made people aware about it that he we want to be more careful about it Then also constantly scientists putting out words that okay guys you had enough of fun A future doesn't seem good. That's a very important thing when this comes out Media picks it up Go and picks it up Obviously they decide what they want to do with the data right, but the data do go to them that hey, there's a Let's say warning we have got from the people whom we really trust that they understand the science What should we do about it? There are some people Let's say media media would say hey, I need to inform it to people my job is this I'm gonna tell everyone media does their job versus government or companies they think that hey our job is to make money So let's push it till the time we can right till the time we can keep Let's say bringing out fuel from the earth like underneath the earth We should keep doing it till the time we can keep mining keep doing it till the last edge That's how business runs right you go to the edge and you just take a you can write them before you hit the wall So that's what businesses are doing is of now. That's what government majority is doing is of now But also that they have other responsibility as well. They have to really look at the GDP of the country as well, right? They have to really look at the people's job as well They can't really say oh shut down the company right now because it's not right for the climate change But they'll be like hey if we really shut down the company There's so much money of government involved into it people stakeholders People who have bought the share or people who work in the company And do you really want us to shut the company down? No, right? So different let's say Insights we have to or government has to look at or company has to look at but for people They got to know company got to know government got to know so they have all started creating their own ways and Timeline that what can we really do about sustainability now? So for people as an individual for me? It's very easy. I can go sustainable today If I my monthly budget let's say for example is 50,000 rupees per month It might fluctuate to 55,000 or 60,000 max But I'll be able to be very much sustainable I'll find another store with night which might not be five kilometers from my home But now ten kilometers, but which is selling me all the groceries I want with zero plastic So I can be sustainable in terms of grocery zero plastic I can easily switch to a plastic toothbrush to Bambu toothbrush zero extra expense almost like even lower than that or Zero plastic like I don't have to buy plastic bottles. I can just buy a steel bottle and I can carry it every day Next time whenever I have to buy a car I can try to switch it to a renewable energy one or I can start taking a cab Which is not running on fossil fuel. I can switch to a car which is on electric. So see as an individual. It's very easy Right, I can make switch quicker But is a business which is already up and running the building has already been made the assembly line is there The whole thing operation is running me changing. It is very difficult. So right so to people first fall It's quite easy and people have changed on a larger scale I would say that people are conscious about it and There are people who are not yet because they are busy with their own life They have to pay a loan or they have to pay a school fee. So they are taking their own time But I think the changes there and government is also pushing on their own space India is one of the largest when it comes to solar energy India is one of the largest producer When it comes to solar power that's happening When energy is really up here in India and even we are pushing a lot in a lot of ways Which are not seen out there the subsidy we are giving to companies when it comes to renewable energy or Vehicles which are based on hydro fuel cell or EVs and So recently Because of the social consciousness and the education that is already out there about the climate and environment There are a lot of companies that are going green internally whether it's their offices being Renewable it's their office culture being more environmentally conscious and also taking action about the same So in your experience, I'm sure you interact with a lot of brands and businesses So what are some techniques that did inspire you that you'd like to recommend to everyone? I knew was especially so Obviously it comes in a very different way when it's about a company Company functions in a different ways. I said and individual functions in a very different way but obviously there are companies whom I have Interacted with and I work personally with time to time one of the very impactful thing. I actually like is Switching to a sustainable renewable energy source, right? Because you have an office you're stable You know that you want to be there and obviously it comes to the car It comes for the companies who have their own offices and they know that they're really there They're gonna be there for long term, but obviously if There are companies who are working with a co-working space or they have rented the office Then it's difficult for them to do it Because they don't have the ownership of that place and they don't know how long they're really planning to be there But if you really own the office if you're there one of the best Investment they can make in terms of investment as well It's one of the best thing they can do is to switch to solar energy, right? They are not only doing it good for the environment for the employee, but also for the company's Revenue as well, right? The money they are saving up on Energy consumption, that's one of the best thing they can do on a larger scale because it it will cut down a lot of carbon emissions in a clear way Second what they can really do is that if the company really believes into it they can start let's say bringing in Smaller practices which will reflect on their employee and their life They're on so for example whenever people ask me a hey as an individual what can I do? So I really give them a very good and a simple psychological solution is don't do anything larger than this Just take one step tiny one, which is change your plastic toothbrush to bumble toothbrush.  My day is already too busy now. This guy is saying eat Plant-based food then he's saying collar cab, which is electric Where do I find this cab and where do I look in the menu? How do I find where there's no plant-based food into it? So you're like confused But if I just tell you one simple thing how it works is when you wake up your mind is empty You're not thinking about anything. You're relaxed, right?  Why do I do this by the way? Right, so the throughout the day unknowingly you'll take Decision that hey, let's not buy the plastic bottle. No, you want to drink it from my bottle. I have it I'm carrying it so unknowingly and then you're doing it by yourself If I forcefully make you kind are you really kind and am I really kind because I'm forcing you first fall to be kind So I can't really force anyone or push anyone to be kind to earth or to nature or to environment, right? I can just request you once one thing is a request but ten things are not request ten things is a demand Hey, you're asking for too much. So one thing one request is just switch to bamboo toothbrush So offices can do similar sort of a thing in the office, right? Change one habit for people that hey, how many people do you really use in a month use as much as you want? It's up to you I'm not limiting you because might be possible office functions on paper They need it but how much do you use and in the end of the month can it be assigned to the HR department that hey? Can you calculate how much paper? were used by each employee and do they really need to plant a tree this month to overcome it Right so now they are Accountable for what they are doing and they will feel that okay. I used it. That's why I have the responsibility to do it Right and we are bringing this in their memory that okay what I take I need to give back Because most of the people think hey, I'm very sustainable Akash. I don't do anything wrong. I Don't have a private jet. I'm not doing anything wrong I go to office work come back make money eat simple food with two of my kids in the family We have a one simple car one bike for my wife or blah blah blah chillin goes to school in the bus Encephal we don't do anything, but I'm like hey if I start calculating how many ac's do you have how much car? Fuzzle fuel your car consumes Right and then your electricity bill your gas which you're using right or the way you've constructed your home the waste You guys generate which goes out of your home every morning or the clothes you have bought the technical Technological devices you have now.  You have of Netflix Amazon Prime or different different platforms, which you watch. What is the carbon emission of that? It's too much, but people don't feel it right So we need to come to a space in our mind We have to accept it like how we have accepted that we need to respect everyone. We need to give them their own space they need to make their own decision similarly we have to accept that It's not about the money we borrow we have to return It's also that this space or possibility of living on earth we borrowed We need to return it back so that other people can also coexist with us On being accountable that's our conversation with Akash. Thank you so much for watching and stay tuned for more