Linux内核结构与进程管理

Linux内核结构与进程管理

ID:44673274

大小:287.00 KB

页数:9页

时间:2019-10-24

Linux内核结构与进程管理_第1页
Linux内核结构与进程管理_第2页
Linux内核结构与进程管理_第3页
Linux内核结构与进程管理_第4页
Linux内核结构与进程管理_第5页
资源描述:

《Linux内核结构与进程管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux内核结构与进程管理Linux系统结构Linuxkernel:开放源代码的linux操作系统内核,目前版本为2.6Linux内核组成1.进程调度程序(SCHED)负责控制进程访问CPU。保证进程能够公平地访问CPU,同时保证内核可以准时执行一些必需的硬件操作。2.内核管理程序(MM)使多个进程可以安全地共享机器的主存系统,并支持虚拟内存。3.虚拟文件系统(VFS)。通过提供一个所有设备的公共文件接口,VFS抽象了不同硬件设备的细节。此外,VFS支持与其他操作系统兼容的不同的文件系统格式。4.网络接口(NE

2、T)提供对许多建网标准和网络硬件的访问。5.进程间通信(IPC)子系统为进程与进程之间的通信提供了一些机制。这些子系统虽然实现的功能相对独立,但存在着较强的依赖性(调用依赖模块中相应的函数),所以说linux内核是单块结构(monolithic)的,而windows体系结构是微内核(microkernel)的。Linux启动流程从BIOS到KERNELMBR->KERNEL->KERNEL自解压->内核初始化->内核启动(start_kernel函数,在linux内核源代码树的/usr/src/linux/ini

3、t/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.lo

4、cal#运行模式2、3、5时会运行的脚本/sbin/mingetty(或getty)#等待用户登录/etc/inittab中指定了系统的运行级别(RUNLEVEL),init根据运行级别启动相关的服务(一些后台进程),实现不同的功能。RUNLEVEL:0-60:halt,1:单用户,2:多用户,3:多用户并启动NFS服务4:保留,5:运行xdm(Xwindow)以图形界面方式登录6:rebootLinux中用户登陆流程linux进程的四要素程序PCB地址空间系统堆栈空间PCB:进程创建时内核为其分配的一个核心数据

5、结构,进程自身不能直接存取。系统堆栈空间:进程运行在核心态时使用的堆栈,和PCB连在一起,共8KB,其中PCB约占1000字节,系统堆栈空间约占7200字节。2.2内核中linux进程个数有最大值限制(4092)。但2.4以后,系统中的进程个数受限于系统的物理内存数,即限定所有进程的PCB及系统堆栈(8K)占用的空间≤1/2的物理内存总和。例64M内存:进程数≤64M/2/8K=4KPCB中的重要信息身份信息:pid,uid,gid,euid,egid等;状态信息:running,interruptible,no

6、n-interruptible,stopped,zombie调度信息:policy,priority,rt_priorty,need_reschedpolicy即进程的类别,分SCHED_FIFO,SCHED_RR,SCHED_OTHER三种,前两种为实时进程,后一种为非实时进程IPC信息:如定义对某些信号的处理等家族信息:父进程、兄弟进程、子进程信息时钟和定时信息文件系统存储管理进程的创建进程创建:fork,clone,vfork父子进程共享资源的形式a.不共享(fork时缺省)b.部分共享c.完全共享(线程)

7、#include intmyvar=0; voidmain() { intpid; pid=fork();//systemcall if(pid<0){//erroroccurred printf(“forkfailed.”); exit(-1);//systemcall } elseif(pid==0){//childprocess printf(“childprocessexecuting…”);myvar=1; } else{//parentprocess wait();//syst

8、emcall,waitforchildrencompletion printf(“childcomplete.”); myvar++;printf(“father,myvar=%d”,myvar);exit(0); } }fork实例进程调度调度时机a.用户进程自愿放弃CPU,如执行sleep()系统调用;b.系统调用中,需要等待时,直接调用schedule()进行调度;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。