进程与线程

来源:互联网 发布:合肥瑶海公园知乎 编辑:程序博客网 时间:2024/05/22 12:36

进程表现为单一程序的执行过程,而线程表现为在运行某一程序的某一进程内,独立并发地执行关联。

任何两个单独的进程都拥有它们自己的独立地址空间,尽管他们有时利用共享内在来共用虚拟内在中的某些内容。同一进程的两个线程共享相同的地址空间,而不是相似的地址空间。因为线程都在同一地址空间运行,一旦某一线程对虚拟空间做任何改变,其它线程会马上发现。

线程可以做为进程的对象来实现或者可以作为一个完全独立的实体。不能是内核中实现,线程只有在内核提供的时钟中断帮助下,通过应用程序或者程序库才能实现

linux中,线程不过是一个能与其父进程共享相同地址空间的新进程。进程和线程的区别在于通过系统调用clone创建线程。由fork创建的新进程拥有它自己全新的进程关联环境。而clone创建的新进程则有它自己的标识符但允许共享其父进程的数据结构。

 

代码允许共享数据,但不允许并行访问。

时钟中断并不会导致进程的重新调试,只是请求稍后执行重新调试,任何输入的中断都不会影响非中断内核代码的执行顺序。

Linux2.0内核是第一个支持对称多处理机硬件的内核。进程与线程可以在各个处理器上并行运行。为保护内核的非抢占式同步要求,必须在内核中对SMP的实现加以限制:同一时间只允许一个处理器执行内核模式的代码。SMP使用自旋锁实现上述限制。自旋锁不会引起计算限制任务之类的问题,但是频繁使用内核的任务将严重地成为系统瓶颈。

目前信号处理、中断和一些I/O程序使用多重锁从而允许多处理器同时运行内核代码。

 

 

原创粉丝点击