doc/note/memory.txt				-*- text -*-

[BTRON/386 memo 11]

TITLE:	BTRON/386 Υ
AUTHOR:	ƣ δ
DATE:	1 January 1994
VER:	1.0



1. ܥγ

  ܥϡBTRON/386 ƥˤˤĤƵҤΤ
롣 
  ܥǤϡBTRON/386 ƥǻѤƤΤι
ˤĤƵҤ롣

  (1) ITRON-3.0 ǤΥ
  (2) BTRON/386 ǤΥ


2. ITRON-3.0 ǤΥ

2.1 

  ITRON-3.0 ǤϥȤƤĤؤꤷƤ롣

(1) ڡñ̤ǤΥ
    CPU ǷƤڡñ̤ǤΥ
    BTRON/386 Ǥϡʪ0x80000000βۥ˥ޥåԥ
    Ƥ롣Υޥåԥ󥰤줿ΰФƥڡñ̤ΰ
    򤹤롣

(2) Хñ̤ǤΥ
    ڡñ̤ǤΥ򸵤ˡХñ̤ǤΥԤ
    ʤ꤬­ʤʤäˤϡڡñ̤ǥ
    Хñ̤ǤΤޤΰʬ䤷ƴ롣

(3) ITRON-3.0 Υ
    ؤǤϡITRON-3.0 Фƥ׵᤬äν
    ԤITRON-3.0 ǤΥǤϡΰΥˤĤƤ
    ƥ¦Ǵ뤳ȤˤʤäƤ(ΰβ˥
    򤷤ʤ)Τᡢȼ˥δԤ

(4) ĥ
    ؤǤϡۥˤĤƤδԤ
    ۥμŪȤƤϡ桼ץΤΥ
    ꤹ뤳Ȥʤɤ롣ITRON-3.0 ǤϡۥˤĤƤϥ
    ץȰ¸ȤƤꡢꤵƤʤΤǤؤˤĤƤ
    BTRON/386 ȼ߷פ
    ʤ֤ͥˤĤƤΩ夲 0x80000000 ζ־
    ޥåԥ󥰤뤿ᡢۥѤɬפϤʤ(ITRON-3.0 
    Υ٥нǽǤ)


2.2 ڡñ̤Υ

2.2.1 󥿥ե

  ڡñ̤ǤΥΤ˼δؿ롣¾ؤΥ
ȶ̤뤿ˡؿ̾ˤ 'pmem_' ȤƬդ롣

  pmem_init 	ڡñ̤ΥνԤ 
  pmem_alloc	ꤷ˽äƥ򥢥Ȥ롣
  pmem_free 	pmem_alloc Ǽ롣


2.2.1.1 pmem_init - ڡñ̤Υν

ؿץȥ	ER pmem_init (void)

			ʤ

֤͡		顼ֹ֤
			ｪλ: 0
			­: ENOMEM

ǽ


2.2.1.2 pmem_alloc - ڡñ̤ǤΥΰ

ؿץȥ	VP pmem_alloc (W size)

			size	ΰ礭

֤͡			ΰؤƬݥ󥿡
			۾	0(NULL)

ǽ


2.2.1.3 pmem_free - ڡñ̤ǤΥΰ

ؿץȥ	VP pmem_free (VP region, W size)

			region	ΰؤƬݥ󥿡
			size	ΰ礭

֤͡		顼ֹ֤
			ｪλ: 0

ǽ


2.2.2 ¤

  ڡñ̤ǤΥǤϡʪڡ˼ξä¤Τ
ѤƤ롣

  struct pmem_entry
  {
    W	flag;
    UW	refcount;
  };

  struct pmem_entry	pmem_table[MAX_MEMORY / PAGE_SIZE];


2.3 Хñ̤ǤΥ

ܴؿϥͥǺǤѤؤǤ롣


2.3.1 ؿ󥿥ե

  Хñ̤ΥΤ˼δؿ롣ʤ¾ؤΥ
ȶ̤뤿ƬȤ 'kmem_' դƤ롣

  kmem_init	Хñ̤Υǽν
  kmem_alloc	Хñ̤ǤΥΰ
  kmem_free	kmem_alloc Ǽΰβ


2.3.1.1 kmem_init - ν

2.3.1.2 kmem_alloc - ΰ

2.3.1.3 kmem_free - ΰβ


2.3.2 ¤

  Хñ̤ǤΥǤϸ߻ѤƤʤե꡼ΰ򡢥ꥹ
¤ǴƤ (Ǥϡե꡼ꥹȤȸƤ)
  ƥե꡼ΰϼι¤Τˤäƴ롣

  struct kmem_entry
  {
    struct kmem_entry	*next;
    W			size;
    B			body[0];
    /* ... θե꡼ΰλĤʬ³... */
  };
  
  * kmem_alloc ǼΰΥϡʤȤ kmem_entry 
    ¤ΤΥ礭ʤФʤʤ

  



2.4 ITRON-3.0 Υ


2.5 ĥ


3. BTRON/386 ǤΥ

