Gabriel Parmer
Gabriel Parmer
  • 42
  • 162 031
The Composite Component-Based OS
FOSDEM 22 presentation. Composite is a microkernel that enables component-based system design. This video gives an overview of many of its unique abstractions, and an overview of some of the research we've conducted with it.
มุมมอง: 466

วีดีโอ

GW AdvOS: Microkernel IPC Design and Optimization
มุมมอง 7853 ปีที่แล้ว
What does it take to implement fast IPC in a microkernel? What challenges does it present, and what solutions do we know about? Dive in to find out more!
GW AdvOS: User Management of Kernel Memory
มุมมอง 3593 ปีที่แล้ว
This video discusses the unintuitive aspect of capability-based OS design: user management of kernel memory.
GW AdvOS: Capability Delegation and Revocation
มุมมอง 2453 ปีที่แล้ว
Microkernel systems must enable means to constrain the set of resources each protection domain has access to, and to specialize different protection domains around access to specific resources. Delegation and revocation are an essential part of that, and we discuss the means of exporting delegation and revocation policy to user-level in Composite.
GW AdvOS: Capability-based OS design
มุมมอง 6653 ปีที่แล้ว
I talk about a very simple set of resources that are sufficient for safely abstracting most of the underlying kernel resources. This provides a foundation for isolation, modularity, and the definition of higher-level system abstractions.
GW AdvOS: What makes an interface good?
มุมมอง 3143 ปีที่แล้ว
I discuss a few metrics that we aim to support when we write interfaces, and a number of properties of interfaces that are important to keep in mind as you read and write code. Considerations include: - Composability - Separation of Concerns/Orthogonality - Separation of Mechanism and Policy - State management factors including liveness, statelessness, idempotence - Commutativity - Simplicity &...
GW AdvOS: System Module Implementation Concerns
มุมมอง 2403 ปีที่แล้ว
In this installment, I'll talk about what makes systems-level models special and challenging. What do we have to consider when we're writing system modules that we don't necessarily need to consider in applications? I discuss: - Naming - Resource operations and interface design - Resource data representation - Data aggregation through batching - Action aggregation through offloading - Concurren...
GW AdvOS: System Design, Abstraction, Modularity, and Structure
มุมมอง 8313 ปีที่แล้ว
I discuss the necessary topic of how systems constrain complexity, and can scale up to the 10s to 100s of millions of lines of code that we see around us. Specifically, I discuss: - Essential vs. Accidental Complexity - Abstraction, modularity, and system structure (layering, hierarchy, DAG) to handle complexity - The centrality and importance of interfaces in system design - Simplicity as key ...
GWU OS: Security
มุมมอง 3353 ปีที่แล้ว
In this talk, we'll discuss a 10,000-foot view of systems security. I'll go through many of the fundamental concepts around access control: the access control matrix, its implementation in access-control list and capability table mechanisms, some insights into how access to different system resources might be assigned through the constrained information flow of the Bell-LaPadula policy, and, fi...
GWU OS: Crash Consistency
มุมมอง 5133 ปีที่แล้ว
In this talk, I dive into file system crash consistency to answer the question if we can maintain a filesystem that makes sense even if we remove power at inopportune times. This is an instance of the general notion of consistency that underlies quite a bit of system design in parallel and distributed systems, and data-bases. I cover fsck, journaling, and copy-on-write.
GWU OS: File System Implementation for Devices
มุมมอง 3623 ปีที่แล้ว
How do the physical properties of devices translate into file system optimizations? This video investigates the esoteric properties of Flash NAND devices, and how they demand a very odd FS structure. We'll also discuss how the optimization for rotational accesses motivates interesting disk structures. Last, we'll see how most modern systems that use SSD combine both structures!
GWU OS: File System Indexing
มุมมอง 5583 ปีที่แล้ว
How is file and directory data stored and organized on disk? How do these organizational mechanisms optimize for the rotational versus head seek properties of disks? How is free space tracked on disk? These questions and more!
GWU OS: Filesystem API
มุมมอง 4213 ปีที่แล้ว
Abstractions and interfaces are really important. In this video, I'll talk about the UNIX FS API, and why hierarchy matters, why the breakdown of the API in to path-based and fd-based interfaces is important, and how the polymorphic nature of the API enables a lot of flexibility.
GWU OS: Page-tables
มุมมอง 6273 ปีที่แล้ว
We continue our discussion on memory protection by diving into page-tables. We cover the trade-offs in the design of page-tables, how they relate to TLBs, and how nested or extended page-tables provide hardware acceleration for virtual machines.
GWU OS: Memory Protection
มุมมอง 7223 ปีที่แล้ว
In this video, we discuss how memory protection is provided, both in software, and in hardware. We address the motivation for this, the goals of virtual address spaces, and simple hardware that can do virtual to physical memory translations.
GWU OS: Memory Allocation - Slab and Buddy Allocators
มุมมอง 8K3 ปีที่แล้ว
GWU OS: Memory Allocation - Slab and Buddy Allocators
GWU OS: memory allocation - malloc and free
มุมมอง 2.4K3 ปีที่แล้ว
GWU OS: memory allocation - malloc and free
GWU OS: Linux and Real-time Scheduling
มุมมอง 9193 ปีที่แล้ว
GWU OS: Linux and Real-time Scheduling
GWU OS: Scheduling
มุมมอง 5873 ปีที่แล้ว
GWU OS: Scheduling
GWU OS: Deadlocks
มุมมอง 3793 ปีที่แล้ว
GWU OS: Deadlocks
Lab 6: Synchronization and Condition Variables
มุมมอง 6353 ปีที่แล้ว
Lab 6: Synchronization and Condition Variables
GWU OS: Synchronization Examples
มุมมอง 3413 ปีที่แล้ว
GWU OS: Synchronization Examples
GWU OS: Synchronization Abstractions
มุมมอง 6133 ปีที่แล้ว
GWU OS: Synchronization Abstractions
Lab 5: working with race conditions and synchronization
มุมมอง 2333 ปีที่แล้ว
Lab 5: working with race conditions and synchronization
GWU OS: Synchronization - atomic instructions
มุมมอง 6253 ปีที่แล้ว
GWU OS: Synchronization - atomic instructions
GWU OS: Synchronization - critical sections
มุมมอง 5273 ปีที่แล้ว
GWU OS: Synchronization - critical sections
Lab 4: process management
มุมมอง 3993 ปีที่แล้ว
Lab 4: process management
GWU OS: Threading
มุมมอง 6403 ปีที่แล้ว
GWU OS: Threading
GWU OS: Inter-Process Communication (IPC)
มุมมอง 6493 ปีที่แล้ว
GWU OS: Inter-Process Communication (IPC)
Lab 3: xv6 system calls
มุมมอง 1.8K3 ปีที่แล้ว
Lab 3: xv6 system calls

