Doubt: the tcp handshake that happens between the client and server is happening on the listen stage or on each accept stage? can you explain this if possible or direct me to a resource from where i can understand this better. Thanks for the amazing explaination.
5:48 'As application developers we don't need to know how it works, just that it does', lol what? Who knows how it works then if not application developers? This is probably why so many aiming for entry level position have trouble landing work... "Uhm sorry sir I don't know how it works just that it does - that'll be $75/hour please" - If i google how to install a door I generally am expecting the tutor to know how to install a door. Is there an analogy for the difference in unix and af_inet sockets? At my next programmer interview I just answer each problem with 'click download', cheers!
Damnnn i havent been in UIC since 2017 but we once talked randomy for half an hour at your office while i was looking for another professor, and you shared your thoughts on getting a masters with me. Hope youre doing well Mr Kanich
Really appreciate the clarification on the server side of the two different fd's. I think that was muddy in my head and now with the diagram and your explaining the difference, it all makes more sense!\
Gemini 1.5 Pro: This lecture is about memory mapping (mmap) and its role in virtual memory. The speaker, Chris Kanich, explains that memory mapping is a technique that allows a process to access a file as if it were directly mapped into its memory address space. This means that the process can read and write to the file using normal memory access instructions, without having to explicitly call read or write system calls. [1,2] One of the benefits of memory mapping is that it can improve the efficiency of memory access. When a process reads from a file using traditional read system calls, the data must be copied from the kernel address space to the user address space. This copying can be time-consuming. With memory mapping, the data is already in the process's address space, so there is no need to copy it. [1,2] Another benefit of memory mapping is that it can simplify the process of sharing memory between processes. Two processes can map the same file into their respective address spaces, and any changes made by one process will be immediately visible to the other. This can be useful for things like shared libraries, which can be mapped into the address space of multiple processes at the same time. [2] The lecture also discusses the concept of copy-on-write (COW). COW is a technique that allows multiple processes to share a read-only page of memory. The first process to write to the page will cause a page fault, and the kernel will create a private copy of the page for the writing process. This means that the original page can still be shared by other processes, and the writing process will not affect them. [2] Overall, memory mapping is a powerful technique that can improve the efficiency of memory access and simplify the process of sharing memory between processes.
I've been doing packet decodes from packet decoders where first introduced (really before Ethernet was invented) and have read and watched seemingly countless examples of tutorials on this subject. This is easily the best one anywhere.
Wanted to add in another thank you for all of your videos. They're really helpful for teaching myself material that I never had the opportunity to take classes for in college :)
It is also worthwhile to test that the system does what the documentation seems to imply it should do. Try mmap on a large file using different flags, see what happens when the file is cashed in main memory.