This video answers the exact question that I had when I first studied OS and Computer organization and architecture. While studying OS we are told that theres something called kernel space and user space and one is more privileged than the other, but never told how this privilege is enforced. At the end of the day if both programs run on the same CPU, using the same hardware, what exactly stops a user program from invoking privileged instructions is a question that plagued me. When I asked my professor, he answered with one word, "hardware" takes care of it. A very ambiguous useless answer. Interrupts are hella underrated man, nobody talks about them. Anyway thank you for your video, It will surely help those students who had the same question I had.
Studied Computer Engineering for 2 years before I switched to Computer Science, currently in my final year for CS. This video just made so many concepts click at Once. An Entire Uha 💡Moment. His Explanation of Hardware+Software, together with the simplified but very realistic illustrations it's just🤌🏾🔥.
Everytime a core dumped video comes out, the world gets 20% smarter. Huge salute to you man, I love your easy to understand and lucid teaching style. Using the information from the previous videos of the ongoing video series on the workings of computers, I have finished building an ultra simple 8 bit computer. You have been like a god when it comes to my quest of learning how computers work deep down. (I'm not in college yet, but I bet this is far more lucid than that)
Cpu architecture is kinda easy but it needs to be properly described and teached but by reading documentations i see that majority of devs can't teach things.
Please do a series on RISC-V based softcore CPU, and it's interaction with kernel code, how ISA and architecture are related and compiler's compilation process
what a generational run bro, been here since (almost) the start and praying to stay for long. i bet this is what it felt like for earlier generations to watch and study from 3b1b and Ben Eater at the time they were releasing their videos. i've recently started going the book route, going through the computer systems book, and i have to say you are such a good (and even on par) supplement. i can't wait for the virtual memory video. cheers bro
Your videos simplify boring textbooks so well, that I'm starting to feel inpired to create videos. Honestly, your Ability to create engaging scripts is beyond the curve. Keep improving 🎉
I literally started writing my own kernel like 1 month ago as part of my mastery at 42. Would have been way harder to understand what I actually have to do without your videos starting at how stack heap works until now with this video! Massive respect being able to explain SO complex topics so that they are easy to understand - shows crazy mastery of the subject. Keep up the amazing work!
Video suggestions: - how functions work in assembly (follow up to how if statements and loops work) - detailed explanation of a process and a program layout (stack, heap, static memory, command line arguments, where the program is in the process) and how a process is started and stopped - more system call things, like how you write something to output - foreign function interfaces (DLLs)
How i understand is cpu would try to run a program if you don't syscall "ExitProcess" even after reaching the last instruction of your code, it will result in segmentation fault. main function in c/c++ aren't real entry point in .exe file, your main function is called from 'mainCRTStartup' or something else and when you call return 0; from main function it doesn't return control to os like a lot of people describe it, it returns to 'mainCRTStartup' that then does something and calls ExitProcess with your return number 0.
Fun fact: in x86, the mmu page tables are in memory, so if the os for whatever reason maps a part of memory where a page table is located, into a proceses virtual memory space, then the proces can modify the memoy layout using usermode instructions.
I absolutely love how you mentioned about kernel mode drivers being potentially untrustworthy (and that you're sceptical about proprietary operating systems too). I think it's very important to help people realise that.
Professional software engineer here. I want to commend you for making this video; the topics are presented accurately, clearly, and with both honesty and integrity. You gloss over the concepts we don't need to understand (such as how interrupts are triggered from a hardware level or how program segments are loaded) and instead focus on only exactly what is needed to convey the topic. Your definitions of "kernel mode" and "user mode" are perhaps the simplest and most accurate definitions I've heard to date. Thank you for using an x86-derivative assembly language in your examples. In my experience, it's the easiest to follow for new students who have not had exposure to assembly language programming. Thank you for discussing what can go wrong when the Mode Bit is mishandled.
One more awesome video. Thanks! I know this one was already long but maybe you could talk in another video about how the OS end up in the correct address space, touching subjects like bootstrapping, boot loaders, bios, etc
As someone who has learnt a bit about handling hardware directly (reading and writing on pins directly instead of using readily-available functions), one of the main things that make it hard to handle it is timings. For example, to use an ALU (Arithmetic Logic Unit. It's the chip that does maths operations, basically) it needs: Inputs -a clock input (a signal that turns on and off periodically) -two or more register inputs (the operands) -another register to tell it which operation will be done -one or more enable inputs to tell the chip whether it can do its job or not (on/off inputs. Could be one for actually activating the chip, one to tell it the input data is ready to be read...) Outputs -an output register for it to write the result to -another output to confirm the result is ready to be read. why did i mention confirming the data is ready to be read, both in inputs and outputs? because things take time. for example, to change the value of a register, you might need, say, 10ns since you change its value until the pins in that register actually change value (think of halogen lamps, how they slowly turn on, maybe flicker until they are completely on after a few seconds), and if the CPU's clock is 1GHz, those 10ns are 10 periods of said CPU... and this is just to change the value of a single pin (or more specifically, a single register, as all switch values at roughly the same time) before doing calculations on it. you can activate other registers in the meantime. once you're sure the values are properly set, you activate one of the enable pins to tell the ALU that the registers are set and ready to be used. from that moment, the ALU may need a short while for its internal circuits to power up and "load" the inputs into its internal registers, charge up capacitors and stuff. for simplicity, i'll say it's another 10ns but it may be longer, depending on the implementation. you definitely shouldn't change any value at this point if you want to be sure the result is correct (the reason i mention changing the value of the register, is because, depending on the implementation, the chip may need you to give it the data one after another, in series, instead of all at the same time, in parallel, so knowing when you can change value for it to read the next one is important to know). and then the actual calculations start using various circuits insides (multiplexers, full adders, multipliers, shifting circuits, demultiplexers...) until finally, after a comparatively long time (let's say 100ns), the result is ready. again, it needs a short bit for the value to be completely set (another 10ns or so), and when it's done, the last output, the one confirming the data is ready to be read, turns on and the CPU can read the values and move on. and this is already a simplification, too, because i mentioned the clock as one of the inputs... but more often than not, that clock is not the same frequency as the one the CPU uses. it usually is several times slower, and the chips only "read" the inputs or "write" the outputs when the clock switches value (on the rising edge, or on the falling edge), so you have to take into account those delays too when writing the code to handle it. also, some of the inputs or outputs may have some tight time windows where they can be switched or set a value in, and if you miss that window, too bad, now you're doing a completely different operation than intended. all these timings are detailed in "timing diagrams" in a circuit's datasheet, where they usually show you a graph with the X axis being the time and curves and various types of lines and segments to indicate the values of the inputs and outputs and how they change over time. usually, they give you a few examples of how to do specific operations, especially of those operations that may need you to change the values of several inputs at a specific order and at specific times. let me give you an another example, only this time in a more... relatable scenario than a chip: taking a flight at an airport. you have booked a flight at 10 AM. to get on it, you have a 30 minute trip on a cab, spend 15 minutes to check in and leave the luggage, another 15 minutes in TSA and 5 minutes to enter the actual plane... but you and i know things don't work like this. there is traffic on the way there, which may delay you up to, say, 15 minutes, then you have to reach the check in counter (5-10 minutes of walking), which may have a short queue (another 10-15 minutes of queue). after that, you will probably find a very long TSA queue (30-45 minutes), and once past it, you will need to reach the boarding gate (5-10 minutes), where you'll have to wait for the plane to arrive at the scheduled time, and once it does, you have to wait another queue to enter it and, finally, once everyone is inside, you can take off. thus, to ensure you arrive on time, you have to start the trip at the latest (30+15)+(15+15)+(15+45)+10=2h 25min before 10 AM, so at around 7:35 AM. could you try to get there later? sure, but if a queue takes too long, you might just miss the plane... or if there's too much traffic, the check in counter might refuse you entry telling you it's too late for checking in. but at the same time, maybe TSA won't let you through until 50 minutes before the plane takes off, so if you arrive too early, you will have to wait outside. or if they let you in, the plane will not arrive earlier for you, so again, you have to wait, and so, you have a timing window for every step and the transitions between them. if someone who doesn't have this topic as rusty as i do wants to correct elaborate or simply explain better something i said, feel free to reply
Such security bits are stored directly inside a CPU, so they are not affected by the cosmic rays. Storing them in RAM would've been very slow and insecure in the first place.
In a multi-core environment it's also possible to have other designs handling transfer of data between kernel and user mode using shared memory or bus messages so the kernel could be running on one core and other cores submit their requests through messages to the core. I don't know if any operating system depends on this though.
Thank you a lot for making these videos! These are absolute gems, packed with so much interesting information about the low level inner workings of computers, that too is an easy to digest and engaging format! ❤
Your videos are fantastic; they helped demystify and clear up a lot of knowledge gaps in my understanding of computer science and programming, and I honestly believe these foundational subjects should be covered by any reputable programming course.
I remember the Minix experiment. Everything except a very minimal kernel runs in usermode. They had some really good measurements, like injecting bugs into the network driver so it crashes like a hundred times per second but still maintaining a decent throughput.
About the whole “other things besides the kernel running in kernel space”, this is very very common on apple devices! They’re called kexts (Kernel Extensions). For example, the Sandboxing system which isolates applications on iOS in order to protect the device is a kernel extension, and almost all syscalls made go through it
I am in love with the way you teach and explain each topic! And the cherry/ies on top are the examples like anti cheat, anti virus etc. feels like specifically targeted to the audience like me. Thank you for the amazing videos!
14:15 I remember back in Windows 3.1 days in the early 90s. The pain of cooperating multitasking is real. One badly behaved program would frequently lock up your computer.
Thanks for the amazing videos first of all, secondly I'm not sure if this fits entirely with the theme of your channel but would you ever consider making a follow-up to the video on concurrency but about concepts such as locks, semaphores, conditions etc.? Thanks, from a physics student who's interested in this stuff
"Can software other than the operating system run in kernel mode?" Me: "Crowdstrike!" Oh hey, you actually use them as an example. Nice. Though I wish you'd mentioned that the faulty configuration files were not part of the actual driver (which gets certified as 'safe to use' by Microsoft), which is how the faulty update got past Microsoft's certification process.
Technically the driver code was faulty, it just wasn't faulty on inputs that had been tested. If you have a browser that crashes when a video plays that has some corrupted data, the browser's code is still what is at fault. (I mean you can blame the browser as well as the image, but I think the point remains)
th-cam.com/play/PLqmq_KJdJJJhmxqTPHFn-aHpDYZXLPvqu.html&si=nWPtILxjCPU5VBf9 here's a playlist of his videos regarding your question. It's not ultra advanced but is very simple to understand and boils down how CPUs work
Great video! I wish I had it when I was a kid. Or not? I don't know. Maybe learning by doing is better. Still, liked it very much! Just a note - are you going to leave it not mentioned how Apple solved the problem of crashes with kernel extensions? I think it's worth mentioning, for completeness. Oh, and bare metal hypervisors. And maaaybe Multics? After all, rings is their logo.
i was hoping for the A20 gate :) my favorite is the ibm mainframe architecture (e.g. z/Arch). there is the "Supervisor State" and the non-privileged "Problem State" (which is excatly what users do: create problems :))
Thought A20 gate was used to address any memory more than 1 MB for compatibility with 8086. Was hoping to see more about "real mode", "protected mode". With the protected mode the memory and hardware I/O protection as well as the restriction of available instruction sets via rings was introduced.
@@frank-michaeljaeschke4798 A20 was a joke. real/protected was probably too specific for the more "general" approach of the video. i remember the stuff with CS DS ES but that's rather particular :)
What a masterpiece! The animations help focusing a lot.. And linking to real-world examples like the Croudstrike incident was amazing.. But I thought I would suggest to keep opinions out of such videos.. The implications that China being the origin of a kernel-mode runnibg process is dangerous, is a personal thing, that would be relevant only to a portion of people in some nations, for the rest of the world, USA based companies aren't more trustworthy, not one bit. Which is reasonable.. To make videos for a global audience, I advise you to be more thoughtful about such topics
For the Vangurad thing i isolate it from the Core system. Only my belove spy MS has to sitt on the main system.. but time is comming.. time for the Penguin!
I don't think there's anything like that. You just get a broken CPU / that's acting up unpredictably (working silicon transistors don't suddenly fail, if operated at safe voltages?) At design level you could add option to disable some (repeating) functional blocks, but that's only intended to be used once during manufacturing (testing/binning), not CPU performing self-test in user hands and deciding which limbs to cut off. That's how 8 core design with single broken core (due to manufacturing defect) can be sold as 6 core CPU, two cores are fused out / disabled before it leaves the factory.
great video i remember something about rings of privileges(?) in that context : userspace & kernel mode. I will look it up, but is it related to this ? Wouldn't it be a solution to those faulty kernel space programs or do they really need everything everytime?
This video answers the exact question that I had when I first studied OS and Computer organization and architecture.
While studying OS we are told that theres something called kernel space and user space and one is more privileged than the other, but never told how this privilege is enforced. At the end of the day if both programs run on the same CPU, using the same hardware, what exactly stops a user program from invoking privileged instructions is a question that plagued me.
When I asked my professor, he answered with one word, "hardware" takes care of it. A very ambiguous useless answer.
Interrupts are hella underrated man, nobody talks about them. Anyway thank you for your video, It will surely help those students who had the same question I had.
Whatever this guy says
Yesss Man... Even I have the SAME QUESTION... And after all these Year... The Concept got me cleared
@@AnantaAkash.Podder confusion bit cleared.
It's actually not ambiguous, otherwise nobody would understand anything- it's just that it's a very terse (and dense) topic.
Studied Computer Engineering for 2 years before I switched to Computer Science, currently in my final year for CS. This video just made so many concepts click at Once. An Entire Uha 💡Moment. His Explanation of Hardware+Software, together with the simplified but very realistic illustrations it's just🤌🏾🔥.
Everytime a core dumped video comes out, the world gets 20% smarter. Huge salute to you man, I love your easy to understand and lucid teaching style. Using the information from the previous videos of the ongoing video series on the workings of computers, I have finished building an ultra simple 8 bit computer. You have been like a god when it comes to my quest of learning how computers work deep down. (I'm not in college yet, but I bet this is far more lucid than that)
If you are building 8-bit computers without yet being in college, you will achieve amazing things in the future. Keep up the good work!
@@CoreDumpped thanks man, it means a lot to be acknowledged by one of my heroes
Impressive effort. Wish you all the best in your endeavors.
Cpu architecture is kinda easy but it needs to be properly described and teached but by reading documentations i see that majority of devs can't teach things.
Please do a series on RISC-V based softcore CPU, and it's interaction with kernel code, how ISA and architecture are related and compiler's compilation process
He has videos on those and this is yet another video regarding that
Babe wake up, new Core Dumped video just dropped! 🎉
Was gonna say this lol, the world gets 20% smarter everytime he posts
I was looking for this comment😂
New Core Dumped just… dumped
The way you explain OS concepts is above the level of most courses in even the most prestigious universities. Please never stop making these 🙏🏽
As a current electrical engineering student I am very glad I found this channel. Keep up the great work George!
Damn what a treasure.
I think subscribers should help this channel out give some donation to make sure the sustainability of it.
+1
I don't care about AI voice. I care his explanation and teaching, which is top notch.
Out of AI voices go, this one isn't that bad tho.
Fire thumbnail 🔥🔥
what a generational run bro, been here since (almost) the start and praying to stay for long.
i bet this is what it felt like for earlier generations to watch and study from 3b1b and Ben Eater at the time they were releasing their videos.
i've recently started going the book route, going through the computer systems book, and i have to say you are such a good (and even on par) supplement.
i can't wait for the virtual memory video. cheers bro
Your videos simplify boring textbooks so well, that I'm starting to feel inpired to create videos. Honestly, your Ability to create engaging scripts is beyond the curve. Keep improving 🎉
I literally started writing my own kernel like 1 month ago as part of my mastery at 42. Would have been way harder to understand what I actually have to do without your videos starting at how stack heap works until now with this video!
Massive respect being able to explain SO complex topics so that they are easy to understand - shows crazy mastery of the subject.
Keep up the amazing work!
Video suggestions:
- how functions work in assembly (follow up to how if statements and loops work)
- detailed explanation of a process and a program layout (stack, heap, static memory, command line arguments, where the program is in the process) and how a process is started and stopped
- more system call things, like how you write something to output
- foreign function interfaces (DLLs)
How i understand is cpu would try to run a program if you don't syscall "ExitProcess" even after reaching the last instruction of your code, it will result in segmentation fault.
main function in c/c++ aren't real entry point in .exe file, your main function is called from 'mainCRTStartup' or something else and when you call return 0; from main function it doesn't return control to os like a lot of people describe it, it returns to 'mainCRTStartup' that then does something and calls ExitProcess with your return number 0.
This is simply the best channel explaining how computers really work. Thank you SO much!
Great content. Even though I’m working as a .NET developer, it’s great to see the underlying technologies of what I’m doing.
Fun fact: in x86, the mmu page tables are in memory, so if the os for whatever reason maps a part of memory where a page table is located, into a proceses virtual memory space, then the proces can modify the memoy layout using usermode instructions.
There's even apis for writin to other processes memory pages.
I absolutely love how you mentioned about kernel mode drivers being potentially untrustworthy (and that you're sceptical about proprietary operating systems too). I think it's very important to help people realise that.
Professional software engineer here. I want to commend you for making this video; the topics are presented accurately, clearly, and with both honesty and integrity. You gloss over the concepts we don't need to understand (such as how interrupts are triggered from a hardware level or how program segments are loaded) and instead focus on only exactly what is needed to convey the topic.
Your definitions of "kernel mode" and "user mode" are perhaps the simplest and most accurate definitions I've heard to date.
Thank you for using an x86-derivative assembly language in your examples. In my experience, it's the easiest to follow for new students who have not had exposure to assembly language programming.
Thank you for discussing what can go wrong when the Mode Bit is mishandled.
OS and CompArc finally made sense together! Thanks a lot!
What I would have done for animations and videos like this when I was studying Computer Science 25 years ago!
This channel is god send for low level / Embedded developers , Keep going mate love your work .
One more awesome video. Thanks!
I know this one was already long but maybe you could talk in another video about how the OS end up in the correct address space, touching subjects like bootstrapping, boot loaders, bios, etc
this content is amazing, what a time to be alive
I've been looking for a channel like this ever since 2005
Love the work, please continue producing more on this low levels, and the graph shines.
I just can't explain how good this video is oh my god
As someone who has learnt a bit about handling hardware directly (reading and writing on pins directly instead of using readily-available functions), one of the main things that make it hard to handle it is timings.
For example, to use an ALU (Arithmetic Logic Unit. It's the chip that does maths operations, basically) it needs:
Inputs
-a clock input (a signal that turns on and off periodically)
-two or more register inputs (the operands)
-another register to tell it which operation will be done
-one or more enable inputs to tell the chip whether it can do its job or not (on/off inputs. Could be one for actually activating the chip, one to tell it the input data is ready to be read...)
Outputs
-an output register for it to write the result to
-another output to confirm the result is ready to be read.
why did i mention confirming the data is ready to be read, both in inputs and outputs? because things take time.
for example, to change the value of a register, you might need, say, 10ns since you change its value until the pins in that register actually change value (think of halogen lamps, how they slowly turn on, maybe flicker until they are completely on after a few seconds), and if the CPU's clock is 1GHz, those 10ns are 10 periods of said CPU... and this is just to change the value of a single pin (or more specifically, a single register, as all switch values at roughly the same time) before doing calculations on it. you can activate other registers in the meantime.
once you're sure the values are properly set, you activate one of the enable pins to tell the ALU that the registers are set and ready to be used. from that moment, the ALU may need a short while for its internal circuits to power up and "load" the inputs into its internal registers, charge up capacitors and stuff. for simplicity, i'll say it's another 10ns but it may be longer, depending on the implementation. you definitely shouldn't change any value at this point if you want to be sure the result is correct (the reason i mention changing the value of the register, is because, depending on the implementation, the chip may need you to give it the data one after another, in series, instead of all at the same time, in parallel, so knowing when you can change value for it to read the next one is important to know).
and then the actual calculations start using various circuits insides (multiplexers, full adders, multipliers, shifting circuits, demultiplexers...) until finally, after a comparatively long time (let's say 100ns), the result is ready. again, it needs a short bit for the value to be completely set (another 10ns or so), and when it's done, the last output, the one confirming the data is ready to be read, turns on and the CPU can read the values and move on.
and this is already a simplification, too, because i mentioned the clock as one of the inputs... but more often than not, that clock is not the same frequency as the one the CPU uses. it usually is several times slower, and the chips only "read" the inputs or "write" the outputs when the clock switches value (on the rising edge, or on the falling edge), so you have to take into account those delays too when writing the code to handle it. also, some of the inputs or outputs may have some tight time windows where they can be switched or set a value in, and if you miss that window, too bad, now you're doing a completely different operation than intended. all these timings are detailed in "timing diagrams" in a circuit's datasheet, where they usually show you a graph with the X axis being the time and curves and various types of lines and segments to indicate the values of the inputs and outputs and how they change over time. usually, they give you a few examples of how to do specific operations, especially of those operations that may need you to change the values of several inputs at a specific order and at specific times.
let me give you an another example, only this time in a more... relatable scenario than a chip: taking a flight at an airport.
you have booked a flight at 10 AM. to get on it, you have a 30 minute trip on a cab, spend 15 minutes to check in and leave the luggage, another 15 minutes in TSA and 5 minutes to enter the actual plane... but you and i know things don't work like this. there is traffic on the way there, which may delay you up to, say, 15 minutes, then you have to reach the check in counter (5-10 minutes of walking), which may have a short queue (another 10-15 minutes of queue). after that, you will probably find a very long TSA queue (30-45 minutes), and once past it, you will need to reach the boarding gate (5-10 minutes), where you'll have to wait for the plane to arrive at the scheduled time, and once it does, you have to wait another queue to enter it and, finally, once everyone is inside, you can take off. thus, to ensure you arrive on time, you have to start the trip at the latest (30+15)+(15+15)+(15+45)+10=2h 25min before 10 AM, so at around 7:35 AM. could you try to get there later? sure, but if a queue takes too long, you might just miss the plane... or if there's too much traffic, the check in counter might refuse you entry telling you it's too late for checking in. but at the same time, maybe TSA won't let you through until 50 minutes before the plane takes off, so if you arrive too early, you will have to wait outside. or if they let you in, the plane will not arrive earlier for you, so again, you have to wait, and so, you have a timing window for every step and the transitions between them.
if someone who doesn't have this topic as rusty as i do wants to correct elaborate or simply explain better something i said, feel free to reply
This channel is an invaluable resource.
What a lesson !!!! Very nice vid ! Thank's for your effort to explain in such very very detailed steps on how the thinks work !
Amazing content. Very illustrative and very well explained. Please, keep producing more and thanks a lot😎
Every computer science lecture should start with your videos to grasp the fundamentals of software principles
Dont show this video to bit-flipping solar particles
Such security bits are stored directly inside a CPU, so they are not affected by the cosmic rays.
Storing them in RAM would've been very slow and insecure in the first place.
@@mk72v2oqwoosh
You forgot to mention microkernel-based operating systems. In those the device drivers run in user mode.
In a multi-core environment it's also possible to have other designs handling transfer of data between kernel and user mode using shared memory or bus messages so the kernel could be running on one core and other cores submit their requests through messages to the core.
I don't know if any operating system depends on this though.
Thank you a lot for making these videos! These are absolute gems, packed with so much interesting information about the low level inner workings of computers, that too is an easy to digest and engaging format! ❤
Your videos are fantastic; they helped demystify and clear up a lot of knowledge gaps in my understanding of computer science and programming, and I honestly believe these foundational subjects should be covered by any reputable programming course.
I like your content so much!
Those videon explains complicated things in a terms easy to understand and well visualized with an animations.
Thank you!
bro you are good at explaining and it seems to me you know a looot. you actually inspired me to learn low level programming
this is just a gem of a channel 💎 top notch 👍👍
I'm learning so much it's insane
There's some charm of how he explains everything.
Love your videos. Can’t wait till you get to packet scheduling that concept’s implementation has eluded me for a while
This video is a great summery. Thank you.
I remember the Minix experiment. Everything except a very minimal kernel runs in usermode. They had some really good measurements, like injecting bugs into the network driver so it crashes like a hundred times per second but still maintaining a decent throughput.
I love your videos, George! I always learn loads of new stuff when I watch them!
Impressive explanation within a beautiful material.
awesome explaination, i hope to see a video explaining the moment the OS gets loaded and gain control, thank you
Another brilliant video. Keep it up man.
Please make a video about the MMU and how it is interacted with!
Memory Management next? Love the vidoes! :)
Magnificent video, as always!
Brilliant animation and explanations. Thanks ❤
Amazing material as always 🎉. The white flash representing interrupts is dangerous for epileptics. Could it have been represented differently ?
Actually is gray, but I guess is still too bright.
The flashing is the problem. A graphic like an exclamation mark❗ would be safer.
This video is so good. Thank you so much
About the whole “other things besides the kernel running in kernel space”, this is very very common on apple devices! They’re called kexts (Kernel Extensions).
For example, the Sandboxing system which isolates applications on iOS in order to protect the device is a kernel extension, and almost all syscalls made go through it
Another excellent video! ¡Otro excelente vídeo! Outro vídeo excelente!
I am in love with the way you teach and explain each topic! And the cherry/ies on top are the examples like anti cheat, anti virus etc. feels like specifically targeted to the audience like me. Thank you for the amazing videos!
Thanks a LOT Core Dumped... I was badly asking you about this Topic... Many Many Thanks😊😊
14:15 I remember back in Windows 3.1 days in the early 90s. The pain of cooperating multitasking is real. One badly behaved program would frequently lock up your computer.
Thank you for creating such informative videos
Thanks for the amazing videos first of all, secondly I'm not sure if this fits entirely with the theme of your channel but would you ever consider making a follow-up to the video on concurrency but about concepts such as locks, semaphores, conditions etc.?
Thanks, from a physics student who's interested in this stuff
Yeah, that definitely fits my channel. That topic is called: "Thread Synchronization" and I'm already working on it.
@@CoreDumpped thanks so much!
"Can software other than the operating system run in kernel mode?" Me: "Crowdstrike!"
Oh hey, you actually use them as an example. Nice.
Though I wish you'd mentioned that the faulty configuration files were not part of the actual driver (which gets certified as 'safe to use' by Microsoft), which is how the faulty update got past Microsoft's certification process.
Yup. Was waiting for the Crowdstike call out when that discussion came up.
Technically the driver code was faulty, it just wasn't faulty on inputs that had been tested.
If you have a browser that crashes when a video plays that has some corrupted data, the browser's code is still what is at fault. (I mean you can blame the browser as well as the image, but I think the point remains)
@@computerguymaybesorta fair point, I guess.
I cannot give you enough money for these videos.
Really good. I am softwaredeveloper and i love to know how my code works in a System.
there are also hypervisor mode for some CPUs
great video
Great as always
The man is back with another deep dive
th-cam.com/play/PLqmq_KJdJJJhmxqTPHFn-aHpDYZXLPvqu.html&si=nWPtILxjCPU5VBf9 here's a playlist of his videos regarding your question. It's not ultra advanced but is very simple to understand and boils down how CPUs work
Great video! Appreciate it
Great video! I wish I had it when I was a kid. Or not? I don't know. Maybe learning by doing is better. Still, liked it very much!
Just a note - are you going to leave it not mentioned how Apple solved the problem of crashes with kernel extensions? I think it's worth mentioning, for completeness.
Oh, and bare metal hypervisors.
And maaaybe Multics? After all, rings is their logo.
Amazing video. Thanks for sharing.
Another banger as always
i was hoping for the A20 gate :)
my favorite is the ibm mainframe architecture (e.g. z/Arch). there is the "Supervisor State" and the non-privileged "Problem State" (which is excatly what users do: create problems :))
Thought A20 gate was used to address any memory more than 1 MB for compatibility with 8086. Was hoping to see more about "real mode", "protected mode". With the protected mode the memory and hardware I/O protection as well as the restriction of available instruction sets via rings was introduced.
@@frank-michaeljaeschke4798 A20 was a joke. real/protected was probably too specific for the more "general" approach of the video. i remember the stuff with CS DS ES but that's rather particular :)
First I thought it was another shoddy AI generated video, but damn! the animation is great, the script is well written, I just enjoy it very much.
BEST VIDEO IN MY LIFE!
Wow, your videos are awesome!
Do you have any plan to make a video of hypervisor? It would be great if you made this.
Pls upload videos frequently
What a masterpiece!
The animations help focusing a lot.. And linking to real-world examples like the Croudstrike incident was amazing.. But I thought I would suggest to keep opinions out of such videos.. The implications that China being the origin of a kernel-mode runnibg process is dangerous, is a personal thing, that would be relevant only to a portion of people in some nations, for the rest of the world, USA based companies aren't more trustworthy, not one bit. Which is reasonable..
To make videos for a global audience, I advise you to be more thoughtful about such topics
Absolutely goated videos 🔊🔥
Thanks man 👍
Hey would be cool to have book recommendations on every video, to go more in depth
Very interesting video. All your videos are very interesting.
PERFECTION
Great video! I'm wondering how does multithreading fit into this scheme? Do syscalls block all threads?
For the Vangurad thing i isolate it from the Core system.
Only my belove spy MS has to sitt on the main system..
but time is comming.. time for the Penguin!
Man you are awsome!
more great content! thanks!
Excellent
I am trying to rotate a pos machine printer motor with interrupts. This was helpful, and the video came right on time...
Nice video - thanks :)
This video is 🔥
Surpassing what college ever taught me
I love this animation, not only his all animation is the best for teaching please is it Adobe after effects or other tell me
In an earlier video, he revealed in the comments that this is done in (prepare to have your head blow up) PowerPoint.
A modern CPU has billions of transistors. What happens when a few of them fail? Is there some sort of error correction at that low level?
I don't think there's anything like that. You just get a broken CPU / that's acting up unpredictably (working silicon transistors don't suddenly fail, if operated at safe voltages?)
At design level you could add option to disable some (repeating) functional blocks, but that's only intended to be used once during manufacturing (testing/binning), not CPU performing self-test in user hands and deciding which limbs to cut off. That's how 8 core design with single broken core (due to manufacturing defect) can be sold as 6 core CPU, two cores are fused out / disabled before it leaves the factory.
Let’s go, Neet Code haha
please do a video on virtual memory
amazing video :)
Great video! But the CrowdStrike thing happend in July, not in September
Yes, my bad. I got confused cause it looks like yesterday.
Journey to channel name sources, without it there will not be core dumps 😉
great video
i remember something about rings of privileges(?) in that context : userspace & kernel mode. I will look it up, but is it related to this ? Wouldn't it be a solution to those faulty kernel space programs or do they really need everything everytime?
awsome stuff
Been here since the near beginning.