mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-08 18:26:48 +00:00
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。   内存管理模块主要由以下类型的组件组成: - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行 - **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中) - **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新) - **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator - **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成) - **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构) - **用户地址空间管理机制** - 提供对用户地址空间的管理。 - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作 - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射 - **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等 - **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。 除上面的新增内容以外,其它的更改内容: - 新增二进制加载器,以及elf的解析器 - 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 - 解决local_irq_save未关中断的错误。 - 修复sys_gettimeofday对timezone参数的处理的bug
45 lines
1.4 KiB
TOML
45 lines
1.4 KiB
TOML
[package]
|
||
name = "dragonos_kernel"
|
||
version = "0.1.0"
|
||
edition = "2021"
|
||
|
||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||
|
||
[lib]
|
||
crate-type = ["staticlib"]
|
||
|
||
# 运行时依赖项
|
||
[dependencies]
|
||
x86 = "0.52.0"
|
||
x86_64 = "0.14.10"
|
||
bitflags = "1.3.2"
|
||
virtio-drivers = { git = "https://github.com/DragonOS-Community/virtio-drivers.git", rev = "f1d1cbb" }
|
||
# 一个无锁MPSC队列
|
||
thingbuf = { version = "0.1.3", default-features = false, features = ["alloc"] }
|
||
# smoltcp 0.9.1
|
||
smoltcp = { git = "https://github.com/DragonOS-Community/smoltcp.git", rev = "9027825", default-features = false, features = ["log", "alloc", "socket-raw", "socket-udp", "socket-tcp", "socket-icmp", "socket-dhcpv4", "socket-dns", "proto-ipv4", "proto-ipv6"]}
|
||
# num-traits 0.2.15
|
||
num-traits = { git = "https://github.com/DragonOS-Community/num-traits.git", rev="1597c1c", default-features = false }
|
||
num = { version = "0.4.0", default-features = false }
|
||
num-derive = "0.3"
|
||
# 一个no_std的hashmap、hashset
|
||
hashbrown = "0.13.2"
|
||
elf = { version = "0.7.2", default-features = false }
|
||
|
||
# 构建时依赖项
|
||
[build-dependencies]
|
||
bindgen = "0.61.0"
|
||
|
||
|
||
[dependencies.lazy_static]
|
||
version = "1.4.0"
|
||
# 由于在no_std环境,而lazy_static依赖了spin库,因此需要指定其使用no_std
|
||
features = ["spin_no_std"]
|
||
|
||
|
||
# The release profile, used for `cargo build --release`
|
||
[profile.release]
|
||
debug = false
|
||
|
||
|