Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24274
  • 博文数量: 3
  • 博客积分: 117
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-26 20:57
文章分类

全部博文(3)

文章存档

2012年(3)

分类: LINUX

2012-03-03 16:34:41

Linux操作系统分为几个模块,mm(内存管理),SCHED(进程调度),IPC(进程间通信),VFS(虚拟文件系统),NET(网络接口)。可以这样理解,用户需要使用硬件资源,那么资源宽泛点讲就是需要就是内存了,这个时候系统就需要内存管理;那又是谁在用这个内存呢,当然是进程了,不可能系统中只有一个进程,于是需要进程调度;多个进程下就涉及了进程间通信了;用户又不想接触到进程的概念,则上层封装vfs;计算机需要进行网络通信,系统就需要提供网络接口。

 

 

 

   Linux启动流程:BIOSKERNEL

   1.MBRMAST BOOT RECORDàKERNELàKERNEL自解压—>内核初始化—>内核启动(start_kernel函数,在linux内核源代码树的/usr/src/linux/init/main.c

   2.内核启动:创建1#进程并执行,由它创建若干个内核线程(kernel thread//收集内存,把进程的代码扔到磁盘等,然后装入并执行程序/sbin/init(变成一个用户进程)。此后,init根据etc/inittab配置文件来执行相应的脚本进行系统初始化,如设置键盘、字体、装载模块,设置网络等

   对于Redhat

   /etc/rc.d/rc.sysinit

   /etc/rc.d/rc$RUNLEVEL

   /etc/rc.d/rc.local

   /sbin/mingetty(等待用户登录)

 

 

 

进程调度

进程调度时机:a.用户进程自愿放弃cpu,如执行sleep()

              b.系统调用中,需要等待时,直接调用schedule()进行调度

              c.系统调用、中断或异常处理完成后,返回到用户空间前,若当前进程的pcb中的need_resched=1,则发生调度。//从内核态到用户态时会判断need_resched=1

调度策略:动态优先级

阅读(1823) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~