{"id":13339671,"url":"https://github.com/hiejulia/kernel-project","last_synced_at":"2025-04-03T08:17:55.927Z","repository":{"id":104756887,"uuid":"249139239","full_name":"hiejulia/kernel-project","owner":"hiejulia","description":"Kernel development project ","archived":false,"fork":false,"pushed_at":"2020-06-13T10:49:14.000Z","size":325,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-08T21:46:18.969Z","etag":null,"topics":["audio-driver","buffer","bus","darwin","driver","kernel-development","linux","linux-kernel","queue","thunderbolt","unix","unix-shell","usb"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hiejulia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-22T08:06:23.000Z","updated_at":"2025-01-24T09:49:28.000Z","dependencies_parsed_at":"2023-03-26T17:04:15.227Z","dependency_job_id":null,"html_url":"https://github.com/hiejulia/kernel-project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiejulia%2Fkernel-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiejulia%2Fkernel-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiejulia%2Fkernel-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiejulia%2Fkernel-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hiejulia","download_url":"https://codeload.github.com/hiejulia/kernel-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246961927,"owners_count":20861186,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-driver","buffer","bus","darwin","driver","kernel-development","linux","linux-kernel","queue","thunderbolt","unix","unix-shell","usb"],"created_at":"2024-07-29T19:21:08.127Z","updated_at":"2025-04-03T08:17:55.906Z","avatar_url":"https://github.com/hiejulia.png","language":"C++","readme":"# Kernel development project \n- Implement processes, thread, scheduler, synchronisation, VM, Virtual file system , Unix OS\n- Use QEMU emulator to run and GDB for debugging \n- Kernel module which \n- Develop filesystem in linux kernel to detect files containing bad patterns \n- System call handle malicious cases and prevents memory leaks and unnessary memory allocation\n- FIle encrytion, decryption in Linux using CryptoAPI\n- Kernel locking, Producer-Consumer, Netlink sockets and throttling \n- Developed a kernel module which when loaded instantiates a producer-consumer work queue and a kernel thread to process the queue. The queue contains various job requests such as  Contenation of multiple files etc.\n- Decipher process scheduling and understand effective capacity utilization under general and real-time dispositions\n- Understand concurrent execution on SMP platforms through kernel synchronization and locking techniques\n- Clock subsystem\n- Process communication techniques through signals and IPC mechanisms\n- Kernal Audio driver \n\n# Scripting \n+ Cryptographic Hash Function for random data \u0026 String manipulation \n+ Transform data / data process/ reporting\n    + Cut and awk script : open network port \n    + sort \u0026 uniq\n    + parsing log file \n+ Network scripting \u0026 automation of distributed system \n    + config a mini network and script for remote system \n+ test env : Vagrant \u0026 Virtual box Centos7 `vagrant up`\n# Mac OSX and ioS \n+ FreeBSD \n+ kernel extension \n+ The XNU kernel (doc : /docs/xnu-kernel.md)\n\n# Hardware \u0026 firmware \n+ Extensible firmware interface \n+ hardware\n\n+ Kernel space : XNU kernel: BSD, Mach, IO \n+ Quartz, OpenGL, Core Animation, Core Image, Audio , Text, Quicktime\n+ XNU kernel \n+ Kernel extension \n+ kernel address space management \n+ Memory Allocation in Mach \n`kern_return_t kmem_alloc(vm_map_t map, vm_offset_t *addrp, vm_size_t  size);\n\nkern_return_t kmem_alloc_contig(vm_map_t map, vm_offset_t *addrp,\n                                vm_size_t size, vm_offset_t mask, int flags);\n\nvoid kmem_free(vm_map_t map, vm_offset_t addr, vm_size_t size);`\n\n+ BSD layer \n+ Network kernel extension \n+ Virtual file syste \n+ Unified Buffer Cache\n+ The Libkern Library \n\n\n\u003ca href=\"https://imgur.com/8AA7FKO\"\u003e\u003cimg src=\"https://i.imgur.com/8AA7FKO.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\n\u003ca href=\"https://imgur.com/H7PCoiz\"\u003e\u003cimg src=\"https://i.imgur.com/H7PCoiz.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\n\u003ca href=\"https://imgur.com/8Qi4QXj\"\u003e\u003cimg src=\"https://i.imgur.com/8Qi4QXj.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\n# XCode and Kernel development env\n+ Cocoa framework \n+ C++ \n+ XCode \n    + Compiler for c/c++, objective c \n    + sourcecode debug\n    + API + header files - used for kernel dev \n    + profiling tools - measure code execution time + app dev + performance bottleneck \n+ kernel extension \n+ kernel extension template \n+ logfile /var/log/kernel.log \n\u003ca href=\"https://imgur.com/a35XdK1\"\u003e\u003cimg src=\"https://i.imgur.com/a35XdK1.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://imgur.com/E02Gnj7\"\u003e\u003cimg src=\"https://i.imgur.com/E02Gnj7.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\n#### IO kit framework \n    - kernel framework\n    - IOkit framework \n- THE I/O KIT MODEL \n    - hardware \n    - usb device \n\u003ca href=\"https://imgur.com/enuOLoG\"\u003e\u003cimg src=\"https://i.imgur.com/enuOLoG.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://imgur.com/AaBLcGt\"\u003e\u003cimg src=\"https://i.imgur.com/AaBLcGt.png\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n- THE INFO.PLIST FILE\n    - list of drivers \n    - probe score \n    \n- THE KERNEL LIBRARY: LIBKERN\n    - os object \n    - tracking mem leaks \n    - container class\n    - query a container for object\n\n\n\n## Universal serial bus \n- USB specification and architecture\n- USB subsystem provided by I/O Kit\n- \n\n## Networking \n- BSD layer \n- socketAPI \n- protocol handler \n- network interface \n- network kernel extension NKE \n- Network memory buffer \n- IO Kit : write driver for network hardware \n\n\n## Audio driver \n- IOKit Audio Support \n- SamplePCIAudioDevice\n- IOAudioDevice\n- IOAudioStream\n\n- MyAudioEngine\n- Driver \u0026 hardware init\n- audio driver's IOAudioDevice subclass\n- config hardware device provider \n    - PCI \u0026 Thunderbolt, IO region \n    - USB devices \n\n- register audio control `IOKit/audio/AudioDefines.h.`\n\n\n- create input mute control `IOAudioToggleControl::createMuteControl`\n\n- implement Audio Engine \n    -  I/O in an audio driver\n    - Allocate sample buffers and associated IOAudioStream instances.\n    - `performAudioEngineStart()`\n    - Header File for the MyAudioEngine Class\n\n- I/O Engine Initialization\n- Creating and Initializing Audio Streams\n- Starting and Stopping the Audio Engine\n\n- Engine Operation: Handling Interrupts and Timestamps\n\n## Storage system \n- Physical connection \n- command protocol \n- Transport layer driver\n- Building a RAM disk device \n- Partition scheme \n- Media filter driver \n    - Develop a filter scheme for encryption \n\n\n\n## POSIX standard \n- process \n- signal \n- fs\n- pipe\n- C \n- IO \n\n\n\n## Stack \n- C/C++ \n- Go arsenal CGO \n- OpenSSL \n\n\n\n\n\n\n# Docs / Reference \n+ https://en.wikipedia.org/wiki/Kernel_(operating_system)\n+ https://docs.01.org/clearlinux/latest/guides/kernel/kernel-development.html \n- Darwin kernel (mirror): https://github.com/apple/darwin-xnu\n- Apple opensource : https://developer.apple.com/opensource/\n\n\n\u003ca href=\"https://imgur.com/gmWahEy\"\u003e\u003cimg src=\"https://i.imgur.com/gmWahEy.jpg\" title=\"source: imgur.com\" /\u003e\u003c/a\u003e\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiejulia%2Fkernel-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhiejulia%2Fkernel-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiejulia%2Fkernel-project/lists"}