《Linux内核结构与进程管理》由会员分享,可在线阅读,更多相关《Linux内核结构与进程管理(9页珍藏版)》请在金锄头文库上搜索。
1、Linux内核结构与进程管理nLinux系统结构Linux kernel: 开放源代码的linux操作系统内核,目前版本为2.6揣食腰埋汁缉燎戌戳灾勾施旱缺厅鞍馏坑贬雪泡跪律颁遏伴诸滨乐折炯怠Linux内核结构与进程管理Linux内核结构与进程管理Linux内核组成1. 进程调度程序( S C H E D)负责控制进程访问C P U。保证进程能够公平地访问C P U,同时保证内核可以准时执行一些必需的硬件操作。2. 内核管理程序( M M)使多个进程可以安全地共享机器的主存系统,并支持虚拟内存。3. 虚拟文件系统( V F S)。通过提供一个所有设备的公共文件接口, V F S抽象了不同硬件设
2、备的细节。此外, V F S支持与其他操作系统兼容的不同的文件系统格式。4. 网络接口( N E T)提供对许多建网标准和网络硬件的访问。5. 进程间通信( I P C)子系统为进程与进程之间的通信提供了一些机制。 这些子系统虽然实现的功能相对独立,但存在着较强的依赖性(调用依赖模块中相应的函数)这些子系统虽然实现的功能相对独立,但存在着较强的依赖性(调用依赖模块中相应的函数),所以说,所以说linuxlinux内核是内核是单块结构(单块结构(monolithicmonolithic)的,而的,而windowswindows体系结构是体系结构是微内核微内核(microkernel)(micro
3、kernel)的。的。 蝉氏父垂曹升麓鸥梢崎衫储紊造究酵赖瞩化削噎搔伍逮冶急铺佩宪完骄早Linux内核结构与进程管理Linux内核结构与进程管理Linux启动流程1.从BIOS到KERNEL MBRKERNELKERNEL自解压内核初始化内核启动(start_kernel函数,在linux内核源代码树的/usr/src/linux/init/main.c中)2. 内核启动:创建1进程并执行,由它创建若干内核线程(kernel thread),然后装入并执行程序/sbin/init(变成一个用户进程)。此后,init根据/etc/inittab配置文件来执行相应的脚本进行系统初始化,如设置键盘、
4、字体,装载模块,设置网络等 对于Redhat来说,执行的顺序为:/etc/rc.d/rc.sysinit#由init执行的第一个脚本/etc/rc.d/rc$RUNLEVEL#$RUNLEVEL为缺省的运行模式/etc/rc.d/rc.local#运行模式2、3、5时会运行的脚本/sbin/mingetty(或getty)#等待用户登录 /etc/inittab中指定了系统的运行级别(RUNLEVEL),init根据运行级别启动相关的服务(一些后台进程),实现不同的功能。 RUNLEVEL:06 0:halt, 1:单用户,2:多用户,3:多用户并启动NFS服务 4:保留,5:运行xdm(Xw
5、indow)以图形界面方式登录 6:reboot 急欠馆滞屋韵甩湖鉴毡隘曾硕崔俐钦隔钨夫偷革丽皮变挎缕垮童狠脾偶辫Linux内核结构与进程管理Linux内核结构与进程管理Linux中用户登陆流程擦混嫁兴枫植汀拒钙横懦断囤接兼锁线业味梨铡膏卧拦圾鞋奥格逢赦脊凳Linux内核结构与进程管理Linux内核结构与进程管理linux进程的四要素进程的四要素n程序nPCB n地址空间 n系统堆栈空间 PCB:进程创建时内核为其分配的一个核心数据结构,进程自身不能直接存取。系统堆栈空间:进程运行在核心态时使用的堆栈,和PCB连在一起,共8KB,其中PCB约占1000字节,系统堆栈空间约占7200字节。2.2
6、内核中linux进程个数有最大值限制(4092)。但2.4以后,系统中的进程个数受限于系统的物理内存数,即限定所有进程的PCB及系统堆栈(8K)占用的空间1/2的物理内存总和。例64M内存:进程数64M/2/8K=4K 诞稍焙躺娘柏蛛深孵邦辗粉盐邓投透酶途贤唆敦涵兴遮宅了豢掺闸擞倒撕Linux内核结构与进程管理Linux内核结构与进程管理PCB中的重要信息n身份信息:pid,uid,gid,euid,egid等; n状态信息:running,interruptible,non-interruptible,stopped,zombie n调度信息:policy,priority,rt_prior
7、ty,need_resched npolicy即进程的类别,分SCHED_FIFO, SCHED_RR, SCHED_OTHER三种,前两种为实时进程,后一种为非实时进程nIPC信息:如定义对某些信号的处理等 n家族信息:父进程、兄弟进程、子进程信息 n时钟和定时信息 n文件系统 n存储管理 埃咖弹尹仔鸵窒疼珐好灾陨痢饼清拎议舒盗船诧迪肉俞玻玫伴乃迭僧呆抗Linux内核结构与进程管理Linux内核结构与进程管理进程的创建n进程创建:fork , clone, vforkn父子进程共享资源的形式na.不共享(fork时缺省)nb.部分共享nc.完全共享(线程)磋炽步变腑拭枝衅乓内虾装否娟袭亡誉饱
8、痉戚充巩梳贼方鬃通蔑霄某辗乍Linux内核结构与进程管理Linux内核结构与进程管理#include #include int myvar=0;int myvar=0;void main()void main() int pid; int pid; pid = fork(); /system call pid = fork(); /system call if (pid 0 ) /error occurred if (pid 1000)分时进程: weight = counter + 20 nice (1000) 其中:rt_priority:是实时进程的优先级 counter:进程还剩余的时间片值 nice:进程优先级的调整值 (均在进程的PCB中标识)硬件时钟(晶振,CMOS电路)定时器8253中断控制器8259CPU掇捡池箕莎柑没宫靠变掣肪合皆谩脏长迢锄翼毯邢核谓晾虏乞啮漫蓉烘嫩Linux内核结构与进程管理Linux内核结构与进程管理