Linux到底有没有线程之我见
最近开始转向Linux开发,需要用到多线程。上网一查,有的人说Linux没有线程只有进程,有的人说Linux当然有线程,没有线程pthread库是干吗的?NPTL又是干嘛用?
个人觉得,要看从哪个角度来看这个问题。对于一般应用软件开发人员的角度来看,既然能用pthread库来创建线程,以及可以处理线程间的通信,当然可以认为在Linux中线程肯定是存在的。
从目前Linux内核实现的角度来看,Linux当前应该还是采用的一对一模型,创建一个用户态空间的线程,在内核中会通过一个轻量级的进程来管理,线程调度相当于进程调度。当前Linux内核中,无论是创建一个线程还是一个进程都是会调用clone()系统调用,只不过是参数不同,创建线程的话clone()的参数是(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND),其中CLONE_VM也指定了核心态空间中,此轻量级进程(即线程)和父进程共享地址空间,因此这个线程才可以访问父进程的地址空间。
因此,Linux和Windows的线程虽然实现不一样,但是应该可以大胆的说Linux是存在线程的,只是Linux的实现方式和Windows的不一样。至于说Linux的线程就是轻量级进程那只是从核心态空间的层面来看。
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
原帖见http://www.inthirties.com/thread-685-1-1.html
1、什么裸设备?字符设备?块设备?
裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。
字符设备:对字符设备的读写不需要通过OS的buffer ......
原文地址:http://www.xxlinux.com/linux/article/development/embed/20080227/14047.html
Linux和uClinux
Linux正逐渐地应用于嵌入式设备,uClinux正是在这种氛围下产生的。uClinux就是Micro-Control-Linux,它也是一个 ......
debian lenny , my favorite
a. vim /etc/sysctl.conf:
modify net.ipv4.ip_forward = 1
b. flush route table:
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
c. open NAT services:
&nb ......
所谓进程就是程序执行时的一个实例. 它是现代操作系统中一个很重要的抽象,我们从进程的生命周期:创建,执行,消亡来分析一下Linux上的进程管理实现.
一:前言
进程管理结构;
在内核中,每一个进程对应一个task.就是以前所讲的PCB.它的结构如下(include/linux/sched.h):
struct task_struct {
  ......