Skip to content

Commit d9774f8

Browse files
committed
update chapter4 part1: frame allocator
update format
1 parent b281487 commit d9774f8

File tree

1 file changed

+21
-56
lines changed

1 file changed

+21
-56
lines changed

chapter4/part1.md

+21-56
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub const PHYSICAL_MEMORY_END: usize = 0x88000000;
3636
// src/consts.rs
3737

3838
pub const KERNEL_BEGIN_PADDR: usize = 0x80200000;
39-
pub const KERNEL_BEGIN_VADDR: usize = 0xffffffffc0200000;
39+
pub const KERNEL_BEGIN_VADDR: usize = 0x80200000;
4040

4141
// src/init.rs
4242

@@ -48,7 +48,7 @@ pub extern "C" fn rust_main() -> ! {
4848
fn end();
4949
}
5050
println!(
51-
"free physical memory paddr = [0x{:x}, 0x{:x})",
51+
"free physical memory paddr = [{:#x}, {:#x})",
5252
end as usize - KERNEL_BEGIN_VADDR + KERNEL_BEGIN_PADDR,
5353
PHYSICAL_MEMORY_END
5454
);
@@ -74,7 +74,7 @@ pub extern "C" fn rust_main() -> ! {
7474
// src/init.rs
7575

7676
println!(
77-
"free physical memory ppn = [0x{:x}, 0x{:x})",
77+
"free physical memory ppn = [{:#x}, {:#x})",
7878
((end as usize - KERNEL_BEGIN_VADDR + KERNEL_BEGIN_PADDR) >> 12) + 1,
7979
PHYSICAL_MEMORY_END >> 12
8080
);
@@ -243,9 +243,9 @@ pub extern "C" fn rust_main() -> ! {
243243
extern "C" {
244244
fn end();
245245
}
246-
println!("kernel end vaddr = 0x{:x}", end as usize);
246+
println!("kernel end vaddr = {:#x}", end as usize);
247247
println!(
248-
"free physical memory ppn = [0x{:x}, 0x{:x})",
248+
"free physical memory ppn = [{:#x}, {:#x})",
249249
((end as usize - KERNEL_BEGIN_VADDR + KERNEL_BEGIN_PADDR) >> 12) + 1,
250250
PHYSICAL_MEMORY_END >> 12
251251
);
@@ -266,67 +266,31 @@ pub extern "C" fn rust_main() -> ! {
266266
}
267267

268268
fn frame_allocating_test() {
269-
println!("alloc {:#x?}", alloc_frame());
269+
println!("alloc {:x?}", alloc_frame());
270270
let f = alloc_frame();
271-
println!("alloc {:#x?}", f);
272-
println!("alloc {:#x?}", alloc_frame());
273-
println!("dealloc {:#x?}", f);
271+
println!("alloc {:x?}", f);
272+
println!("alloc {:x?}", alloc_frame());
273+
println!("dealloc {:x?}", f);
274274
dealloc_frame(f.unwrap());
275-
println!("alloc {:#x?}", alloc_frame());
276-
println!("alloc {:#x?}", alloc_frame());
275+
println!("alloc {:x?}", alloc_frame());
276+
println!("alloc {:x?}", alloc_frame());
277277
}
278278
```
279279
我们尝试在分配的过程中回收,之后再进行分配,结果如何呢?
280280
> **[success] 物理页分配与回收测试**
281281
>
282282
> ```rust
283-
> free physical memory paddr = [0x80222020, 0x88000000)
284-
> free physical memory ppn = [0x80223, 0x88000)
283+
> free physical memory paddr = [0x8021f020, 0x88000000)
284+
> free physical memory ppn = [0x80220, 0x88000)
285285
> ++++ setup interrupt! ++++
286286
> ++++ setup timer! ++++
287287
> ++++ setup memory! ++++
288-
> alloc Some(
289-
> Frame(
290-
> PhysAddr(
291-
> 0x80223000,
292-
> ),
293-
> ),
294-
> )
295-
> alloc Some(
296-
> Frame(
297-
> PhysAddr(
298-
> 0x80224000,
299-
> ),
300-
> ),
301-
> )
302-
> alloc Some(
303-
> Frame(
304-
> PhysAddr(
305-
> 0x80225000,
306-
> ),
307-
> ),
308-
> )
309-
> dealloc Some(
310-
> Frame(
311-
> PhysAddr(
312-
> 0x80224000,
313-
> ),
314-
> ),
315-
> )
316-
> alloc Some(
317-
> Frame(
318-
> PhysAddr(
319-
> 0x80224000,
320-
> ),
321-
> ),
322-
> )
323-
> alloc Some(
324-
> Frame(
325-
> PhysAddr(
326-
> 0x80226000,
327-
> ),
328-
> ),
329-
> )
288+
> alloc Some(Frame(PhysAddr(80220000)))
289+
> alloc Some(Frame(PhysAddr(80221000)))
290+
> alloc Some(Frame(PhysAddr(80222000)))
291+
> dealloc Some(Frame(PhysAddr(80221000)))
292+
> alloc Some(Frame(PhysAddr(80221000)))
293+
> alloc Some(Frame(PhysAddr(80223000)))
330294
> * 100 ticks *
331295
> * 100 ticks *
332296
> ...
@@ -336,4 +300,5 @@ fn frame_allocating_test() {
336300
337301
如果结果有问题的话,在[这里]()能找到现有的代码。
338302
339-
不过,这种物理内存分配给人一种过家家的感觉。无论表面上分配、回收做得怎样井井有条,实际上都并没有对物理内存产生任何影响!不要着急,我们之后会使用它们的。
303+
不过,这种物理内存分配给人一种过家家的感觉。无论表面上分配、回收做得怎样井井有条,实际上都并没有对物理内存产生任何影响!不要着急,我们之后会使用它们的。
304+

0 commit comments

Comments
 (0)