Linux内核结构与进程管理.ppt

上传人:b****1 文档编号:1380522 上传时间:2022-10-21 格式:PPT 页数:9 大小:319.50KB
下载 相关 举报
Linux内核结构与进程管理.ppt_第1页
第1页 / 共9页
Linux内核结构与进程管理.ppt_第2页
第2页 / 共9页
Linux内核结构与进程管理.ppt_第3页
第3页 / 共9页
Linux内核结构与进程管理.ppt_第4页
第4页 / 共9页
Linux内核结构与进程管理.ppt_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Linux内核结构与进程管理.ppt

《Linux内核结构与进程管理.ppt》由会员分享,可在线阅读,更多相关《Linux内核结构与进程管理.ppt(9页珍藏版)》请在冰豆网上搜索。

Linux内核结构与进程管理.ppt

Linux内核结构与进程管理,Linux系统结构,Linuxkernel:

开放源代码的linux操作系统内核,目前版本为2.6,Linux内核组成,1.进程调度程序(SCHED)负责控制进程访问CPU。

保证进程能够公平地访问CPU,同时保证内核可以准时执行一些必需的硬件操作。

2.内核管理程序(MM)使多个进程可以安全地共享机器的主存系统,并支持虚拟内存。

3.虚拟文件系统(VFS)。

通过提供一个所有设备的公共文件接口,VFS抽象了不同硬件设备的细节。

此外,VFS支持与其他操作系统兼容的不同的文件系统格式。

4.网络接口(NET)提供对许多建网标准和网络硬件的访问。

5.进程间通信(IPC)子系统为进程与进程之间的通信提供了一些机制。

这些子系统虽然实现的功能相对独立,但存在着较强的依赖性(调用依赖模块中相应的函数),所以说linux内核是单块结构(monolithic)的,而windows体系结构是微内核(microkernel)的。

Linux启动流程,从BIOS到KERNELMBRKERNELKERNEL自解压内核初始化内核启动(start_kernel函数,在linux内核源代码树的/usr/src/linux/init/main.c中)2.内核启动:

创建1进程并执行,由它创建若干内核线程(kernelthread),然后装入并执行程序/sbin/init(变成一个用户进程)。

此后,init根据/etc/inittab配置文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等对于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:

060:

halt,1:

单用户,2:

多用户,3:

多用户并启动NFS服务4:

保留,5:

运行xdm(Xwindow)以图形界面方式登录6:

reboot,Linux中用户登陆流程,linux进程的四要素,程序PCB地址空间系统堆栈空间PCB:

进程创建时内核为其分配的一个核心数据结构,进程自身不能直接存取。

系统堆栈空间:

进程运行在核心态时使用的堆栈,和PCB连在一起,共8KB,其中PCB约占1000字节,系统堆栈空间约占7200字节。

2.2内核中linux进程个数有最大值限制(4092)。

但2.4以后,系统中的进程个数受限于系统的物理内存数,即限定所有进程的PCB及系统堆栈(8K)占用的空间1/2的物理内存总和。

例64M内存:

进程数64M/2/8K=4K,PCB中的重要信息,身份信息:

pid,uid,gid,euid,egid等;状态信息:

running,interruptible,non-interruptible,stopped,zombie调度信息:

policy,priority,rt_priorty,need_reschedpolicy即进程的类别,分SCHED_FIFO,SCHED_RR,SCHED_OTHER三种,前两种为实时进程,后一种为非实时进程IPC信息:

如定义对某些信号的处理等家族信息:

父进程、兄弟进程、子进程信息时钟和定时信息文件系统存储管理,进程的创建,进程创建:

fork,clone,vfork父子进程共享资源的形式a.不共享(fork时缺省)b.部分共享c.完全共享(线程),#includeintmyvar=0;voidmain()intpid;pid=fork();/systemcallif(pid0)/erroroccurredprintf(“forkfailed.”);exit(-1);/systemcallelseif(pid=0)/childprocessprintf(“childprocessexecutingn”);myvar=1;else/parentprocesswait();/systemcall,waitforchildrencompletionprintf(“childcomplete.”);myvar+;printf(“father,myvar=%d”,myvar);exit(0);,fork实例,进程调度,调度时机a.用户进程自愿放弃CPU,如执行sleep()系统调用;b.系统调用中,需要等待时,直接调用schedule()进行调度;c.系统调用、中断或异常处理完成后,返回到用户空间前,若当前进程的PCB中的need_resched=1,则发生调度;调度策略:

基于进程的权值(weight,即动态优先级)实时进程:

weight=1000+rt_priority(1000)分时进程:

weight=counter+20nice(1000)其中:

rt_priority:

是实时进程的优先级counter:

进程还剩余的时间片值nice:

进程优先级的调整值(均在进程的PCB中标识),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1