易截截图软件、单文件、免安装、纯绿色、仅160KB

linux内核情景分析{中断 系统调用 内存}


Linux的系统调用是通过中断来实现的,从用户态进入系统态。用户态和系统态有很清晰的区分,保证了安全。系统调用表是系统调用的跳转表。使用寄存器传递参数,而不是栈,因为用户态是无法访问系统栈的。地址错误是通过页面异常来处理的。
Linux内核并不支持真正意义上的线程,
LinuxThreads
是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程
id
,在进程调度、信号处理、
IO
等方面享有与普通进程一样的能力。由于异步信号是内核以进程为单位分发的,而
LinuxThreads
的每个线程对内核来说都是一个进程,且没有实现
"
线程组
"
,因此,某些语义不符合
POSIX
标准,比如没有实现向进程中所有线程发送信号,
README
对此作了说明。在
LinuxThreads
中,管理线程的栈和用户线程的栈是分离的,管理线程在进程堆中通过
malloc()
分配一个
THREAD_MANAGER_STACK_SIZE
字节的区域作为自己的运行栈。
"
一对一
"
模型的好处之一是线程的调度由核心完成了,而其他诸如线程取消、线程间的同步等工作,都是在核外线程库中完成的。管理线程与其他线程之间通过一对
"
管理管道(
manager_pipe[2]

"
来通讯。当核内既支持进程也支持线程时,就可以实现线程
-
进程的
"
多对多
"
模型,即一个进程的某个线程由核内调度,而同时它也可以作为用户级线程池的调度 者,选择合适的用户级线程在其空间中运行。这就是前面提到的
"
混合
"
线程模型,既可满足多处理机系统的需要,也可以最大限度的减小调度开销。绝大多数商业 操作系统(如
Digital Unix

Solaris

Irix
)都采用的这种能够完全实现
POSIX1003.1c
标准的线程模型。在核外实现的线程又可以分为
"
一对一
"

"
多对 一
"
两种模型,前者用一个核心进程(也许是轻量进程)对应一个线程,将线程调度等同于进程调度,交给核心完成,而后者则完全在核外实现多线程,调度也在用 户态完成。后者就是前面提到的单纯的用户级线程模型的实现方式,显然,这种核外的线程调度器实际上只需要完成线程运行栈的切换,调度开销非常小,但同时因 为核心信号(无论是同步的还是异步的)都是以进程为单位的,因而无法定位到线程,所以这种实现方式不能用于多处理器系统,而这个需求正变得越来越大,


相关文档:

Linux内核简介


Linux 内核简介
现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。
图 2. GNU/Linux 操作系统的基本体系结构
 
系统调用接口(SCI)的方法
实际上,体系结构可能并不像图 2 所示的一样清晰。例如,处理系统调用(从用户空间切换到内核空 ......

Linux应用程序安装与管理

目标:
        了解linux应用程序的组成部分
        掌握使用RPM工具管理软件包的方法
        掌握应用程序源代码包的编译安装方法
        掌握图形界面下应用程序管理工具的使用
1、L ......

Linux配置Apache服务器全攻略

  Linux配置Apache服务器全攻略 收藏
一,使用源代码安装
  (1) 获得源代码
  # lynx http://www.apache.org/dist/httpd/httpd-2_0_NN.tar.gz
  NN表示当前所用的版本号。
  (2) 解压缩
  # gzip -d httpd-2_0_NN.tar.gz
  # tar xvf httpd-2_0_NN.tar 
  (3) 配置.
  # ./configure --pre ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号