Linux内核结构与进程管理.pptx_第1页
Linux内核结构与进程管理.pptx_第2页
Linux内核结构与进程管理.pptx_第3页
Linux内核结构与进程管理.pptx_第4页
Linux内核结构与进程管理.pptx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、和网络硬件的访问。5. 进程间通信( I P C)子系统为进程与进程之间的通信提供了一些机制。 这些子系统虽然实现的功能相对独立,但存在着较强的依赖性(调用依赖模块中相应的函数),所以说linux内核是单块结构(monolithic)的,而windows体系结构是微内核(microkernel)的。 Linux启动流程从BIOS到KERNEL MBRKERNELKERNEL自解压内核初始化内核启动(start_kernel函数,在linux内核源代码树的/usr/src/linux/init/main.c中) 2. 内核启动:创建1进程并执行,由它创建若干内核线程(kernel thread)

3、,然后装入并执行程序/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根据运行级别启动相

4、关的服务(一些后台进程),实现不同的功能。 RUNLEVEL:06 0:halt, 1:单用户,2:多用户,3:多用户并启动NFS服务 4:保留,5:运行xdm(X window)以图形界面方式登录 6:reboot Linux中用户登陆流程linux进程的四要素程序PCB 地址空间 系统堆栈空间 PCB:进程创建时内核为其分配的一个核心数据结构,进程自身不能直接存取。系统堆栈空间:进程运行在核心态时使用的堆栈,和PCB连在一起,共8KB,其中PCB约占1000字节,系统堆栈空间约占7200字节。2.2 内核中linux进程个数有最大值限制(4092)。但2.4以后,系统中的进程个数受限于系统

5、的物理内存数,即限定所有进程的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_resched policy即进程的类别,分SCHED_FIFO, SCHED_RR, SCHED_OTHER三种,前两种为实时进程,后一种为非实时进程IPC信息:如定义对某些信号的处理

6、等 家族信息:父进程、兄弟进程、子进程信息 时钟和定时信息 文件系统 存储管理 进程的创建进程创建:fork , clone, vfork父子进程共享资源的形式a.不共享(fork时缺省)b.部分共享c.完全共享(线程)#include int myvar=0;void main() int pid; pid = fork(); /system call if (pid 0 ) /error occurred printf(“fork failed.”); exit(-1); /system call else if (pid = 0 ) /child process printf(“child process executingn”); myvar = 1; else /parent process wait(); /system call, wait for children completion printf(“child complete.”); myvar +; printf(“father,myvar=%d”,myvar); exit(0); fork实例提示语为方便使用本课件,可在课后下载使用PowerPoint软件进行修改调整For the convenience of

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论