Article title: describes the functions of the Linux kernel function Start_kernel. Linux is a technology channel of the IT lab in China. Includes basic categories such as desktop applications, Linux system management, kernel research, embedded systems, and open source.
Start_kernel () calls a series of initialization functions to complete the kernel settings. Some of these actions are public, and others are executed only after configuration.
In the start_kernel () function,
Output Linux version information (printk (linux_banner ))
Set the architecture-related environment (setup_arch ())
Page table structure initialization (paging_init ())
Use the entry point in "arch/alpha/kernel/entry. S" to set the system self-trapping entry (trap_init ())
Use the alpha_mv structure and entry. S entry to initialize the system IRQ (init_IRQ ())
Initialize the core process scheduler (including initializing several default Bottom-half and sched_init ())
Time, timer initialization (including reading CMOS clock, estimated clock speed, initialization timer interruption, etc., time_init ())
Extract and analyze the core startup parameters (read the parameters from the environment variables, set the corresponding flag to wait for processing, (parse_options ())
Console initialization (Initialize before PCI for output information, console_init ())
Profile data structure initialization (prof_buffer and prof_len variables)
Core Cache initialization (Cache describing Cache information, kmem_cache_init ())
Delay calibration (get the delay between the clock jiffies and CPU clock speed ticks, calibrate_delay ())
Memory Initialization (set the initial values of memory upstream and downstream and page table items, mem_init ())
Create and set internal and general cache ("slab_cache", kmem_cache_sizes_init ())
Create uid taskcount SLAB cache ("uid_cache", uidcache_init ())
Create a file cache ("files_cache", filescache_init ())
Create directory cache ("dentry_cache", dcache_init ())
Create a cache related to the VM ("vm_area_struct", "mm_struct", vma_init ())
Block device read/write buffer initialization ("buffer_head" cache user accelerated access, buffer_init ())
Create page cache (memory page hash table initialization, page_cache_init ())
Create a signal queue cache ("signal_queue", signals_init ())
Initialize memory inode table (inode_init ())
Create a memory file descriptor table ("filp_cache", file_table_init ())
Check the architecture vulnerability (for alpha, this function is empty, check_bugs ())
Initialize the remaining CPU of the SMP machine (except the current boot CPU) (this function is null for kernels without SMP configuration, smp_init ())
Start the init process (create the first core thread, call the init () function, the original execution sequence calls cpu_idle () for scheduling, init ())
So far start_kernel () has ended, and the basic core environment has been established.