您现在的位置是:主页 > 数据库技术 > 数据库技术

UNIX中的进程及线程模型是怎样的

IDCBT2022-01-11服务器技术人已围观

简介这篇文章将为大家详细讲解有关UNIX中的进程及线程模型是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 UNIX的传统

这篇文章将为大家详细讲解有关UNIX中的进程及线程模型是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

UNIX的传统倾向于将一个任务交给一个进程全权受理,但是一个任务内部也不仅仅是一个执行绪,比如一个公司的所有成员,大家都在做同一件事,每个人却只 负责一部分,粒度减小之后,所有的事情便可以同时进行,不管怎样,大家还都共享着所有的资源。因此就出现了线程。线程其实就是共享资源的不同的执行绪。线程的语义和朴素的UNIX进程是不同的。

0.原始进程模型-著名的fork调用

朴素的UNIX进程依托于著名的fork调用, 就是这个fork调用让UNIX进程和Windows进程截然不同,也正是因为这个fork调用,使二者没有兼容的余地。这个fork调用的根源有久远的 历史。早在UNIX之前的大型操作系统中,它就存在了,UNIX刚出现的1969年,其实并未引入fork调用,当时之有两个固定的进程连接两个终端。当 fork调用引入后,进程的数量便快速增加了,注意,此时暂且还没有exec调用!
       在理解fork背后的哲学之前,先看一下什么是fork。fork就是叉子,由同一个叉子柄逐渐分叉,变成一把叉子,也类似那种道生一,一生二,二生三, 三生万物。我们看到,有了fork,理论上可以生成无数的进程,它们都可以向上回溯到相同的根!为何UNIX会采用这个模型?我们首先要理解,在还没有 “可执行文件”概念的时候,进程意味着什么。
       试想程序最初是怎么录入到计算机的。今天它们理所当然地存在于磁盘上,作为“可执行文件”已经深入人心,可是在1950-1960年代初,程序都是现场录 入的,通过原始的纸带或者携带很重的磁带,文件系统还没有概念,整个纸带,磁带上的内容就是计算机要执行的程序,执行完了,想执行另一个程序,就要换介 质...人们写一个程序当然是为了做一件不止做一次的事,因此如果可以有多个“进程”同时执行纸带/磁带上的程序,系统的吞吐率将大大提高,注意,多个进 程执行的是同一个程序!这是最朴素的分时系统进程模型。fork在伯克利分时系统应运而生!fork提供了复制当前执行流的手段,fork出来的所有子进 程可以方便地执行相同的代码。
       这个著名的fork调用深深影响了人们如何解释分时系统!自然而然在1970年代初引入了朴素的UNIX,说fork调用著名,就是因为它跟随 UNIX(以及类UNIX,比如Linux)至今,直接影响了UNIX的进程模型。现在总结UNIX为何采用fork调用来生成进程。我们知道从0到1很 难,从1到2相对容易,也比较难,从2到3...就很简单了。这就是道生一,...三生万物!1969年的UNIX中已经有了两个进程,使用fork可以 超级简单地实现二生三,三生万物,于是,也许是一种巧合,早先的伯克利分时系统的fork正好就在那里,便被托马斯引入了UNIX。

标签:

很赞哦! ()

本栏推荐