3.3 KiB
Operation: Hack
As you are walking by a table in #cafe, you overhear the two owners talking about a plan.
"Okay, so we would break in to the museum and then steal loot over the course of, say, two months, before we check in and see if we need more time, so nobody suspects anything,", says Orpheus, before downing her cup of coffee brewed by Heidi.
"Sounds good to me. Wouldn't we need a team though?" Heidi responds.
"Hm, true," Orpheus says before looking around and, seeing you, pulling you over, before saying, "Well, you saw and heard us planning, do you want to join us?"
You think about it, and nod your head.
Operation: Hack is a proposed hackclub YSWS where you get loot for reaching certain milestones in writing an OS1, which you can exchange for real-world prizes! You'll be starting with the kernel and eventually get to writing userspace programs. The kernel isn't the "core" part of the OS necessarily, but it is usually the first thing that runs when the computer starts up. It (generally) provides abstractions of the hardware to programs running in userspace (which includes the OS) along with managing process/memory safety (i.e. preventing running processes from accessing memory that isn't theirs) and more!
The ideas for milestones(all optional and may be adjusted for different types of kernels, along with loot values probably changing in the future) are listed below(in no particular order):
- Successful first boot before halting the CPU: 50 loot
- Output a debug message to a serial port: 50 loot
- Output a debug message to the screen: 75 loot
- Bootloader:
- Parse bootloader-provided info: 100 loot
- Write a bootloader that loads the kernel from static disk sectors: 200 loot
- Write a bootloader that loads the kernel from a filesystem: 4000 loot
- Memory allocation(none combine, i.e. you will not get 400 loot for making a fast memory allocator):
- Write a functional memory allocator: 150 loot
- Write a functional, space-efficient(uses <64 bytes per allocation or page) memory allocator: 250 loot
- Write a functional, fast(<1000 CPU cycles per allocation) memory allocator: 250 loot
- Write a functional, fast and space-efficient memory allocator: 400 loot
- Architecture-specific setup:
- x86_32: Initalize paging: 500 loot
- x86_32: Initalize the GDT: 400 loot
- x86_32: Initalize the MMU: 400 loot
- x86_32: Initalize interrupts: 200 loot
- Setup syscalls: 300 loot
- Drivers/kernel modules:
- Implement a functional driver/module framework: 300 loot
- Implement a basic driver(i.e. an LED or something): 250 loot
- Implement a serial port driver: 400 loot
- Implement a screen driver: 500 loot
- Implement a keyboard driver: 500 loot
- Implement a disk driver: 600 loot
- Implement DMA for a driver: 400 loot
- Filesystems:
- Implement a filesystem abstraction: 300 loot
- Implement a ramfs driver: 400 loot
- Implement a FAT12 driver: 400 loot
- Implement a FAT32 driver: 500 loot
- Implement a journalling(ext2, ext3, ext4) driver: 600 loot
- Userspace:
- Implement a userspace in the kernel in some fashion: 500 loot
- Implement an init system in userspace that the kernel uses to start the OS: 500 loot
- Implement th
-
Operating System! If you don't know what one is, this probably isn't the YSWS for you! ↩︎