linux内核情景分析{中断 系统调用 内存}
Linux的系统调用是通过中断来实现的,从用户态进入系统态。用户态和系统态有很清晰的区分,保证了安全。系统调用表是系统调用的跳转表。使用寄存器传递参数,而不是栈,因为用户态是无法访问系统栈的。地址错误是通过页面异常来处理的。
Linux内核并不支持真正意义上的线程,
LinuxThreads
是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程
id
,在进程调度、信号处理、
IO
等方面享有与普通进程一样的能力。由于异步信号是内核以进程为单位分发的,而
LinuxThreads
的每个线程对内核来说都是一个进程,且没有实现
"
线程组
"
,因此,某些语义不符合
POSIX
标准,比如没有实现向进程中所有线程发送信号,
README
对此作了说明。在
LinuxThreads
中,管理线程的栈和用户线程的栈是分离的,管理线程在进程堆中通过
malloc()
分配一个
THREAD_MANAGER_STACK_SIZE
字节的区域作为自己的运行栈。
"
一对一
"
模型的好处之一是线程的调度由核心完成了,而其他诸如线程取消、线程间的同步等工作,都是在核外线程库中完成的。管理线程与其他线程之间通过一对
"
管理管道(
manager_pipe[2]
)
"
来通讯。当核内既支持进程也支持线程时,就可以实现线程
-
进程的
"
多对多
"
模型,即一个进程的某个线程由核内调度,而同时它也可以作为用户级线程池的调度 者,选择合适的用户级线程在其空间中运行。这就是前面提到的
"
混合
"
线程模型,既可满足多处理机系统的需要,也可以最大限度的减小调度开销。绝大多数商业 操作系统(如
Digital Unix
、
Solaris
、
Irix
)都采用的这种能够完全实现
POSIX1003.1c
标准的线程模型。在核外实现的线程又可以分为
"
一对一
"
、
"
多对 一
"
两种模型,前者用一个核心进程(也许是轻量进程)对应一个线程,将线程调度等同于进程调度,交给核心完成,而后者则完全在核外实现多线程,调度也在用 户态完成。后者就是前面提到的单纯的用户级线程模型的实现方式,显然,这种核外的线程调度器实际上只需要完成线程运行栈的切换,调度开销非常小,但同时因 为核心信号(无论是同步的还是异步的)都是以进程为单位的,因而无法定位到线程,所以这种实现方式不能用于多处理器系统,而这个需求正变得越来越大,
相关文档:
telnet与ssh只是基于字符界面的远程控制,如果想要对linux服务器时行桌面的远程控制的话,我们可以安
装vnc-server服务来实现
1. 查看Vnc安装版本。
ps aux|grep Xvnc
2.设置VNC桌面
2.1
我们要为有权可以登录的用户设置登录桌面,修改配置文件/etc/sysconfig/vncservers :
VNCSERVERS="2:username"
VNCSERVERARGS ......
3. 指针与数组的比较
不同点:
数组:要么在惊天存储区域被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命周期内保持不变,只有数组的内容可以改变。
指针:可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用 ......
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 ......
0.Introduction
一说起操作系统, 我们的脑海马上就会闪出Windows, 据说Windows已经被安装到了1.5亿台计算机上.
然而在这里我还要提到另一种操作系统, 据估计这种类型的操作系统已经被安装到了全球30亿到40亿台家用电子产品中.
如果普及程度按照机器数量来计的话, 它的普及程度竟然是Windows的数十倍. 这款操作系统叫做TR ......