ความคิดเห็น

  • @pedram-yg7lb
    @pedram-yg7lb 3 วันที่ผ่านมา

    That's fantastic thank you very much, I hope you create more content (;

  • @miltonscuderi5822
    @miltonscuderi5822 7 วันที่ผ่านมา

    this is a really cool and useful video, help me a lot, thank you for doing it!, may i ask you which theme were you using for this video if you recall it?

    • @nothing6001
      @nothing6001 6 วันที่ผ่านมา

      I don't remember the theme, but it was likely "cyberpunk" (github.com/n3mo/cyberpunk-theme.el)

  • @laujimmy9282
    @laujimmy9282 18 วันที่ผ่านมา

    Yes, just what I need. Thank you

  • @danmartinvela
    @danmartinvela 22 วันที่ผ่านมา

    Amazing! You deserve another comment!

  • @kryt7955
    @kryt7955 23 วันที่ผ่านมา

    This is THE BEST tutorial on make out there. I've looked at so many other resources but I couldn't understand a thing reading/watching them. Thanks a lot for your effort :)

  • @danmartinvela
    @danmartinvela 23 วันที่ผ่านมา

    great class! Is there a way I can ask you some questions directly?

  • @danmartinvela
    @danmartinvela หลายเดือนก่อน

    I LOVE YOUR VIDEOS! IM LEARNING A LOT!

  • @adnanhashmi8092
    @adnanhashmi8092 หลายเดือนก่อน

    Thank you for this video! This is exactly what I need.

  • @omarmagdy1075
    @omarmagdy1075 2 หลายเดือนก่อน

    Very interesting stuff your videos are really unique and your explanation is crystal clear thank you for putting the effort in those videos

    • @nothing6001
      @nothing6001 2 หลายเดือนก่อน

      Thanks, and very happy you found them valuable!

  • @frankfix247
    @frankfix247 2 หลายเดือนก่อน

    Very good video! A couple of things though; how properly to place all build files (*.o, *.d) in its own "build" directory and the use of .PHONY. Keep up the good work!

  • @marc-andrebrun8942
    @marc-andrebrun8942 2 หลายเดือนก่อน

    void* are great in C. we can do almost everything we want. combined with tagged (with enum type) union type inside struct type ...allow to make versatile objects.

  • @user-mw9lg
    @user-mw9lg 3 หลายเดือนก่อน

    Which Linux Distro are you using in this video?

    • @nothing6001
      @nothing6001 3 หลายเดือนก่อน

      Nothing fancy, just Ubuntu

  • @user-mw9lg
    @user-mw9lg 3 หลายเดือนก่อน

    Thanks for the video and all the great information! A higher resolution than 480p would be lovely for fluent readability.

  • @Or.BenHaim
    @Or.BenHaim 3 หลายเดือนก่อน

    Great video!

  • @louiehoosk
    @louiehoosk 3 หลายเดือนก่อน

    What an absolute goldmine of knowledge, thank you!

  • @geestwagen4614
    @geestwagen4614 3 หลายเดือนก่อน

    Your video's are a very usefull resource to me. Thanks a million times :D

  • @martinlejko6155
    @martinlejko6155 3 หลายเดือนก่อน

    Great video of the basics <3

  • @PhilR0gers
    @PhilR0gers 3 หลายเดือนก่อน

    Having inherited a project that uses make on Linux, and coming from a Visual Studio on Windows background, this has been so useful in helping me understand what is going on. Thanks.

  • @rogo7330
    @rogo7330 4 หลายเดือนก่อน

    With compiling C programs into one binary I discovered a more slick and actually more efficient approach. When compiling from source code into executable directly (without intermidiate object files) with addition of `-flto` and `-fwhole-program` arguments, compiler implies much more efficient optimizations, kinda like putting everything into one big `.c` file, but still presuming file scopes and other stuff from C language, but whatever. What I did is created a make macro `define prog-compile` (read about define thingy) to compile a target `$@` with all requirements of target put into `$(filter)` make command. Like that: $(CC) $(filter %.c %.s,$^) -o $@ $(CFLAGS) ... and then wrote a target: myprog: main.c config.h assembly-inlines.s assembly-inlines.h <TAB> $(prog-compile) Essentially `filter` filters out arguments from `$^` (which is all target requirements) and leaves to compile only `.c` and `.s` files as compiler arguments, but still detects them been updated to rebuild `myprog`. This is HUGE improvement over programs compiled from object files because compiler can even elliminate all your internal function calls, inline them and replace everything with jumps or whatever. Try it, you will fall in love with it.

  • @fuckit563
    @fuckit563 4 หลายเดือนก่อน

    its much simpler to use addprefix instead of foreach cycle for CFLAGS, isnt it?

  • @Hudinibutter
    @Hudinibutter 4 หลายเดือนก่อน

    Amazing video! Thank you!

  • @fahad9739
    @fahad9739 5 หลายเดือนก่อน

    Great video. Other tutorials only ended up in confusion for beginners. This is THE makefile tutorial. Thanks for doing this.

  • @etzbert
    @etzbert 5 หลายเดือนก่อน

    Nice video, thx for sharing

  • @achrafBadiry
    @achrafBadiry 5 หลายเดือนก่อน

    Great video. came with no information and left with all. thank you

  • @MrUnix-xf8dq
    @MrUnix-xf8dq 6 หลายเดือนก่อน

    Absolutely flawless video, and flawless teaching style. Never stop teaching, you have what it takes!

  • @weithiamneo1442
    @weithiamneo1442 7 หลายเดือนก่อน

    Is Make able to detect changes in .h files from system or compiler libraries?

  • @konstantinrebrov675
    @konstantinrebrov675 7 หลายเดือนก่อน

    This is very useful for me.

  • @tsimurdavydzenka5507
    @tsimurdavydzenka5507 7 หลายเดือนก่อน

    You are a genius educator!

  • @ii7mdj_353
    @ii7mdj_353 7 หลายเดือนก่อน

    Ngl you kinda sound like Joe from family guy 😂.

  • @wnekuu
    @wnekuu 7 หลายเดือนก่อน

    Thank you for that!

  • @KurtVanBever
    @KurtVanBever 8 หลายเดือนก่อน

    Hi there, Why is there a difference in declaring the directories? I mean, why are both directories not addressed in the same way? Like either: CODEDIRS=. lib INCDIRS=. include or else: CODEDIRS=. ./lib/ INCDIRS=. ./include/

    • @nothing6001
      @nothing6001 8 หลายเดือนก่อน

      No fundamental reason. Your suggestion that they should be consistent is correct! There are always improvements to be made to code, and you point out a good place where the current Makefile should be cleaned up.

    • @KurtVanBever
      @KurtVanBever 8 หลายเดือนก่อน

      @@nothing6001 oh OK. I thought I was missing something and that there was a hidden purpose to it. My bad 😅

  • @cusematt23
    @cusematt23 8 หลายเดือนก่อน

    Dude … this is so good. The stuff you can find FOR FREE on the internet.

  • @caiomolinari4790
    @caiomolinari4790 8 หลายเดือนก่อน

    I rarely comment on videos, but this one slaps

  • @KhaledKimboo4
    @KhaledKimboo4 9 หลายเดือนก่อน

    the remaining 5% would take you the next 10 years to learn

  • @parsecscopeking2580
    @parsecscopeking2580 9 หลายเดือนก่อน

    Are you using emacs?

  • @afanasin_egor
    @afanasin_egor 9 หลายเดือนก่อน

    Thanks man!

  • @aarondanen3150
    @aarondanen3150 10 หลายเดือนก่อน

    Why did it take me a month to hear about .d files. I swear nobody mentions those but it’s so confusing trying to understand something when people omit information like that. Thanks boss :)

  • @radio_electronics4047
    @radio_electronics4047 10 หลายเดือนก่อน

    This is an unusual use of header files. Usually you have a corresponding .h file for every .c file except main.

  • @humbertocastillo6999
    @humbertocastillo6999 10 หลายเดือนก่อน

    this is a great video. Thank you very much!

  • @user-mx4oy1lf8u
    @user-mx4oy1lf8u 10 หลายเดือนก่อน

    i have a question abut the declaration of CODEDIRS and INCDIRS. What is the meaning of the one dot "." or 2 dot ? CODEDIRS=. lib #Source code directory INCDIRS=. ./include/ # Include directory Is it important to include since i saw other people do not use it

    • @nothing6001
      @nothing6001 10 หลายเดือนก่อน

      A dot means "this current directory".

  • @CONVICT700
    @CONVICT700 10 หลายเดือนก่อน

    What a great tutorial. I’m only jumping back into Linux recently and not only did you teach me about make, but you also provided a great refresher regarding C, lib, includes etc. thanks a lot

  • @markhache6756
    @markhache6756 10 หลายเดือนก่อน

    Great, fantastic, love it. The only part missing for my prog was a way to include a pre-compiled library; in my case the "mosquitto" library. I just added a 4th line to your first three. OTHERLIBS=mosquitto Then LLIBS=$(foreach D,$(OTHERLIBS), -l$(D)) and lastly chg'd the rule for $(BINARY): $(OBJECTS) to [tab]$(CC) -o $@ $^ $(LLIBS)

  • @gnzeu4tpns91
    @gnzeu4tpns91 11 หลายเดือนก่อน

    thank you for explaining in a way that is so easy to understand

  • @AjitSingh-rg3zu
    @AjitSingh-rg3zu ปีที่แล้ว

    This video is very very good starting point for those beginners who are learning build systems. Thanks for such amazing content

    • @nothing6001
      @nothing6001 ปีที่แล้ว

      You're welcome; glad you like it!

  • @shrutsilakari9711
    @shrutsilakari9711 ปีที่แล้ว

    I've looked for a long time, finally I've found the ultimate Makfile tutorial. This was so great, thanks so much

  • @tuzaguilar4201
    @tuzaguilar4201 ปีที่แล้ว

    Thank you for a very informative and complete tutorial. Much appreciated.

  • @tunacici
    @tunacici ปีที่แล้ว

    Thanks for an amazing video! I've recently started watching your vides/lessons after a suggestion from a friend of mine. And so far everything is going great! Your explanations are clear and pretty straightforward [for beginners like me]. I have one question though. Does it really makes sense to compare VMs to monolithic kernels? Sure, they are very similar in terms of their structures, but they are two different categories IMO. So, questions like: Why VMs are better? is super weird to me.

  • @eddaly4160
    @eddaly4160 ปีที่แล้ว

    Great video. Thank you!

  • @markharrington5826
    @markharrington5826 ปีที่แล้ว

    Lovely explanation , Brilliant and I mean brilliant !! I wish there more of you about who can explain this with the well defined , well thought out descriptions that you have used in your presentation I understood everything you were doing Thank you PS for other people as we now in 2023 who feel AI will give you these answers then Im going to say , "No AI no matter how good you think this is will and no AI will help you and guide you to this depth and understanding This is why we need people like Gabriel Parmer especially in poorer and less educated sectors where this is no help and all controlled by finances " You need to understand the essentials of this Im pleased we still have some who have recognised this and know what is required Its not a case of how quick , how fast or , how many cuts to education our officials can make or where others see AI as a method of doing away with people especially in education Its very much a case of how the use of AI where people in positions of power need to be very clearly show just how much they dont understand and why persons such as Gabriel Parmer are very much in demand I hope this justifies all comments I make whilst I highly recommend tutors such as this which we are lucky to have If only many other people in many an industry would actually wake up to the damage they do by making the cuts they have in conjunction with the loss of real professionals in all industry even more so in teaching and training

    • @nothing6001
      @nothing6001 ปีที่แล้ว

      Thanks so much for the comment! I'm planning on a series of videos about system tools in the coming months. You've provided me some motivation, so thanks!

  • @hyppolithos
    @hyppolithos ปีที่แล้ว

    why is your /home file called ycombinator ?

    • @nothing6001
      @nothing6001 ปีที่แล้ว

      This is not as interesting as you'd think. It is my username (of course), and I usually choose my username on different computers based on programming language constructs (like the y-combinator that is the theoretical foundation for repetition).