Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Developing a Multithreaded Kernel From Scratch!, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:04:14
    Introduction
  • Урок 2. 00:03:12
    What Is Memory?
  • Урок 3. 00:07:06
    The Boot Process
  • Урок 4. 00:02:31
    Installing What We Need For Real Mode Development
  • Урок 5. 00:15:52
    Hello World Bootloader
  • Урок 6. 00:04:50
    Understanding Real Mode
  • Урок 7. 00:08:36
    Segmentation Memory Model
  • Урок 8. 00:07:31
    Improving Our Bootloader
  • Урок 9. 00:05:35
    Preparing our bootloader to be booted on real hardware
  • Урок 10. 00:02:42
    Writing our bootloader to a USB stick
  • Урок 11. 00:00:43
    Booting the bootloader
  • Урок 12. 00:03:59
    The Interrupt Vector Table Explained
  • Урок 13. 00:06:47
    Implementing our own interrupts in real mode
  • Урок 14. 00:05:45
    Disk Access And How It Works
  • Урок 15. 00:13:10
    Reading from the hard disk
  • Урок 16. 00:06:35
    What is Protected Mode?
  • Урок 17. 00:15:44
    Switching To Protected Mode
  • Урок 18. 00:02:20
    Restructuring Our Project
  • Урок 19. 00:02:37
    Enabling the A20 line
  • Урок 20. 00:11:07
    Creating a Cross Compiler So We Can Code In C
  • Урок 21. 00:38:39
    Loading our 32 bit kernel into memory and working with debugging symbols
  • Урок 22. 00:01:25
    Cleaning our object files
  • Урок 23. 00:07:28
    Dealing With Alignment Issues
  • Урок 24. 00:08:04
    C Code In Protected Mode
  • Урок 25. 00:02:36
    Text Mode Explained
  • Урок 26. 00:16:27
    Writing To The Screen, Hello World Tutorial
  • Урок 27. 00:08:34
    Interrupt Descriptor Table Explained
  • Урок 28. 00:27:16
    Implementing The Interrupt Descriptor Table
  • Урок 29. 00:09:46
    Implementing In and Out Functions
  • Урок 30. 00:04:39
    Programmable Interrupt Controller Explained
  • Урок 31. 00:12:31
    Programmable Interrupt Controller Implementation
  • Урок 32. 00:20:24
    Understanding The Heap And Memory Allocation
  • Урок 33. 01:04:42
    Implementing Our Heap
  • Урок 34. 00:02:49
    Creating the enable interrupts function
  • Урок 35. 00:20:02
    Understanding Paging
  • Урок 36. 00:28:16
    Implementing Paging
  • Урок 37. 00:23:03
    Modifying the page table
  • Урок 38. 00:02:46
    Preparing To Read From The Hard Disk
  • Урок 39. 00:10:35
    Reading from the disk in C with the ATA controller
  • Урок 40. 00:09:42
    Improving Our Disk Driver
  • Урок 41. 00:07:32
    What is a filesystem?
  • Урок 42. 00:36:41
    Creating a path parser
  • Урок 43. 00:15:45
    Creating a disk stream
  • Урок 44. 00:18:01
    File Allocation Table Explained
  • Урок 45. 00:14:00
    Starting To Create our FAT File system
  • Урок 46. 00:06:36
    Understanding the VFS(Virtual File System) Layer
  • Урок 47. 00:27:30
    Implementing our virtual filesystem core functionality
  • Урок 48. 00:17:13
    implementing FAT16 filesystem driver core functionality
  • Урок 49. 00:19:19
    Implementing FAT16 Structures
  • Урок 50. 00:33:31
    Implementing The FAT16 Resolver Function
  • Урок 51. 00:24:10
    Implementing the VFS fopen function
  • Урок 52. 00:57:02
    Implementing FAT16 fopen function
  • Урок 53. 00:06:07
    Implementing the VFS fread function
  • Урок 54. 00:08:32
    Implementing FAT16 fread functionality
  • Урок 55. 00:02:54
    Implementing the VFS fseek functionality
  • Урок 56. 00:05:42
    Implementing the FAT16 fseek functionality
  • Урок 57. 00:04:31
    Implementing the fstat VFS functionality
  • Урок 58. 00:06:12
    Implementing the FAT16 fstat function
  • Урок 59. 00:02:35
    Implementing the VFS fclose functionality
  • Урок 60. 00:07:09
    Implementing the FAT16 fclose functionality
  • Урок 61. 00:02:15
    Implementing a kernel panic
  • Урок 62. 00:14:55
    Understanding User Land
  • Урок 63. 00:19:04
    Changing our kernel segment and data descriptors to be written in C
  • Урок 64. 00:11:59
    Implementing The TSS(Task Switch Segment)
  • Урок 65. 00:29:50
    Implementing Task Foundations
  • Урок 66. 00:38:11
    Implementing Process Foundations Part 1
  • Урок 67. 00:24:30
    Implementing Process Foundations Part 2
  • Урок 68. 00:01:10
    Packing the GDT
  • Урок 69. 00:17:28
    Implementing User Land Functionality
  • Урок 70. 00:09:08
    Creating our first user process application
  • Урок 71. 00:07:56
    Executing the process and dropping into user land privileges
  • Урок 72. 00:06:15
    Changing the paging functionality
  • Урок 73. 00:20:15
    Talking with the kernel from userland
  • Урок 74. 00:24:12
    Creating the interrupt 0x80 for user process to kernel communication
  • Урок 75. 00:11:18
    Creating the ability to create and execute kernel commands
  • Урок 76. 00:10:54
    Creating our first kernel command
  • Урок 77. 00:06:47
    Calling our kernel command
  • Урок 78. 00:14:37
    Copying strings from the tasks process
  • Урок 79. 00:21:09
    Reading the task's stack
  • Урок 80. 00:15:01
    Creating the print command in the kernel
  • Урок 81. 00:15:16
    Understanding keyboard access in protected mode
  • Урок 82. 00:15:46
    Creating the virtual keyboard layer
  • Урок 83. 00:23:24
    Creating the PS2 port keyboard driver part 1
  • Урок 84. 00:20:01
    Improving our interrupt descriptor table design
  • Урок 85. 00:10:19
    Creating a cleaner way to create interrupt handlers in the interrupt descriptor
  • Урок 86. 00:07:28
    Changing The Current Process
  • Урок 87. 00:13:35
    Creating the PS2 port keyboard driver part 2
  • Урок 88. 00:10:10
    Getting a key from the keyboard buffer in user land
  • Урок 89. 00:06:54
    Creating a putchar command that writes one character to the terminal
  • Урок 90. 00:03:05
    Implementing backspace in the terminal
  • Урок 91. 00:06:28
    Revising our stream reader
  • Урок 92. 00:22:11
    Elf Files Explained
  • Урок 93. 00:18:46
    Implementing The Elf Loader - Part 1
  • Урок 94. 00:23:46
    Implementing The Elf Loader - Part 2
  • Урок 95. 00:04:21
    Implementing The Elf Loader - Part 3
  • Урок 96. 00:17:14
    Implementing The Elf Loader - Part 4
  • Урок 97. 00:28:59
    Implementing The Elf Loader - Part 5
  • Урок 98. 00:13:44
    Implementing The Elf Loader - Part 6
  • Урок 99. 00:14:50
    Writing User Programs In C
  • Урок 100. 00:06:26
    Implementing system print in stdlib
  • Урок 101. 00:02:57
    Implementing system get key in stdlib
  • Урок 102. 00:21:45
    Implementing Malloc In Our stdlib
  • Урок 103. 00:09:46
    Implementing Free In Our stdlib
  • Урок 104. 00:02:13
    Changing the way we map virtual pages for the process
  • Урок 105. 00:04:46
    Implementing itoa function
  • Урок 106. 00:07:46
    Implementing the putchar function
  • Урок 107. 00:06:38
    Implementing the printf function
  • Урок 108. 00:10:13
    Implementing the ability to read lines
  • Урок 109. 00:09:04
    Creating a shell
  • Урок 110. 00:26:45
    Loading other programs from our shell
  • Урок 111. 00:12:51
    Creating some important stdlib functions
  • Урок 112. 00:08:45
    Memory Mapping malloc in stdlib
  • Урок 113. 00:11:07
    Memory Unmapping free In stdlib
  • Урок 114. 00:09:35
    Process arguments - Part 1
  • Урок 115. 00:28:42
    Process Arguments - Part 2
  • Урок 116. 00:05:39
    Process Arguments - Part 3
  • Урок 117. 00:18:26
    Implementing A 'System' Command
  • Урок 118. 00:15:20
    Implementing program termination
  • Урок 119. 00:08:14
    Handling program crashes
  • Урок 120. 00:05:47
    Creating an exit command
  • Урок 121. 00:11:05
    Handling caps lock, upper case and lower case letters
  • Урок 122. 00:06:45
    Running multiple tasks at the same time multi-tasking
  • Урок 123. 00:01:22
    Changing our fat16_new_fat_item_for_directory_item function
  • Урок 124. 00:03:28
    Changing our fat16_open function
  • Урок 125. 00:02:18
    Changing our fat16_get_root_directory function
  • Урок 126. 00:02:25
    Changing our process_load_binary function
  • Урок 127. 00:08:22
    Improvements to our fat16_to_proper_string function
  • Урок 128. 00:03:20
    Changing our restore_general_purpose_registers function
  • Урок 129. 00:01:48
    What is assembly language?
  • Урок 130. 00:02:01
    Installing the emulator
  • Урок 131. 00:17:46
    Hello World In Assembly
  • Урок 132. 00:12:57
    Transistors And Logic Gates Understanding The Processor
  • Урок 133. 00:09:53
    Registers in the 8086
  • Урок 134. 00:08:53
    Segmentation Memory Model Explained
  • Урок 135. 00:08:39
    The Stack, Subroutines And Endiness Explained
  • Урок 136. 00:06:38
    Bonus Lecture