内存里动作。kthread_init(),kproc_start(&page_kp),kproc_start(&vm_kp)
,kproc_start(&up_kp)等这几个进程,在fork()后相继被调用。它就是相
应的进程1,2,3,4等。
除process 1 以外,其他的进程调用并不返回调用的地址。(也就是,main()
的跟随执行后,并不返回locore.s)。对于process #1的kernel的虚拟内存,
在kthread_init()返回后,main()的跟随就完了,回到locore.s后,process #1
的进程空间的配置文件/sbin/init就被执行。
main()在process #0对应的kernel虚拟内存运行后,进入时间链表scheduler()。
这个并不返回。那现在就有五个进程了。
然后,fork() 的调用在下面说明。
1,分配process ID,保证struct proc()用的空间。
2,复制父亲的process的虚拟内存空间,作成物理内存的变换表。对
应两个进程,采用相对应的物理内存表。
3,给回父亲的struct proc和struct user,然后对子进程的struct和
struct user进行初始化。
4,kernel的stacker也进行复制。
5,返回父进程后,标记生成的子进程。完成处理。
但是,process #0 -- 4 这五个进程的虚拟内存里面什么都没有。这些是核心
进程的特殊部分。进程0,2,3是调节系统存在的进程的执行优先级,监视物理
内存的不足,如果不够就使用swap区进行交换。进程4的作用就是定期调查核心
的unix文件系统的管理信息与驱动程序的管理信息的一致性,使它的信息一直
是最新的。
1.3.3 /sbin/init
从kernel里面看,/sbin/init就是单一的进程空间里动作,与一般的
user program一样,提供user使用的unix文件系统的环境的服务。
核心启动后最初的动作就是/sbin/init。作用如下:
。确保file system的一致性,进行mount。
。之后,network的设定和各种daemon的启动。
。监视终端的login的配置和动作状态。这个动作完了后(logout),
修改和配置 login。
也就是说,如果没有它,用户就不能使用unix文件系统。还有就是,如果boot
progam参数指定-s的话,它就过渡到单一的用户模式。相对来说,普通的用户
模式也就是multi模式。为了使普通用户能够使用系统,/sbin/init的参考文件
主要在/etc目录里放着。主要就是运行/etc/rc文件对系统进行初始化。
/etc/rc文件的主要内容和作用如下:
。使系统能够使用swap区
上一页 1 2 3 4 5 6 7 8 9 10 11 12 1314 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 下一页
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 作者 入门 核心 文件 进行 设备 系统 调用 操作 v-node |
注册
个人空间
