﻿1
00:00:00,060 --> 00:00:03,190
‫In this course, you will learn all about colonel development.

2
00:00:03,240 --> 00:00:10,440
‫We start off small by learning Anthos real mode where we develop an actual bootloader, the boot from

3
00:00:10,440 --> 00:00:11,420
‫real hardware.

4
00:00:11,640 --> 00:00:16,140
‫We actually boots it on our real computers and we see hello world on the screen.

5
00:00:16,350 --> 00:00:17,250
‫And there we go.

6
00:00:17,260 --> 00:00:18,000
‫Hello world.

7
00:00:18,370 --> 00:00:20,130
‫This program is self-sufficient.

8
00:00:20,310 --> 00:00:22,540
‫It requires no operating system.

9
00:00:22,560 --> 00:00:24,390
‫It is bootable code.

10
00:00:24,930 --> 00:00:27,960
‫Your journey starts here throughout real NMO.

11
00:00:27,990 --> 00:00:33,140
‫We also load sectors from our hard disk into memory.

12
00:00:33,870 --> 00:00:41,490
‫Now, real mode is a compatibility mode by Intel that allows Intel processors to run as they ran maybe

13
00:00:41,490 --> 00:00:42,930
‫20 or 30 years ago.

14
00:00:43,020 --> 00:00:45,380
‫Real mode is a legacy mode by Intel.

15
00:00:45,480 --> 00:00:48,440
‫It is fairly limited, but learning it is essential.

16
00:00:48,450 --> 00:00:54,240
‫After we work with Intel's legacy McCole remote, we move to what's known as protected mode, which

17
00:00:54,240 --> 00:00:57,750
‫is what all 32 bit operating systems use.

18
00:00:57,760 --> 00:00:59,760
‫You are taught all about protected mode.

19
00:00:59,760 --> 00:01:06,240
‫In this course, you learn all about virtual memory, memory virtualization, mapping virtual addresses

20
00:01:06,240 --> 00:01:07,560
‫to physical addresses.

21
00:01:07,860 --> 00:01:10,560
‫Our process is all shared the same addresses.

22
00:01:10,740 --> 00:01:12,150
‫How is this even possible?

23
00:01:12,360 --> 00:01:18,060
‫Or you will find out in this course we can have multiple processes running and they all share the same

24
00:01:18,060 --> 00:01:18,990
‫memory addresses.

25
00:01:19,290 --> 00:01:20,310
‫This is amazing.

26
00:01:20,310 --> 00:01:23,490
‫It's called paging and this is all taught to you.

27
00:01:23,760 --> 00:01:29,100
‫And by using paging, we can prevent processes from seeing certain parts of memory.

28
00:01:29,310 --> 00:01:35,520
‫It's a great security feature and it allows us to compile all user programs at the same address.

29
00:01:35,610 --> 00:01:37,140
‫You're going to learn all about this.

30
00:01:37,140 --> 00:01:41,460
‫In this course, your kernel will be capable of handling the entire system memory.

31
00:01:41,880 --> 00:01:44,820
‫It'll be able to allocate memory to different processes.

32
00:01:44,820 --> 00:01:48,230
‫It'll be able to restrict memory access from certain processes.

33
00:01:48,270 --> 00:01:53,370
‫This course shows you how to create processes for your operating system and load them into memory and

34
00:01:53,370 --> 00:01:53,850
‫run them.

35
00:01:54,270 --> 00:01:55,920
‫And we can have multitasking.

36
00:01:56,160 --> 00:01:56,820
‫In this course.

37
00:01:56,820 --> 00:01:59,130
‫You're taught how to make a multitasking kernel.

38
00:01:59,610 --> 00:02:03,240
‫We can have multiple processes running at the exact same time.

39
00:02:03,240 --> 00:02:06,540
‫Our processes can also be of the el-Fadl format.

40
00:02:06,840 --> 00:02:10,050
‫OK, in this course we support two types of loading.

41
00:02:10,050 --> 00:02:13,920
‫We can load binary files and we can load our files.

42
00:02:14,160 --> 00:02:20,250
‫Now, all Linux programs are our files we're implementing and our to that can actually load files into

43
00:02:20,250 --> 00:02:20,750
‫memory.

44
00:02:20,970 --> 00:02:23,520
‫Now, I'm not saying you will be able to run Linux programs.

45
00:02:23,520 --> 00:02:29,130
‫What I am saying is you will be able to load our files, which is fantastic because our files have headers.

46
00:02:29,370 --> 00:02:33,200
‫They have information describing the process and how it should be laid in memory.

47
00:02:33,510 --> 00:02:36,420
‫This is much more efficient than loading just binary files.

48
00:02:36,630 --> 00:02:41,610
‫So this course takes you a step further by creating an actual elf LoDo.

49
00:02:41,640 --> 00:02:44,190
‫You're also taught how to handle malicious programs.

50
00:02:44,310 --> 00:02:45,720
‫Not all programs are nice.

51
00:02:45,990 --> 00:02:48,990
‫What if someone writes a program that tries to modify your kernel?

52
00:02:49,470 --> 00:02:54,270
‫What in our kernel, the kernel will know that you've done that and it will kill the process.

53
00:02:54,300 --> 00:03:00,810
‫This is achieved by using, paging and setting up certain security rules on the different memory that

54
00:03:00,810 --> 00:03:03,870
‫the process can access if it violates those rules.

55
00:03:04,110 --> 00:03:09,930
‫And interrupt exception is called and our kernel will say, no, no, no, it'll kill the process and

56
00:03:09,930 --> 00:03:14,160
‫unload it from memory, you're going to learn all of that and how to do that in this course.

57
00:03:14,340 --> 00:03:17,820
‫You're also going to learn how to handle program crashes.

58
00:03:18,420 --> 00:03:21,810
‫Sometimes programs do things by accident that they shouldn't.

59
00:03:21,930 --> 00:03:24,870
‫Right now we need to handle that.

60
00:03:25,080 --> 00:03:28,110
‫If we don't handle that, the process stays loaded in memory.

61
00:03:28,500 --> 00:03:34,350
‫Now, you're taught how to unload the program when it crashes and how to detect when a program is crashed.

62
00:03:34,410 --> 00:03:40,020
‫By the end of this course, you can expect to have a fully working 32 bit kernel, an operating system

63
00:03:40,170 --> 00:03:41,490
‫with an interactive shell.

64
00:03:41,850 --> 00:03:43,230
‫OK, think a command prompt.

65
00:03:43,230 --> 00:03:44,730
‫You know, you can type into command prompt.

66
00:03:45,120 --> 00:03:47,370
‫That's our interactive shell, something like that.

67
00:03:47,370 --> 00:03:52,020
‫Your operating system, Colonel, will also be a multitasking operating system, Colonel, as I've already

68
00:03:52,020 --> 00:03:52,380
‫said.

69
00:03:52,740 --> 00:03:55,650
‫So we'll have multiple processors running at the same time.

70
00:03:55,890 --> 00:03:58,200
‫You're going to learn how to do that in this course.

71
00:03:58,470 --> 00:04:02,850
‫And by the end of this course, you will understand, Colonel, and operating system development very

72
00:04:02,850 --> 00:04:08,400
‫well and you'll be able to take what you've learned to improve your colonel, adding new features.

73
00:04:08,670 --> 00:04:12,750
‫And who knows, maybe that'll be the next the next enroll in this course today.

