`
`USU(l6374353Bl
`
`(12) Ulllted States Patent
`Scttsu ct al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6,374,353 B1
`Apr. 16, 2002
`
`(S4)
`
`lNl*'()RMA'[‘l()N l’R()CI*ZSSIN(} Al’PARA'['US
`METHOD ()1? [;()()1‘[NG INFQRMATION
`PROCESSING APPARATUS ATA HIGH
`SPEED
`
`5,355,498 A
`25,918,048 A *
`:\,93_l3,-$31 A *
`(:__t):>2_.?”.='8 A *
`
`1{I,*1.994 Provino el al.
`(331999 Mealcy ct al.
`8,.’1‘JU‘) Manley et al.
`4;‘2t]UtJ
`Ilagyclal.
`
`‘H3.-“'2
`'1-'l3x2
`?13f2
`
`(75)
`
`Inventors: Atsushi Settsu; Noriyuki Balm; Naotn
`sugah an 01 Tokyo (JP)
`(73) Astzigncc: Mitsubishi Dcnki Kahusliiki Kaislm,
`Tokyo (JP)
`
`(* ) Noticc:
`
`Subject to any disclaimcr, the term of this
`patent is cxlcnclcd or adjusted under 35
`U.S.C. 15403) by U (lays.
`
`(21) APPL N0-5 "9:’2l51:255
`(32) Wed:
`M3,._35 1999
`
`(3U)
`
`Forcign Application Priority Data
`
`(JP)
`
`Lian lo,l998
`(51)
`Int. CL?
`(52) U.S. Cl.
`(58) Field of Search
`
`.__.“”."”._”.”“._“.__.“._” l(LUo595?
`G06F 9E4-15
`713r2
`713:2
`
`(55)
`
`References Cited
`_
`U.S. l’A'l1-NI‘ [)0(TUME.N’l‘S
`
`OTHER PUBLICATIONS
`M. M. Mckusick at al. Maruzen Co. Ltd, Jun. 30, 1991 pp.
`413433‘
`
`* cited by cxaniincr
`
`Primary I;'xmm'ner Thomas M. Hccklcr
`
`(57)
`
`A[lS'l'RAC'I‘
`
`A method ofbooling up an ii'1i'ormalion prcicessing apparatus
`is provided. An operating system is divided into a mini
`operating system (OS) module having :1 function of hoot-
`strap and an OS main body module having functions other
`than the function of bootstrap. The mini 05 i‘l'l0v’.lLll{.‘. can be
`localcd in a bool block Of a bot“ device’ Yvhcrcas the ()8
`main hotly module car1l)e located in a lili: system oflht: boot
`device. A flrrnwarc or 1-‘IW code module stored in a ROM
`1_0«'{<1‘% lh¢_mini 05 m_0d1I1<= into mt=r_n0ry \~_'h_=n homing up Ihc
`l1'il0l'I"I'lal1('I[1 processing apparatus. 111:: mini OS I'l'l0dUlC then
`loads the OS main body module into memory and then
`initializes the OS main body module.
`
`5_.3t'l?_,4‘.}? A
`
`4,-‘I994 Feigenbauni at al.
`
`12 Claims, 26 Drawing Sheets
`
`F/W
`CODE
`MODULE
`
`MEMORY
`
`BOOT BLOCK
`
`
`
`1
`
`APPLE 1006
`
`APPLE 1006
`
`1
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 1 of 26
`
`US 6,374,353 B1
`
`FIG.1
`
`1
`
`2
`
`BOOT BLOCK
`
`MINI OS
`MODULE
`
`6
`
`WW
`CODE
`MODULE
`
`MEMORY
`
`7
`
`5
`
`
`
`
`
`
`OS MAIN
`BODY
`MODULE
`
`FIG.2
`
`MINI KERNEL MODULE
`
`2
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 2 of 26
`
`US 6,374,353 B1
`
`FIG.3
`
`OS MAIN BODY MODULE
`
`KERNEL MODULE
`
`DEVICE DRIVER MODULE
`
`FIG.4
`
`MINI OS MODULE
`
`OS LOADING AND INITLALIZATION
`PROCESSING MODULE
`
` LINK OS MAIN BODY
`
`MODULE WITH MINI
`OS MODULE
`
`
`
`ST113
`
`WITIALIZE OS MAIN
`BODY MODULE
`
`ST1 14
`1
`
`START init PROCESS
`
`FINISH
`
`GENERATE THREAD FOR
`OS LOADING AND
`INITIALIZATION
`PROCESSING MODULE
`
`3
`
`
`
`..lHefl3.PcwU
`
`Apr. 16, 2002
`
`Sheet 3 of 26
`
`US 6,374,353 B1
`
`
`
`MUOJQ.H.OOm_
`
`WUE
`
`Empmwmmam
`
`
`
`MADQOEozammuomm
`
`
`
`mimeSmemwm
`
`
`
`HZmEm_O<Z¢.Emmmuomm
`
`MADQOE
`
`
`
`MADDOEhzm2mo<z<2
`
`
`
`wmozmz202200
`
`
`
`,..zm2mo<z<2mofimmz
`
`MADQOE
`
`
`
`.Em2mo<z<E1_<zo_m
`
`M23902
`
`
`
`mqsoozozammuomm
`
`
`
`WMOSEEq<:b:>
`
`
`
`
`
`WADDOEmmfimomo_>ma
`
`m
`m
`HH
`
`S
`
`o
`
`N.
`
`H
`N
`
`NN
`
`3.
`
`222we
`
`wnom
`
`wmozmz
`
`mango:
`
`mmou
`
`BE
`
`4
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 4 of 26
`
`US 6,374,353 B1
`
`FIG.6
`
`MINT 05 MODULE
`
`
`
`10
`
`30
`
`31
`
`
`
`
`
`PROCESSING MODULE
`
`FIG.7
`
`MINI OS MODULE
`
`INITLALIZE MINI
`KERNEL MODULE
`
`ST121
`
`.
`
`INITIALIZE BOOT DEVI CE
`DRIVER MODULE
`
`5T123
`
`GENERATE THREAD FOR US
`LOAD PROCESSING MODULE
`
`ST123
`
`START THE. THREAD
`
`ST124
`
`5
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 5 of 26
`
`US 6,374,353 B1
`
`FIG.8
`OS LOAD PROCESSING
`MODULE
`
`OS INITIALIZATION
`PROCESSING MODULE
`
`LINK EACH OF 08 FUNCTIONAL
`MODULES LOADED WITH MINI
`OS MODULE
`
`FUNCTIONAL MODULE
`
`INITIALIZE TI-IE OS
`
`LOAD EACH OF
`OS FUNCTIONAL MODULES
`INCLUDED IN OS MAIN BODY
`
`GENERATE THREAD FOR
`OS INITIALIZATION
`PROCESSING MODULE
`
`LOADING
`ALL OS FUNCTIONAL
`MODULES IS
`COMPLETED
`
`ST135
`
`FIG.9
`
`
`
`THREAD SYNCHRONIZATION MODULE
`
`OS INITIALIZATION
`PROCESSING MODULE
`
`
`
`
`
`MINI OS MODULE
`
`MINI KERNEL MODULE
`
`BOOT DEVICE DRIVER MODULE
`
`OS LOAD PROCESSING MODULE
`
`6
`
`
`
`U.S. Patent
`
`Apr. 16, 2002
`
`Sheet 6 of 26
`
`US 6,374,353 B1
`
`FIG.10
`
`MINI OS MODULE
`
`START
`
`INITIALIZE MINI
`KERNEL MODULE
`
`ST15 1
`
`INITIALIZE BOOT DEVICE
`DRIVER MODULE
`
`ST152
`
`GENERATE THREAD FOR OS
`LOAD PROCESSING MODULE
`
`ST153
`
`START THE THREAD
`
`ST15 4
`
`GENERATE THREADFOR
`OS INITIALIZATION
`PROCESSING MODULE
`
`ST-155
`
`START THE THREAD
`
`ST156
`
`FINISH
`
`7
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 7 of 26
`
`US 6,374,353 B1
`
`FIG. 1 1
`
`OS LOAD PROCESSING MODULE
`
`OS INITIALIZATION
`PROCESSING MODULE
`
` LOAD EACH OF OS FUNCTIONAL
`
`MODULES INCLUDED IN
`OS MAIN BODY
`
`
`
`
`
`WAIT FOR REQUEST BY WAY OF
`THREAD SYNCHRONIZATION
`MODULE
`
`
`
`
`
`
`
`
`
`MAKE REQUEST OF OS
`%IoI‘u‘I‘L§-»:Z?c§?:"1§‘~‘:11§v1?f-3:‘fiEz‘°,ixS:II"o‘1‘~:
`OF EACH OF OSFUNCFIONAL
`MODULES LOADED BY WAY OF
`THREAD SYNCI-IRONIZATION
`MODULE
`
`
`
`
`
`
`
`
`
`
`
`Ia”S§5‘fE%HL%iS§5‘x§”a¥H"3¢‘E€‘1L
`03 MODULE
`
`ST173
`
`INITIALIZE TI-[E OS
`FUNCTIONAL MODULE
`
`
`LOADING
`ALL OS FUNCTIONAL
`
`MODULES IS
`COMPLETED
`
`
`
`START init PROCESS
`
`8
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 3 of 26
`
`US 6,374,353 B1
`
`
`
`MUO.._m.HOOm
`
`2S
`
`OE
`
`mu_>mn
`
`.HOO.m
`
`Emhmrmmam
`
`
`
`WADQOEozammoofi
`
`
`
`3440zmemrm
`
`
`
`.H.ZmEmO<Z.<Emmmoomm
`
`mango:
`
`
`
`MADQOE.HZmEm0<Z<E
`
`
`
`wmozmzZOEEOU
`
`
`
`..,zm2mm<z<Emofimmz
`
`m.._DQO2
`
`
`
`,~zm2mo<z<213295
`
`WADQOE
`
`
`
`WADQOEozammuomm
`
`
`
`wmozmz.._<D.Hm_>
`
`
`
`
`
`mango:aminomoczmm
`
`S
`
`E
`
`3
`
`on
`
`Hm
`
`mm
`
`3
`
`Z532mo
`
`woom
`
`wmozmz
`
`WADQOE
`
`MQOU
`
`BE
`
`9
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 9 of 26
`
`US 6,374,353 B1
`
`FIG. 13
`
`PROCESSING MODULE
`
`OS I1\UTIALIZATION
`
`FIG. 14
`
`OS LOADING AND DECOMPRESSION
`PROCESSING MODULE
`
`MODULES INCLUDED IN
`OS MAIN BODY
`
`ST181
`
`
`
`
`
`START THE THREAD
`
`
`
`ST184
`
`
`
`ST185
`
`ALL OS FUNCTIONAL
`MODULES IS
`COMPLETED
`9
`
` LOADING
`START init PROCESS ST186
`
`
`YES
`
`10
`
` LOAD EACH OF OS FUNCTIONAL
`
`
` ST182
`
`
`DECOMPRESS EACH OF 03
`FUNCTIONAL MODULES LOADED
`
`GENERATE ‘THREAD FOR OS
`INITIALIZATION PROCESSING MODULE
`
`ST183
`
`
`
`10
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 10 of 26
`
`US 6,374,353 B1
`
`FIG.15
`
`OS DECOMPRESSION
`
`OS LOAD PROCESSING MODULE
`
`OS DECOMPRESSION
`PROCESSING MODULE
`
`DECOMPRESS EACH OF OS
`FUNCTIONAL MODULES
`LOADED
`
`PROCESSING MODULE
` LOADING
`
` LOAD EACH OF OS FUNCTIONAL
`
`
`
`MODULES INCLUDED IN
`OS MAIN BODY
`
` GENERATE THREAD FOR
`03 DECOMPRESSION
`PROCESSING MODULE
`
`
`
`
`
`GENERATE THREAD FOR
`OS INITIALIZ.ATION
`PROCESSING MODULE
`
`ALL OS FUNCTIONAL
`MODULES IS
`
`COMPLETED
`
`
`ST195
`
`. YES
`
`START init PROCESS
`
`
`
`
`
`11
`
`11
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 11 of 26
`
`US 6,374,353 B1
`
`E
`
`ZOHEZEWD
`
`ZOE.DZDm.
`
`MAE
`
`
`
`MADQOEZOH.H<UHwEm<
`
`Ememwmmam
`
`
`
`NADQOEwzammuomm
`
`
`
`m.._1_<UEmemwm
`
`
`
`.:,_m2mo<z<2mmmoomm
`
`MADDOE
`
`
`
`WADQOE._.zmEmo<z<2
`
`
`
`VMOSEEZOEEOU
`
`
`
`ezm2mo<zS2mwfimmz
`
`WADQOE
`
`
`
`ezmEmo<z<2q<zo_m
`
`MADQOE
`
`
`
`MJDQOEozammoomm
`
`
`
`WMOEME1_<P5=>
`
`
`
`
`
`WHDQOEmmimmmu_>mm
`
`2BD
`
`on
`
`Hm
`
`an
`
`3
`
`E
`
`Z732mo
`
`Eom
`
`FMOEME
`
`12
`
`HADQOE
`
`WQOU
`
`12
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Apr. 16, 2002
`
`Sheet 12 of 26
`
`US 6,374,353 B1
`
`FIG.18
`
`APPLICATION MODULE
`MESSA GE
`
`SYSTEM CALLS
`PROCESSING
`
`PROCESS
`MANAGEMENT
`
`MANAGEMENT
`
`FIG.19
`
`MINI KERNEL MODULE
`
`
`
`
`
`BOOT DEVICE DRIVER MODULE
`
`AP EXECUTION AND OS LOAD
`PROCESSING MODULE
`
`OS INITL-’-XLIZATION
`PROCESSING MODULE
`
`13
`
`10
`
`72
`
`
`
`
`31
`
`13
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 13 of 26
`
`US 6,374,353 B1
`
`FIG.20
`AP EXECUTION AND
`Os LOAD PROCESSING MODULE
`
`START
`
`LOAD APPLICATION MODULE
`
`STZII
`
`ANALYZE FUNCTION DEFINITION FILE
`
`51712
`
`LOAD EACH OF OS FUNCTIONAL MODULES
`INCLUDED IN OS MAIN BODY AND LISTED
`IN FUNCTION DEFINITION FILE
`
`GENERATE THREAD FOR OS INITIALIZATION
`PROCESSING MODULE
`
`ST213
`
`31214
`
`
`
`ST215
`
`
`
`ST216
`
`LOADING ALL
`OS FUNCTIONAL MODULES
`
`LISTED IN FUNCTION DEFINITION
`
`FILE IS COMPLETED
`
`
`YES
`START APPLICATION MODULE
`
`SE17
`
`
`
`LOAD EACH OFREMAINING Os FUNCTIONAL
`MODULES INCLUDED IN OS MAIN BODY
`
`GENERATE THREAD FOR OS INITIALIZATION
`PROCESSING MODULE
`
`
`LOADING
`ALL REMAINING OS FUNCTIONAL
`MODULES IS?COMPLETED
`
`ST221
`
`
`
`
`YES
`
`START init PROCESS
`
`ST222
`
`FINISH
`
`14
`
`ST313
`
`ST219
`
`ST220
`
`14
`
`
`
`U.S. Patent
`
`Apr. 16, 2002
`
`Sheet 14 of 26
`
`US 6,374,353 B1
`
`F/W
`CODE
`MODULE
`
`MODULE
`
`MINI OS
`
`FIG.21
`
`2
`
`4
`
`BOOT
`BLOCK
`
`MEMORY
`
`FIG.22
`
`MINI OS MODULE
`
`CODE
`PORTION
`----- —-NflNIKERNELMODULE——---——----
`DATA
`PORTION
`
`CODE
`PORTION
`- - -BOOT DEVICE DRIVER MODULE ——————— — —
`DATA
`PORTION
`
`PORTION
`
`_ OS LOADING AND INITIALIZATION
`PROCESSING MODULE
`
`CODE
`P ORTION
`
`15
`
`15
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 15 of 26
`
`US 6,374,353 B1
`
`MINI OS MODULE
`
`FIG. 23
`OS LOADING AND INITIALIZATION
`PROCESSING MODULE
`
`ST241
`
`LOAD OS MAIN BODY MODULE
`
`ST242
`
`
`
`INITIALIZE OS MAIN BODY
`MODULE
`
`ST244
`
`START init PROCESS
`
`GENERATE THREAD FOR OS
`LOADING AND INTILALIZATION
`PROCESSING MODULE
`
`LINK OS MAIN BODY MODULE
`WITH MINI OS MODULE
`
`ST243
`
`
`
`
`
`
`
`
`CODE
`R 0
`———— — -MINI KERNEL MODULE — - - — —P—O— -13- 15
`
`DATA
`
`PORTION
`
`
`
`
`
`CODE
`PORTION
`— —BOOT DEVICE DRIVER MODULE- — - - - - - - - -
`DATA
`P ORTION
`
`10
`
`
`
`
`
`
`
`
`os LOADING AND [NITIALIZATION
`"PROCESSING MODULE
`
`11
`
`coma
`
`PORTION
`
`DATA
`
`PORTION
`
` 80
`
`ADDRESS RESOLVE TABLE
`
`16
`
`16
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 16 of 26
`
`US 6,374,353 B1
`
`ST25 1
`
`ST252
`
`ST25 3
`
`ST25 4
`
`ST255
`
`STZS6
`
`
`
`
`
`
`
`
`FIG.25
`OS LOADING AND INT1"IALIZATION
`PROCESSING MODULE
`
`
`
`LOAD OS MAIN BODY MODULE
`
`LINK OS MAIN BODY MODULE
`WITH MINI OS MODULE
`
`[NITIALIZE OS MAIN BODY MODULE
`
`START init PROCESS
`
`LOAD CODE PORTION OF
`MINI OS MODULE
`
`UPDATE ADDRESS RESOLVE TABLE
`
`
`
`
`
`
`
`FIG.26
`
`08 MAIN BODY MODULE
`
`8
`
`91
`
`'--._
`--_______~LOADINGFLAG
`
`
`DEVICE DRIVER
`
`VIRTUAL MEMORY
`
`SIGNAL
`MANAGEMENT
`
`MESSAGE
`MANAGEMENT
`
`COMMON MEMORY
`MANAGEMENT
`
`PROCESS MANAGEMENT
`
`SYSTEM CALLS PROCESSING
`
`17
`
`17
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 17 of 26
`
`US 6,374,353 B1
`
`FIG.27
`
`
`
`MINI KERNEL MODULE
`
`BOOT DEVICE DRIVER MODULE
`
`OS LOAD PROCESSING MODULE
`
`10
`
`30
`
`31
`
`
`
`OS INITIALIZATION PROCESSING MODULE
`
`
`
`FIG.28
`
`MINI OS MODULE
`
`
`
`INITIALIZE MINI
`KERNEL MODULE
`
`ST261
`
`
`
` ST263
`
`
`INITIALIZE BOOT DEVICE
`DRIVER MODULE
`
`ST262
`
`GENERATE THREAD FOR OS
`LOAD PROCESSING MODULE
`
`START THE THREAD
`
`ST264
`
`
`
`18
`
`18
`
`
`
`U.S. Patent
`
`Apr. 16, 2002
`
`Sheet 18 of 26
`
`US 6,374,353 B1
`
`FIG.29
`
`OS LOAD PROCESSING MODULE
`
`START
`
`LOAD ONE BLOCK OF Os MAIN
`BODY MODULE INTO MEMORY
`
`ST271
`
`ST272
`
`
`
`A BIT OF LOADING
`FLA? IS 1
`
`YES
`
`ST273
`
`Sm‘
`
`ST275
`
`
`
`GENERATE THREAD FOR
`OS IN1TLALIZA'I"ION
`PROCESSING MODULE
`
`LOADING
`
`OS MAIN BODY MODULE
`
`IS COMELETED
`
`
`
`
`YES
`
`START init PROCESS
`
`SE76
`
`FINISH
`
`19
`
`19
`
`
`
`US. Patent
`
`Apr. 16,2002
`
`Sheet 19 of 26
`
`US 6,374,353 B1
`
`FIG.30
`
`OS {NITTALIZATTON
`PROCESSING MODULE
`
`ST281
`
`ST283
`
`ST282
`
`FIG.31
`
`OS MAIN BODY MODULE
`
`LOADING FLAG
`
`
`U : NEGLECT
`OTHERWISE : ADDRESSES OF
`LINK PROCESSING FUNCTION
`AND INITIALIZATION
`PROCESSING FUNCTION
`
`20
`
`20
`
`
`
`U.S. Patent
`
`Apr. 16, 2002
`
`Sheet 20 of 26
`
`US 6,374,353 B1
`
`FIG.32
`
`OS LOAD PROCESSING MODULE
`
`LOAD ONE BLOCK OF OS MAIN
`BODY MODULE INTO MEMORY
`
`STZ91
`
`ST292
`
`
`
`
`
`GENERATE THREAD FOR
`OS INITIALIZATION
`PROCESSING MODULE
`
`ST293
`
`ST294
`
`
`
`LOADING
`OS MAIN BODY MODULE
`IS COMI:LETED
`
`YES
`
`
`
`START init PROCESS
`
`ST296
`
`
`
`
`
`
`
`LOADING
`FLAG IS OTI?-IER THAN 0
`
`21
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 21 of 26
`
`US 6,374,353 B1
`
`FIG.33
`
`OS INITIALIZATION
`PROCESSING MODULE
`
`CALL LINK PROCESSING FUNCTION
`SPECIFIED BY LOADING FLAG
`
` ST301
` ST302
`
`CALL INITIALIZATION PROCESSING
`%IRIgT’ION SPECIFIED BY LOADING
`
`105
`
`OS
`PROGRAM
`FILE
`
`22
`
`22
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 22 of 26
`
`US 6,374,353 B1
`
`FIG.35
`OS PROGRAM FILE
`
`
`ADDRESS SPECIFYING
`
`
`
`MEMORY LOCATION
`
`OF CODE AREA
`
`
`
`
`
`
`MEMORY LOCATION
`OF DATA AREA
`
`SIZE OF DATA AREA
`
`ADDRESS SPECIPYING
`LOCATION OF DATA
`AREA RELATIVE TO OS
`PROGRAM FILE ORIGIN
`
`ADDRESS SPECIFYING
`LOCATION OF SYMBOL
`INFORMATION AREA
`
`
`RELATIVE TO OS
`
`
`PROGRAM FILE ORIGIN
`
`
`
`
`HEADER
`
`CODE PORTION OF
`MINI OS MODULE
`
`CODE PORTION OF OS
`MAIN BODY MODULE
`
`
`
`SIZE OF CODE AREA
`
`I ADDRESS SPECIFYING
`
`LOCATION OF CODE
`AREA RELATIVE TO OS
`
`
`
`109 WONOF
`Mm 03 MODULE
`
`110
`
`DATA PORTION OF OS
`MAIN BODY MODULE
`
`111
`
`
`
`
`
`106
`
`107
`
`108
`
` 109
`
`FIG.36
`
`OS PROGRAM FILE
`
`MINI OS MODULE
`
`HEADER
`
`CODE PORTION OF
`MINI OS MODULE
`
`DATA PORTION OF
`MINI OS MODULE
`
`
`
`HEADER
`
`CODE PORTION OF
`MINI OS MODULE
`
`CODE PORTION OF OS
`MAIN BODY MODULE
`
`DATA PORTION OF
`MINI OS MODULE
`
`OS MAIN BODY MODULE
`
`106
`
`107
`
`
`
`108
`
`
`
`114
`
`108
`
`110
`
`
`
`03
`CODE PORTION OF 08
`DIVIDING
`PROGRAM MAIN BODY MODULE
`
`
`
`DATA PORTION OF OS
`MAIN BODY MODULE
`
`
`
`112
`
`23
`
`DATA PORTION OF OS
`MAIN BODY MODULE
`
`111
`
`
`
`SYMB OL
`INFORMATION
`AREA
`
`
`
`
`
`110
`
`23
`
`
`
`U.S. Patent
`
`Apr. 16, 2002
`
`Sheet 23 of 26
`
`US 6,374,353 B1
`
`FIG.37
`
`OS DIVIDING PROGRAM
`
`START
`
`EXTRACT CODE PORTION
`OF MINI OS MODULE
`
`ST311
`
`EXTRACT DATA PORTION
`OF MINI OS MODULE
`
`ST312
`
`CREATE HEADER OF
`MINI OS MODULE
`
`ST313
`
`EXTRACT CODE PORTION
`OF OS MAIN BODY MODULE
`
`ST314
`
`EXTRACT DATA PORTION
`OF OS MAIN BODY MODULE
`
`ST315
`
`CREATE HEADER OF
`OS MAIN BODY MODULE
`
`ST3 15
`
`FINISH
`
`24
`
`24
`
`
`
`US. Patent
`
`Apr. 16,2002
`
`Sheet 24 of 26
`
`US 6,374,353 B1
`
`
`
`muoqm.HOOm
`
`MADQOE
`
`MO5:;
`
`MADQOEmoH752no
`
`ZOVHMOAmeow
`
`m.Smo2
`
`MQOU
`
`>23
`
`mo_>mn
`
`HOOE
`
`ma
`
`manna:moH234EU
`
`
`
`zofimom<.H<Q
`
`25
`
`25
`
`
`
`
`
`U.S. Patent
`
`Apr. 16,2002
`
`Sheet 25 of 26
`
`US 6,374,353 B1
`
`FIG.39
`
`MINI OS MODULE
`
`OS LOADING AND INITIALIZATION
`PROCESSING MODULE
`
`GENERATE THREAD FOR
`OS LOADING AND
`INITIALIZATION MODULE
`
`26
`
`26
`
`
`
`US. Patent
`
`Apr. 16,2002
`
`Sheet 26 of 26
`
`US 6,374,353 B1
`
`murpmm
`
`BOOM.
`
`
`
`MUOAm_HOOm_
`
`MADQOE
`
`mo:/:2
`
`Z322mo
`
`PQOM
`
`MADQOE
`
`mango:moH232no
`
`
`
`zofimomNQOU
`
`nomozofimomWQOU
`
`WADDOEwnomZ22
`
`
`
`moZOEMOA<.H<D
`
`MADDOEmo:52
`
`
`
`MOmozozaom<,H.<Q
`
`
`
`MADQOEwmom7:<E
`
`27
`
`27
`
`
`
`
`
`
`
`
`US 6,374,353 B1
`
`1
`INFORMATION l"ROCESSING APPARATUS
`MISTI-IOI} OF BOOTING INl'*‘0RMA'l‘lON
`PROCESSING APPARATUS AT A HIGH
`SPEED
`
`BACKGROUND O1’ 'l'I-IE. INVI:iN'I'ION
`
`1. Field of the Invention
`
`'Ihe present invention relates to an information processing
`apparatus capable of reducing the time required for booting
`itself when it is powered on, and a method of booting an
`information processing apparatus at a high speed.
`2. Description of the Prior Art
`In accordance with a prior art method of booting an
`information processing apparatus, a firmware or FEW code
`stored in a programmable read only memory (ROM) loads
`a bootstrap code, called boot, into memory, as shown in for
`example "Booting up System", Chapter 13, pp.4l3—-433 in
`“The Design and Implementation of the UNIX 4.3l3SD”,
`translated by Akira Nakamura et al., Maruzen, Jun. 30, "I991 .
`The boot progam then loads an operating system or OS
`stored in a file system into memory. The OS is then started
`and goes through initialization. After that,
`the OS starts
`execution of a lirst process or program, called init, to be
`executed first after the OS goes through initialization. Appli-
`cations can then run on the OS.
`
`Since the prior art method of booting an information
`processing apparatus comprises the steps of the FIW code
`loading the bootstrap code stored in a boot block of a boot
`device into memory, the FEW code starting execution of the
`bootstrap code, the bootstrap code loading the OS stored in
`the file system of the boot device into memory, and the
`bootstrap code starting execution of the OS, much time is
`required to start execution of the OS. Further, another
`problem with the prior art method is that since the OS cannot
`start execution of applications to be started automatically
`when the information processing apparatus is booted up
`until the OS finishes going through initialization perfectly,
`much time is required to start execution of such applications
`when booting up the information processing apparatus.
`
`SUMMARY OF THE INVENTION
`
`ID
`
`15
`
`~
`
`30
`
`35
`
`40
`
`45
`
`50
`
`invention is made to overcome the above
`The present
`problems. It is therefore an object of the present invention to
`provide an information processing apparatus and a method
`capable of reducing the time required for booting up itself
`when it is powered on, and also reducing the time required
`to start execution of applications to be started automatically
`when the information processing apparatus is booted up.
`In accordance with an aspect of the present
`invention,
`there is provided an information processing apparatus com-
`prising: a boot device divided into a boot block in which a
`mini operating system (05) module having a function
`required for bootstrap processing is located and a file system _
`in which an operating system (US) main body module
`having functions other than the function of bootstrap; and a
`read-only memory or R()M in which a [irrnware or WW
`code module is located for loading the mini 08 module
`located in the boot block into a memory and for starting
`execution of the mini OS module instead of a bootstrap code
`when booting up the information processing apparatus, the
`mini 08 module loading the 08 main body module from the
`file system of the boot device into the memory, and the mini
`08 module being linked to the 08 main body module.
`In accordance with another aspect of the present
`invention,
`there is provided a method of booting up an
`
`60
`
`65
`
`2
`information processing apparatus comprising a boot device
`and a memory by loading an operating system into the
`memory, comprising the steps of: dividing the operating
`system into a mini operating system (OS) module having a
`function required for bootstrap processing and an operating
`system (OS) main body module having functions other than
`the function of bootstrap, the mini OS module including a
`mini kernel module that
`is a basic part of the operating
`system, a boot device driver module for performing inputf
`output (U0) operations on the boot device, and an OS
`loading and initialization processing module for loading the
`08 main body module into the memory and for initializing
`the OS main body module; locating the mini OS module in
`a boot block of the boot device; locating the OS main body
`module in a file system of the boot device; a firmware or
`FIW code module being stored in a ROM and loading the
`mini OS module located in the boot block into the memory
`when booting up the information processing apparatus; the
`mini OS module initializing the mini kernel module and the
`boot device driver module; the mini OS module generating
`and starting execution of a thread for the 08 leading and
`initialization processing module; and the OS loading and
`initialization processing module loading the OS main body
`module stored in the file system into the memory and then
`initializing the OS main body module.
`In accordance with a preferred embodiment of the present
`invention,
`the OS main body module is divided into a
`plurality of functional modules including a device driver
`module, which are located as separate files in the file system,
`and the OS loading and initialization processing module is
`divided into an OS loading processing module for loading
`each of the plurality of functional modules into the memory
`and an OS initialization module for initializing each of the
`plurality of functional modules loaded into the memory by
`the OS loading processing module. Further, after the mini
`OS module is loaded into the memory, the mini 08 module
`initializes the mini kernel module and the boot device driver
`module and then generates and starts execution of a thread
`for the OS loading processing module. After the thread for
`the OS loading processing module is started, the OS loading
`processing module loads each of the plurality of functional
`modules into the memory and then generates and starts
`execution of a thread for the OS initialization module every
`time it
`loads each of the plurality of functional modules.
`After the thread for the OS initialization module is started,
`the OS initialization module initializes each of the plurality
`of functional modules loaded into the memory.
`In accordance with another preferred embodiment of the
`present invention, the mini OS module includes a thread
`synchronization module for providing synchronization
`between a thread for the OS loading processing module and
`a thread for the OS initialization module using the mini
`kernel module. Further, the mini 08 module generates and
`starts execution of a thread for the OS loading processing
`module and a thread for the OS initialization module after
`the mini 05 module initializes the mini kernel module and
`the boot device driver module. After those threads are
`
`started, the OS initialization module brings itself into a state
`in which it
`is waiting for a request for initialization of a
`functional module through the thread synchronization mod-
`ule. Every time the OS loading processing module loads
`each of the plurality of functional modules into the memory,
`the OS loading processing module makes a request ofthe OS
`initialization modttle for initialization ofeach of the plurality
`of functional modules through the thread synchronization
`module. The OS initialization module initializes each of the
`plurality of functional modules loaded into the memory
`
`28
`
`28
`
`
`
`US 6,374,353 B1
`
`I0
`
`15
`
`30
`
`3
`every time the OS initialization module receives a request
`for initialization of each of the plurality of functional
`modules loaded into the memory from the OS loading
`processing module, and then waits for another request for
`initialization.
`In accordance with another preferred embodiment of the
`present invention, the plurality of functional modules, into
`which the OS main body module is divided, are stored as
`compressed files in the file system and the loading and
`initialization processing module of the mini OS module is
`divided into an OS loading and decompression processing
`module and an OS initialization module. Further, the mini
`OS module generates and starts execution of a thread for the
`OS loading and decompression processing module after the
`mini OS module initializes the mini kernel module and the
`boot device driver module. After the thread for the OS
`loading and decompression processing module is started, the
`OS loading and decompression processing module loads
`each of the plurality of functional modules into the memory
`and deoompresses the loaded functional module, and then .
`generates and starts execution of a thread for
`the OS
`initialization module. After the thread for the OS initializa-
`tion module is exccutcd, the OS initialization module ini-
`tializes each of the plurality of functional modules loaded
`into the memory and decompressed.
`In accordance with another preferred embodiment of the
`present invention, the OS loading and decompression pro-
`cessing module is divided into an OS loading processing
`module and an OS decompression processing module.
`Further, the mini OS module generates and starts execution
`of a thread for the OS loading processing module after the
`mini OS module initializes the mini kernel module and the
`boot device driver module. After the thread for the OS
`loading processing module is started, the OS loading pro-
`cessing module loads each of the plurality of compressed
`functional modules into the memory, and then generates and
`starts execution of a thread for the OS decompression
`processing module. After the thread for the OS decompres-
`sion processing module is started, the OS decompression
`processing module decompresses each of the plurality of
`compressed functional module loaded into the memory and
`then generates and starts execution of a thread for the OS
`initialization module. And, after the thread for the OS
`initialization module is started, the OS initialization module
`initializes each of the functional modules loaded into the
`memory and decompressed by the OS decompression pro-
`cessing module.
`In accordance with another preferred embodiment of the
`present invention, the OS loading processing module of the
`mini OS module is an application (AP) execution and OS
`loading processing module for starting execution of at least
`a predetermined application module which is located in the
`file system and which can automatically be started and run
`on the operating system when booting up the information
`processing apparatus, and for loading each of the plurality of _
`functional modules into the memory. Further, the predetcrw
`mined application module includes a function definition lile
`in which some functional modules required for the applica-
`tion module to run on the operating system are listed. After
`the mini 08 module is loaded into the memory, the mini 08
`module initializes the mini kernel module and the boot
`device driver module and then generates and starts execution
`of a thread for theAP execution and OS loading processing
`module. After the thread for the AP execution and OS
`loading processing module is started, the AP execution and
`OS loading processing module loads the application nodule
`from the file system into the memory and further loads some
`
`35
`
`40
`
`45
`
`50
`
`60
`
`65
`
`4
`functional modules required for the application module into
`the memory according to the function delinition file included
`in the application module, and then generates and starts
`execution of a thread for the OS initialization module. After
`the thread for the OS initialization module is started, the OS
`initialization module then initializes each of the some func-
`tional modules loaded into the memory. And, after the
`initialization of all of the some functional modules is
`completed, the application execution and OS loading pro-
`cessing module further loads the remainder of all functional
`modules included in the OS main body module into the
`memory and initializes the remainder using the OS initial-
`ization processing module while starting execution of the
`application module as a process.
`In accordance with another preferred embodiment of the
`present invention, the OS loading and initialization process-
`ing module of the mini OS module is divided into an OS
`loading processing module and an OS initialization module,
`the OS main body module is divided into a plurality of
`blocks of arbitrary record size, each of which includes a
`loading flag consisting of a plurality of hits respectively
`corresponding to the plurality of functional modules
`included in the OS main body module. Further, the loading
`flag ofone of the plurality of blocks including the end of any
`one of the plurality of functional modules has a correspond-
`ing bit set
`to a predetermined value. After the mini OS
`module is loaded into the memory,
`the mini OS module
`initializes the mini kernel module and the boot device driver
`module and then generates and starts execution of a thread
`for the OS loading processing module. After the thread for
`the OS loading processing module is started, the loading
`processing module loads each of the plurality of blocks of
`the OS main body module into the memory, and refers to the
`loading flag every time it loads each of the plurality of
`blocks into the memory. Only if a bit of the loading llag is
`set
`to a predetermined value, the OS loading processing
`module generates and starts execution ofa thread for the OS
`initialization module. And, after the thread for the OS
`initialization module is started, the OS initialization module
`initializes a corresponding one of the plurality of functional
`modules loaded into the memory.
`In accordance with another preferred embodiment of the
`present invention, the OS loading and initialization process-
`ing module is divided into an OS loading processing module
`and an OS initialization module, and the OS main body
`module is divided into a plurality of blocks of arbitrary
`record size, each of which includes a loading llag. Further,
`the loading flag of one of the plurality of blocks including
`the end of any one of the plurality of functional modules has
`the address of a linkage processing function of linking the
`one functional module with the mini OS module and the
`address of an initialization processing function of initializing
`the one functional module. After the mini 08 module is
`loaded into the memory, the mini OS module initializes the
`mini kernel module and the boot device driver module and
`then generates and starts execution of a thread for the OS
`loading processing module. After the thread for the OS
`loading processing module is started, the loading processing
`module loads each of the plurality of blocks of the OS main
`body module into the memory, and refers to the loading flag
`every time it loads each of the plurality of blocks into the
`memory. Only ifthc loading flag has a value other than zero,
`the OS loading processing module generates and starts
`execution of a thread for the OS initialization module. And,
`after the thread for the OS initialization module is started,
`the OS initialization module calls a
`linkage processing
`function and an initialization processing function according
`to the value of the loading flag.
`
`29
`
`29
`
`
`
`US 6,374,353 B1
`
`5
`In accordance with another preferred embodiment of the
`present invention, the method further comprises the steps of,
`in order to generate the mini OS module and the OS main
`body module, combining an object
`file of the mini OS
`module and an object file of the OS main body module into
`an operating system file by using a linkage editor or linker,
`and dividing the operating system file into the mini OS
`module and the OS main body module according to link
`information.
`
`6
`FIG. 4 is a flow chart showing operations of the mini 05
`module of the information processing apparatus according to
`the tirst embodiment of the present invention;
`FIG. 5 is a block diagram showing the structure of an
`information processing apparatus according to a second
`embodiment of the present invention;
`FIG. 6 is a diagram showing the structure of a mini 08
`module of the information processing apparatus according to
`the second embodiment of the present invention;
`FIG. 7 is a llow chart showing operations of the mini 05
`module of the information processing apparatus according to
`the second embodiment of the present invention;
`FIG. 8 is a flow chart showing operations of an OS load
`processing module and an OS initialization processing mod-
`ule of the information processing apparatus according to the
`second embodiment of the present invention;
`FIG. 9 is a diagram showing the stnicture of a mini OS
`module of an information processing apparatus according to
`a third embodiment of the present invention;
`FIG. 10 is a How chart showing operations of the mini 03
`module of the information processing apparatus according to
`the third embodiment of the present invention;
`FIG. 11 is a flow chart showing operations of an OS load
`processing module and an OS initialization processing mod-
`ule of the information processing apparatus according to the
`third embodiment of the present invention;
`FIG. 12 is a block diagram showing the structure of an
`information processing apparatus according to a fourth
`embodiment of the present invention;
`FIG. 13 is a diagram showing the structure of a mini OS
`module of the information processing apparatus according to
`the fourth embodiment of the present invention;
`FIG. 14 is a flow chart showing operations of an OS
`loading and decompression processing module of the infor-
`mation processing apparatus according to the fourth embodi-
`ment of the present invention;
`FIG. 15 is a diagram showing the structure of a mini OS
`module of an information processing apparatus according to
`a fifth embodiment of the present invention;
`FIG. 16 is a flow chart showing operations of an OS load
`processing module and an OS decompression processing
`module of the information processing apparatus according to
`the fifth embodiment of the present invention;
`FIG. 17 is a block diagram showing the structure of an
`information processing apparatus according to a sixth
`embodiment of the present invention;
`FIG. 18 is a diagram showing an application module of
`the information processing apparatus according to the sixth
`embodiment of the present invention;
`FIG. 19 is a diagram showing the structure of a mini OS
`module of the information processing apparatus according to
`the sixth embodiment of the present invention;
`FIG. 20 is a flow chart showing operations of an appli-
`cation execution and 08 load processing module of the
`information processing apparatus according to the sixth
`embodiment of the present invention;
`FIG. 21 is a block diagram showing the structure of an
`information processing apparatus according to a seventh
`embodiment of the present invention;
`FIG. 22 is a diagram showing the structure of a mini OS
`module of the information processing apparatus according to
`the seventh embodiment of the present invention;
`FIG. 23 is a flow chart showing operations of the mini 08
`module and an OS loading and initialization processing
`
`In accordance with another aspect of the present
`invention,
`there is provided a method of booting up an
`information processing apparat