接下来要初始化的是咱们的会议室管理系统会议室管理系统。对应的,mm_init()就是用来初始化内存管理模块。
项目需要项目管理进行调度,需要执行一定的调度策略。sched_init()就是用于初始化调度模块。
vfs_caches_init()会用来初始化基于内存的文件系统rootfs。在这个函数里面,会调用mnt_init()-
>init_rootfs()。这里面有一行代码,register_filesystem(&rootfs_fs_type)。在VFS虚拟文件系统里面注册了
一种类型,我们定义为structfile_system_typerootfs_fs_type。
文件系统是我们的项目资料库,为了兼容各种各样的文件系统,我们需要将文件的相关数据结构和操作抽象
出来,形成一个抽象层对上提供统一的接口,这个抽象层就是VFS(VirtualFileSystem),虚拟文件系统。
这里的rootfs还有其他用处,下面我们会用到。
最后,start_kernel()调用的是rest_init(),用来做其他方面的初始化,这里面做了好多的工作。
初始化1号进程初始化1号进程
rest_init的第一大工作是,用kernel_thread(kernel_init,NULL,CLONE_FS)创建第二个进程,这个是1号进1号进
程程。
1号进程对于操作系统来讲,有“划时代”的意义。因为它将运行一个用户进程,这意味着这个公司把一个
老板独立完成的制度,变成了可以交付他人完成的制度。这个1号进程就相当于老板带了一个大徒弟,有了
第一个,就有第二个,后面大徒弟开枝散叶,带了很多徒弟,形成一棵进程树。
一旦有了用户进程,公司的运行模式就要发生一定的变化。因为原来你是老板,没有雇佣其他人,所有东西
都是你的,无论多么关键的资源,第一,不会有人给你抢,第二,不会有人恶意破坏、恶意使用。
但是现在有了其他人,你就要开始做一定的区分,哪些是核心资源,哪些是非核心资源;办公区也要分开,
有普通的项目人员都能访问的项目工作区,还有职业核心人员能够访问的核心保密区。
评论0
最新资源