WHY IS THE STACK SO FAST?
ฝัง
- เผยแพร่เมื่อ 4 มิ.ย. 2024
- In this video we take a look at the Stack, which sometimes is called Hardware Stack, Call Stack, Program Stack....
Keep in mind that this is made for educational purposes, so many of the information is oversimplified for easy understanding. - วิทยาศาสตร์และเทคโนโลยี
For people disagreeing on the stack grown upwards (address) in the animation.
As someone else commented:
"Growing downwards is a convention from when computers had small memories and the stack was placed at the end of the data segment... nowadays the stack can be anywhere, but the convention stuck on, at the end of the day it makes no difference".
Did people not see your note at 9:03?
That's a silly thing to disagree with. Up, down, it's a subjective choice unless you define which way the address range is incrementing.
Also I think you confused internal and external fragmentation
It's just as bad in real life; uptown, downtown. Up because why? North? South? Towards the mountains, or ocean? Meh, some arguments are really not worth the trouble, you adapt and move on; unless it is family, then frankly it's war. ☺
What you used to animate this video?
there is severe lack of educational material on youtube that teach conceptual subject of software and programming, I'm glad I found your channel keep up the good work my friend !
Nah you just need to know how to search properly and you will find gems
Definitely. There’s an overwhelming abundance of good videos for surface level beginner material because that’s where you get the most viewers. Once you get deeper into a topic there quickly becomes only a select few creators that are willing to make more difficult videos for a much smaller audience that is at that level.
There's some excellent material, e.g. MIT OpenCourseWare. Of course quality is rarely recognized, let alone promoted.
There is actually a huge depth of information. Just look around and maybe try and figure out exactly what to look for
there is lack of people who care about it, i think there is plenty of content, though quality is not as in this video...
Code salesman: **Slaps roof of stack**
"This bad boy can fit so much data in it."
Only 3 minutes in, but I've had dreams of a youtuber with such a beautiful and minimalistic style that doesn't just go over brief basics. Thank you!
Edit: It's so deeply upsetting that the best and most interesting learning channels get such little attention
its the basics delivered to you by an ai voice lol. its nice but its not that nice.
People who explain complex things in this simple way are considered a rare coin. You have gained a large number of subscribers with only three videos. Please continue, perhaps this channel will achieve great success.
These are some of the fundamentals that should be covered on any software development educational setting, specially when they're presented in such a visual fashion. Thank you for making this.
Masterly done, the best video about the stack. A gem. Unfortunely not all people are made to teach.
Thank you dearly for going over everything you did. Please don't ever feel pressured to summarize or assume the viewer knows, if everybody assumes that everybody already knows (as much of the programming world seems to do) information becomes insular and difficult to access. You're doing an amazing public service.
I really appreciate how considerable you are for mobile viewers. Many programming youtubers just show their computer screen and the letters of the code become miniscule
This was the PERFECT length and complexity for an introduction to this topic! Concise, yet doesnt presuppose a ton of knowledge, while also not delving into a bunch of side comments on details/scenarios that do nothing but stroke the creator's ego while confusing the audience :)
JUST enough to know where the OS fits, types of memory, stack size constraints, etc., to understand the implications on performance and utilization, while still focusing solely on the stack itself. It leaves the viewer with tons of questions to learn more, but few to no questions about the content presented here. Bravo!
It's just great! I watched other videos about the stack, understood how it works, but there were a lot of questions, and in this video you just visualized everything perfectly and explained it! I'm really looking forward to a video about a heap
Incredible video! As a 4th year CS major, I haven’t seen such a detailed and intuitive description of the stack in any of my classes. Looking forward to the heap video!
Good educational and informative video, as always, nice job!
This channel is GOLD 🔥! Now I know what the Cache, Swap etc is. True gold! Please keep making these videos ❤
This was such an amazing video. I really believe the way this video articulated each point and built up to the answer. The pace was also great. Please keep up these sort of educational low level videos!
I'm mainly only receptive to video educational content and I found yours to specifically resonate with my learning style. Earned a sub, well done.
I’ve always been interested in programming on a conceptual level, but never really had the time or resources to research them myself (I’m just a hobbyist, who’s learning in my free-time). Your videos are very fun and interesting to me and I feel like I’m learning a lot from them. I’m very excited to see more in the future!
Dude, finding your channel was awesome. As a chemist who likes to code the repetitive homework stuff, learning these concepts is very nice insight. Thaaaaanks!
I've been looking for some explanation like this for years, so I could understand some concepts which didn't live my mind for all that time. And this channel just appeared in my recommendations. Thanks for very informative video.
This TH-camr is cracked mannn let’s go!!! Such a beautiful presentation of knowledge, thanks man! Keep doing what you doing brother 💪❤❤❤❤
Great video, thanks for sharing this knowledge.
i really like how elaborately you explain these concepts, as someone just getting into systems programming, your videos are really helpful to me
Wow this was awesome! In all of the discussions on stacks and heaps I have heard online and in university I’ve never heard anybody explained that the CPU has a stack register. I can believe I didn’t know that. Makes a lot more sense why the access is so fast.
There are also register stacks. e.g. in SPARC. I could try to explain it in a comment but the Wikipedia article does it better.
Best video I’ve seen in a while. Perfect blend between programming and hardware information.
I incidentally did happen to know all of these things already, but you still get a like from me! The visuals are excellent and the topics are some of my favourite. I look forward to more like these!
Amazingly done. I finally understand what on earth the stack even means. Why its so fast is secondary. Thank you for this !
This was such a great video. I learned this sort of stuff in university, but i always find it tough to brush up on outside of that environment. This was thorough, entertaining, and not bogged down by hardware specific implementation details. Subbed and looking forward to all of your future work 👍
I think this is the first video I've ever seen from this channel. Really liked it.
More videos please! Your method keeps me from being overwhelmed.
The stack usually grows downward from before the kernel, giving it plenty of space, and reducing the chance of a stack overflow. Theoretically, you could get the stack to loop back around, but even then, data grows upwards from right after the kernel, so you would have to fill your stack a lot, so that it loops around (I have seen examples where that is 524,288 memory locations, and that’s for a raspberry pi), and then have so many files that it is feasible that the stack will overwrite one.
I don't know what I'm doing but it's probably right cuz i got this video in my algorithm. I can't believe how low the subscribers are on this channel when the quality of your content is so high. The minimalistic style of animation is also a huge relief as compared to others who focus more on the animation than the explanation. This was a breeze of fresh air. Excited for the video about heap!!
Great vid! I have always wondered why I can't add to an array, this makes it perfectly clear to me
I'm learning about memory allocation in c++. (self taught).
I have watched numerous videos on stack / heap. They are all very confusing and the fact that you did this so well in such a short time is of great value to me.
I know have a understanding of whether i want to choose stack or heap. I also understand why i would use the smallest primitive type possible so that the cache is not wasted.
Very greatful. Thankyou
Excellent, as an embedded software dev, these kind of videos are a rare gem. Keep em coming
I love your teaching style and sense of humo...
This channel is like a breath of fresh air for someone like me who's trying to learn Rust but hasn't studied CS formally or been properly exposed to the fundamentals. I'm not a bootcamp graduate, I'm just a self-taught frontend dev who's trying to break into systems-level development. Keep up the great work ❤
If you want to work with embedded systems, I would suggest you take an overview of OS and COA.
Your style of explaining is quite comfortable to follow and easy to understand. Keep making these videos. Already subbed !
wow i got recommended this video and damn it makes it so easy to understand with animations man THANK YOU!
Your upload schedule is amazing. Keep up the good work.
if teaching something an art, you are the artist. I speak python and now a days learning c++ just for fun and your videos explain a lot of things here.
Excellent work, pure content with simple description and impressive animation. You hit the point with every sentence. I'm looking forward to the "heap"
Your clear explanations and diagrams in video are very intuitive! I have comprehend a lot of things than my university experience.. appreciate that!!!
Your style of teaching is good. By starting with a misinformed premise, then correcting it, using it as cure against "this is why we don't just do that". This is typically the reason why I don't understand many concepts, not just in compsci. "why doesnt it just do *this*" and then I can't accept the information given to me because I think it is wrong information. This is important, because the way we learn is by building a tower of understanding using smaller blocks. If any of those blocks are wrong or misinformed, then the whole tower will fall down.
This has got to be one of the best videos I've watched on TH-cam concerning the art. Thank you so much. Do you have any book recommendations?
Edit: And I hesitated to watch when it was recommended to me 3 days ago. Fast forward now I'm subscribed!
Best low level content on this platform. No question
Best video ever! Keep this awesome channel growing!
How much background work and knowledge does it take to explain it so neatly? It's pretty amazing.
Great video! Liked after hearing the proper use of the word “datum” at 8:28. 😉
That was the best explanation of memory stack I have ever seen.
What a concise explanation accompanied by a very intuitive graphics! Kudos to you!
Please continue delivering this kind of high quality videos 😊
This is a very well-made video about stacks. Nicely done. 5 gold stars for you.
Thanks a lot for going into such detail. This video was so well crafted, definitely subbing. I was curious if you have any recommendations for other resources which go into systems concepts that you’d recommend
Can't wait for the Heap video!! This was great
Great video, you are doing a great job explaining low level concepts in a very digestable way. I am excited to see your next videos
awesome video, just like the last one. please do make a video about the heap and virtual memory. thank you, stay well
Thank u for sharing this much brilliant knowledge. I’ve learned a lot from this video. Appriciate it 🥰
Exceptionally Great explaination with examples. Keep teaching stuff like this.
Most of this stuff I already knew. But I was always concerned about knowledge holes.
The way you explain things in your heap video and ESPECIALLY this one reassured me of the things I knew, explained things I never questioned just enough to allow me to piece the rest together by myself and explain things I didn't know before so well I could just pick them up without issue.
If I had to suggest one thing it would be to make followup episodes on topics to explain more advanced concepts. Like in which direction does the stack grow and why? How do function calls store data on the stack to return? What are stack cookies and how do they contribute to security against buffer overflows? How does malloc organize the heap? Stuff like that for example.
You don't see this often on TH-cam at all. Take my sub! If I had the money I would become a member without second thought.
You have earned my subscription, that was a better crash course than my SOEN classes
Great animations and concepts; brief, but thorough!
This is great. Easy to understand and follow.
i am eagerly waitin for more your content, after working 9 years in the industry as app and web developer, I want to dive in low level programming, but only two channels I got which are educational, you and low level programming. keep posting
Hi George, love your videos. Thanks for this good work!
Thqnk you! 👍one of the most informative vids on it I've seen at least
Very eloquent and detailed explanation. I liked the animation too. Keep it up!
I think it's worth elaborating on the relationship between the stack and the cache. For most applications, the cost of allocating and deallocating memory isn't actually a big proportion. What really affects performance is that arrays with short and fixed lengths declared directly inside functions are usually kept in the L1 Cache. Since it's the closest storage to the registers, even random read and write operations are super fast; whereas for space allocated on the heap, which is typically larger, it tends to be kept in higher-level Cache or even in MEM, but basically never in the L1 Cache. A simple experiment can prove this: allocate as much memory as possible of the same size on both the stack and the heap, and then perform matrix multiplication or matrix-vector multiplication calculations on them, and the performance difference is quite clear~
This was a really cool well explained video. Please do more of these!
Dude wtf this is so good, please dont stop doing this
My new favorite channel. ❤
While the computer voice is a bit strange at first, the video is definitely pure gold. honestly, it's awesome to see such great content on youtube, definitely keep up the good work! btw, it'd be awesome if you could add the sources to the description :D
Very good video, the only point missing is why their is padding and memory alignment. The answer is that it is still cache related, but it's a little more complex so understandable it was not mentioned.
This is amazing, looking forward to learn more about optimisation and security
waaaaaaauw!!!!! neighter in university nor in any other place nobody explains that how stack works and how processor cache works. you're awesome bro.
Great video! Really clear information and I like your humor lol
Good video. I just want to say that local scalar variables might not even end up in the stack. If their locality is small enough the compiler might decide to dedicate CPU registers for them. That’s why you sometimes get “this variable is optimized away” when trying to inspect it in a debugger.
Thank you very much~ I totally love this video. I finally make myself clearly understand these foundation knowledge;) I have been told again and again that allocating in stack is faster than in heap but no one try to tell me why before you XD. Thanks thanks thanks~
Loved this video. Great explaination, high video quality and a wonderful illustration!
Love this. Thank you!
Great video. Love to see more!
Phenomenal video, wow, thank you!
Thanks for the knowledge!
An iterative solution usually has very little difference in the actual machine code, except you manage the "stack" for it directly. Thats usually rather handy if the local frames dont change much, or only are relevant till the next recursion call, since you can reduce them to just one in that case (tail-end recursion).
Thats for an iterative solution that's pretty much identical to the recursive one, there are of course others cases too.
this is some phenomenal explaination, i think its even better than my uni courses, well done, looking forward for more videos from you
Another amazing video, thank you for your time and effort!❤
Your making GPT smarter be careful lol. Love the video!.... were you one of the people laid off? The depth your explaining these concepts... is way above par. I'm flabbergasted. 🎉🎉🎉🎉🎉
Amazing video and the visuals were really on point. Thanks!
Oh boy this is phenomenal! 🎉
You boy this is dope as f# , please continue making videos it makes me excited for computer science
Superb video, thank you so much, love from India 🇮🇳🇮🇳🇮🇳
I love this content, great job!!!
This is a fantastic video. Thank you! Subscribed!
Very concise and logical pill of knowledge on topic with nice and clear animations. Very good job!
Level of expected prior knowledge ideal for topic. Againg great job sir!
No need to excuse for simplifications, level is exacat how should be for this form and topic.
holy.. i knew everything you said in this video but maaan.. that animation! love the video, sub clicked!
teaching in a visualized way is the best!
I'm more or less an absolute beginner in this topic and don't know too much about computer science, but I love this video!
I still have a couple question and it would be great if somebody could answer some of it!
1. Is it true: The main reason why a stack structure is used is to prevent fragmentation. While it works by the "last in - first out" - principle I can still access all the data at any point without push/pop any values.
2. Where is the heap when preallocating memory? Is it a part of the preallocated memory or is it just the stack and the heap is an completely individual region? If the preallocated memory is shared by both stack and heap (but seperated), can you influence how much is reserved for the stack?
3. Is preallocating memory something you usually actively do or is it something automatically done for you? My guess would be that every program, without specifying it, allocates memory, but to get the most out of it (large enough to prevent unnecessarily requesting more memory, while not being excessively large) you can optimise the choice of how much memory to preallocate.Is it true and if not, what's really happening?
4. Can you increase the stacks size? Probably yes but it's not straight forward, because you would need more contiguouse memory right next to the stack, which I would think is unlikely (especially if 2. is correct and the heap sits right next to the stack).
(Little bit OT question and some unnecessary thoughts on it: Could you migrate the entire stack to a different, larger, contiguouse memory region [and does it make sense/is it used in practice]? From how I understand the stack-datastructure also no, because a direct migration would turn the stack upside down. Opt1: So either you would have to use a stack structure on the migrated stack, where the stack pointer counts downwards or Opt2: when migrating you start writing downwards beginning with the future stack pointer to the target stack origin. Opt3: you do some buffer stuff with or maybe even without using additional "support memory".)
I’m sure that this videos are very hard to make, especially with all the illustrations and the animation but I have to say that you explain those topic in a very good way that I can easily understand.
Keep the good job and I am waiting to see more of these videos in this topics which are very interesting
This is very educational, the type of knowledge that I am not taught. Please do a video about the CPU
Thank you for this video!!!
the best explanation i have ever listened
Amazing visual representations! Are you using motioncanvas?
Believe it or not, it's just Power Point slides.
Dayuuuuuuuuuuuummmmmmm
Thisss videoooooo iss fireeeee 🔥🔥
I'm your new subscriber