Linux中clone原型轻松掌握线程创建方法 (linux中clone原型)

在Linux系统中,线程的创建是一个非常常见的操作。线程的创建过程可以通过许多不同的方式实现,其中最为常见的方式就是使用clone函数。这个函数在C语言中的语法如下:

pid_t clone(int (*fn)(void *), void *child_stack,

int flags, void *arg, …

/* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ );

那么,clone函数究竟是什么呢?它的原型又是什么?如何使用它来创建线程呢?下面,我们就来剖析一下这些问题。

一、clone函数是什么?

clone函数是Linux中用于创建线程和进程的系统调用函数之一。它是在2.0版本内核中引入的,它的功能相当于fork和pthread_create两个函数的结合体。但是,相比这两个函数,clone函数具有更为灵活的特性。它可以实现在一个进程内创建新的线程或者进程,还可以指定共享或独立的模式,而且还可以创建线程或进程时传递参数。

由于Linux中的进程和线程实际上没有明显的区分,因此,clone函数可以用来实现线程的创建。同时,clone函数的特点也使得它在一些特定的场景下更加适用。比如说,为了在一个进程内创建多个线程,就可以使用clone函数来实现。由于clone函数可以指定创建子线程的栈空间,因此,它还具有更为灵活的特性。

二、clone函数的原型是什么?

clone函数的原型如下:

pid_t clone(int (*fn)(void *), void *child_stack,

int flags, void *arg, …

/* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ );

其中,各个参数的含义如下:

1、fn:指向子线程执行的函数入口地址的一个指针。这个函数需要返回一个整数值,如果值为0,则代表线程创建成功,如果值为其他,则代表线程创建失败。

2、child_stack:指向子线程的栈空间的指针。

3、flags:指定线程的创建方式。它可以取以下几个值:

CLONE_VM:子线程使用与父线程相同的地址空间。

CLONE_FS:子线程使用与父线程相同的文件系统信息。

CLONE_FILES:子线程使用与父线程相同的文件描述符。

CLONE_SIGHAND:子线程使用与父线程相同的信号处理程序。

CLONE_THREAD:这个参数很重要,如果这个参数为0,则代表创建的是一个新进程,如果这个参数不为0,则代表创建的是一个新线程。

4、arg:传递给子线程的参数。

5、ptid:用于存储子线程的进程ID。

6、tls:用于存储线程局部存储(TLS)的用户描述符。

7、ctid:用于存储子线程的PID。

三、如何使用clone函数来创建线程?

在了解了clone函数的基本原型之后,我们来看一下如何使用它来创建线程。下面是创建线程的一个例子:

1、先定义一个子线程的执行函数,例如:

void *thread_func(void *arg)

{

int i;

for (i = 0; i

{

printf(“This is thread %d\n”, i);

sleep(1);

}

pthread_exit(NULL);

}

这个函数是一个简单的循环,每次循环都会输出一句话,并等待一秒钟继续执行。它会通过pthread_exit函数退出线程。

2、然后,我们在主线程中调用clone函数,例如:

int mn()

{

int *status;

void *stack;

stack = malloc(STACK_SIZE);

int pid = clone(thread_func, stack+STACK_SIZE,

CLONE_THREAD|CLONE_SIGHAND|CLONE_VM, 0);

if (pid == -1) {

printf(“Error: thread creation fled\n”);

return 1;

}

pid = wtpid(pid, &status, __WCLONE);

if (pid > 0) {

printf(“Thread exited with status %d\n”, *status);

free(stack);

return 0;

}

}

在这个例子中,我们通过malloc函数来为子线程分配栈空间。然后,我们调用了clone函数,将该函数指定为子线程的执行函数,指定栈空间地址为stack+STACK_SIZE,指定参数为0,指定标志CLONE_THREAD|CLONE_SIGHAND|CLONE_VM。如果线程创建成功,clone函数会返回子线程的PID号。主线程等待子线程退出,并打印出子线程的退出状态。

通过上面例子的演示,我们可以清晰的了解到如何使用clone函数创建线程。clone函数的功能非常强大,可以实现很多复杂的操作,因此,在线程的创建过程中,我们可以选择合适的方法来完成任务。

相关问题拓展阅读:

Linux到底是一个什么样的操作系统

单的说,Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)

的操作系统(OS),在原代颂旁码级上兼容绝大部分Unix标准(指的是IEEE

POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性

较好的功能

强大而稳定的操作系统.它可以运行在x86 PC,Sun Sparc,Digital Alpha

,680×0,PowerPC, MIPS等平台上,可

以说Linux是目前运行硬件平台最多的操作系统. Linux更大的特点在于

它是GNU(Gnu’s Not Unix—-有点分形与混沌的意味—-无限自包含,

简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承

“自由的思想,开罩仿放的源码”的原则,成千上万的专家/爱好者通过Internet

在不断地完善并维护它,可以说Linux是计算机爱好者自己的操作系统.

追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大

学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理

多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小

的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了

自认为狂妄的想法—-写一个比Minix更好的Minix,于是开始写了

一些硬件的设备驱动程序,一个小的文件系统,……,这样0.0.1

版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,

甚至不能运行,你必须在有Minix的机器上编译以后才能玩.这时候

Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10

月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash

(the GNU Bourne Again Shell—-一种用户与操作系统内核通讯的软件)

和gcc(GNU C 编译器).从一开始,Linus就决定自由扩散Linux,包括原代码,

他在comp.os.minix新闻讨论组里发布Linux 0.0.2时写到:

“Do you pine for nice days of Minix-1.1, when mem were men

and wrote their own device drivers? Are you without a nice

project and just dying to cut your teeth on a OS you can

try to modify for your needs? Are you finding it frustrsting

when everything works on Minix? No more all-nighters to

get a nifty program working? Then this post might be just

for you.

“As I mentioned a month ago, I’m working on a free version

of a Minix-lookalike for AT-386 computers. It has finally

reached the stage where it’s even usable(though may not be

depending on what you want),and I am willing to put out

the sources for wider distribution. It is just version

0.0.2 … but I’ve successfully run bash,gcc,gnu-make,

gnu-sed,compress,etc.under it.”

随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的

内核开发,Linux倾向于成为一个黑客的系统—-直到今天,在Linux社区

里内核的开发被认为是真正的编程.由于一批高野闷橡水平黑客的加入,使Linux

发展迅猛,到1993年底94年初,Linux 1.0终于诞生了! Linux 1.0已经是一

个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,

在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,

不过自从2.1.xx系列的内核Linux开始走高端的路子—-硬件的发展太快了,

但是Linux不会失去它的本色.Linux具有良好的兼容性和可移植性,大约在

1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU—Digital

Alpha(至少目前主频是更高的).所以不要总把Linux与低档硬件平台联系

到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥

出来而已,Linux必将从低端应用横扫到高端应用!

在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共

版权许可证(GPL).此举大大加强了GNU和Linux,几乎所有应用的GNU

库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一

个根基,我现在也搞不清楚到底是GNU Linux呢还是基于Linux的GNU.

🙂 更重要的是遵循公共版权许可证,在继承自由软件的精神的前

提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形

式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发

商业软件.从此Linux又开始了一次飞跃,出现了很多的Linux发行版

,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且

还在增加,注意你不能说”Redhat Linux””Suse Linux””Slackware

Linux”等等,Linux主要指操作系统内核,对所有发行版内核原代码

都是一样的(但集成的内核版本可能因发行时间不同而有所不同).

还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移

植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix

,Syase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的

加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计

算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希

望所在!!

Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十

分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等.

随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,

如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统.

…..常有新手问Linux能做什么,其实它不象那些中看不中用的操作

系统,不在于你用它能干什么,而在于你想干什么!

Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,

又如自由软件的精神……

.

参考资料:

简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要让兆枝用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。

Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。

Linux以它的高效性和灵活性著称。它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。

Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,一坦敏是它属于自由软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿对它使用,无约束地继续传播。另一个原因是,它具有Unix的全部功能,任何使用Unix操作系统或想要学习Unix操作系统的人都可以从Linux中获益。

由于Linux是一套具有Unix全部功能的免费操作系统,它在众多的软件中占有很大的优势,为广大的计算机爱好者提供了学习、探索以及修改计算机操作系统内核的机会。

操作系统是一台计算机必不可少的系统软件,是整个计算机系统的灵魂。一个操作系统是一个复杂的计算机程序集,它提供操作过程的协议或行为准则。没有操作系统,计算机就无法工作,就不能解释和执行用户输入的命令或运行简单的程序。大多数操作系统都是由一些主要的软件公司支持的商品化程序,用户只能有偿使用。如果用户购买了一个操作系统,他就必须满足供应商所要求的一切条件。因为操作系统是系统程序,用户不能擅自修改或试验操作系统的内核。这对于广大计算机爱好者来说无疑是一种束缚。

要想发挥计算机的作用,仅有操作系统还不够,用户还必须要有各种应用程序的支持。应用程序是用于处理某些工作(如字处理)的软件包,通常它也只能有偿使用。每个应用程序的软件包都为特定的操作系统和机器编写。使用者无权修改这些应用程序。使用Linux,可以将操作系统变成一种操作环境。

由于Linux是一套自由软件,用户可以无偿地得到它及其源代码,可以无偿地获得大量的应用程序,而且可以任意地修改和补充它们。这对用户学习、了解Unix操作系统的内核非常有益。 学习和使用Linux,能为用户节省一笔可观的资金。Linux是目前惟一可免费获得的、为PC机平台上的多个用户提供多任务、多进程功能的操作系统,这是人们要使用它的主要原因。就PC机平台而言,Linux提供了猜拿比其他任何操作系统都要强大的功能,Linux还可以使用户远离各种商品化软件提供者促销广告的诱惑,再也不用承受每过一段时间就升级之苦,因此,可以节省大量用于购买或升级应用程序的资金。

Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。这对Windows NT、Windows98、MS-DOS或OS/2等商品化操作系统来说是无法做到的。

Linux为广大用户提供了一个在家里学习和使用Unix操作系统的机会。尽管Linux是由计算机爱好者们开发的,但是它在很多方面上是相当稳定的,从而为用户学习和使用目前世界上更流行的Unix操作系统提供了廉价的机会。现在有许多CD-ROM供应商和软件公司(如RedHat和TurboLinux)支持Linux操作系统。Linux成为Unix系统在个人计算机上的一个代用品,并能用于替代那些较为昂贵的系统。因此,如果一个用户在公司上班的时候在Unix系统上编程,或者在工作中是一位Unix的系统管理员,他就可以在家里安装一套Unix的兼容系统,即Linux系统,在家中使用Linux就能够完成一些工作任务

Linux是一种计算机操作系统和它的内核的名字

开放原代码的操作系统…..

笔记本物理搏数机蔽指安装 Ubuntu 20.04 Linux 操作系统,全程实录宏银配

LINUX 容器是什么东西啊?有什么作用啊?

apache

Apache是世界使用排名之一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上更流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。

Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。

Apache web服务器软件拥有以下特性:

支持最新的HTTP/1.1通信协议

拥有简单而强有力的基于文件的配置过程

支持通用网关接口

支持基于IP和基于域名的虚拟主机

支持多种方式的HTTP认证

集成Perl处理模块

集成代理服务器模块

支持实时监视服务器状态和定制服务器日志

支持服务器端包含指令(SSI)

支持安全Socket层(SSL)

提供用户会话过程的跟踪

支持FastCGI

通过第三方模块可以支持Java Servlets

如果你准备选择Web服务器,毫无疑问Apache是你的更佳选择。

Apache有名的几个项目介绍

HTTP Server

这个在前面的段落介绍过了,Apache已经是他的代号了

ActiveMQ

免费开源由java编写符合JMS1.1标准的消息中间件。

另外,它也支持通过除java语言外的语言的使用

Ant

这个太出名了。标准的批处理工具。是一套基于java的程序打造工具

Commons

一些常用的工具类库,包括common-pool,dbcp,fileupload,Common-beans等。

Excalibur

它的主要产品是一个由java写成的,名字叫做Fortress(要塞) 的轻量级的可嵌入式反向控制容器。

iBATIS

并入的一个项目,是ORM的一个很流行的工具

Geronimo

是Apache软件基金会为了创造一个兼容j2ee的容器,而整理出来的一个新成果

Jakarta

许多Java子项目的集成,tomcat,ant等就是从这里孵化出去的。

James

是一套用java开发的邮件、新闻组、消息服务器。它使用的avalon组件框架。目前支持 TP, POP3 和 NNTP 很快也会支持 IMAP

Logging

基于java的可靠,快速,扩展性强的日志工具

Maven

是一套java开发的工程综合管理工具。它基于工程对象模型(POM)的理念

Portals

门户产品

Struts

一套通过servlets和jsp来搭建web应用的MVC框架

Tomcat

用量更大的免费的Java服务器

单的说,Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)

的操作系统(OS),在原代码级上兼容绝大部分Unix标准(指的是IEEE

POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性

较好的功能

强大而稳定的操作系统.它可以运行在x86 PC,Sun Sparc,Digital Alpha

,680×0,PowerPC, MIPS等平台上,可

以说Linux是目前运行硬件平台最多的操作系统. Linux更大的特点在于

它是GNU(Gnu’s Not Unix—-有点分形与混沌的意味—-无限自包含,

简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承

“自由的思想,开放的源码”的原则,成千上万的专家/爱好者通过Internet

在不断地完善并维护它,可以说Linux是计算机爱好者自己的操作系统.

追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大

学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理

多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小

的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了

自认为狂妄的想法—-写一个比Minix更好的Minix,于是开始写了

一些硬件的设备驱动程序,一个小的文件系统,……,这样0.0.1

版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,

甚至不能运行,你必须在有Minix的机器上编译以后才能玩.这时候

Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10

月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash

(the GNU Bourne Again Shell—-一种用户与操作系统内核通讯的软件)

和gcc(GNU C 编译器).从一开始,Linus就决定自由扩散Linux,包括原代码,

他在comp.os.minix新闻讨论组里发布Linux 0.0.2时写到:

“Do you pine for nice days of Minix-1.1, when mem were men

and wrote their own device drivers? Are you without a nice

project and just dying to cut your teeth on a OS you can

try to modify for your needs? Are you finding it frustrsting

when everything works on Minix? No more all-nighters to

get a nifty program working? Then this post might be just

for you.

“As I mentioned a month ago, I’m working on a free version

of a Minix-lookalike for AT-386 computers. It has finally

reached the stage where it’s even usable(though may not be

depending on what you want),and I am willing to put out

the sources for wider distribution. It is just version

0.0.2 … but I’ve successfully run bash,gcc,gnu-make,

gnu-sed,compress,etc.under it.”

随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的

内核开发,Linux倾向于成为一个黑客的系统—-直到今天,在Linux社区

里内核的开发被认为是真正的编程.由于一批高水平黑客的加入,使Linux

发展迅猛,到1993年底94年初,Linux 1.0终于诞生了! Linux 1.0已经是一

个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,

在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,

不过自从2.1.xx系列的内核Linux开始走高端的路子—-硬件的发展太快了,

但是Linux不会失去它的本色.Linux具有良好的兼容性和可移植性,大约在

1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU—Digital

Alpha(至少目前主频是更高的).所以不要总把Linux与低档硬件平台联系

到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥

出来而已,Linux必将从低端应用横扫到高端应用!

在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共

版权许可证(GPL).此举大大加强了GNU和Linux,几乎所有应用的GNU

库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一

个根基,我现在也搞不清楚到底是GNU Linux呢还是基于Linux的GNU.

🙂 更重要的是遵循公共版权许可证,在继承自由软件的精神的前

提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形

式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发

商业软件.从此Linux又开始了一次飞跃,出现了很多的Linux发行版

,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且

还在增加,注意你不能说”Redhat Linux””Suse Linux””Slackware

Linux”等等,Linux主要指操作系统内核,对所有发行版内核原代码

都是一样的(但集成的内核版本可能因发行时间不同而有所不同).

还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移

植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix

,Syase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的

加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计

算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希

望所在!!

Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十

分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等.

随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,

如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统.

…..常有新手问Linux能做什么,其实它不象那些中看不中用的操作

系统,不在于你用它能干什么,而在于你想干什么!

Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,

又如自由软件的精神……

.

参考资料:

单的说,Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)

的操作系统(OS),在原代码级上兼容绝大部分Unix标准(指的是IEEE

POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性

较好的功能

强大而稳定的操作系统.它可以运行在x86 PC,Sun Sparc,Digital Alpha

,680×0,PowerPC, MIPS等平台上,可

以说Linux是目前运行硬件平台最多的操作系统. Linux更大的特点在于

它是GNU(Gnu’s Not Unix—-有点分形与混沌的意味—-无限自包含,

简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承

“自由的思想,开放的源码”的原则,成千上万的专家/爱好者通过Internet

在不断地完善并维护它,可以说Linux是计算机爱好者自己的操作系统.

追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大

学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理

多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小

的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了

自认为狂妄的想法—-写一个比Minix更好的Minix,于是开始写了

一些硬件的设备驱动程序,一个小的文件系统,……,这样0.0.1

版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,

甚至不能运行,你必须在有Minix的机器上编译以后才能玩.这时候

Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10

月5号发布Linux 0.0.2版本,在这个版本中已经可以运行bash

(the GNU Bourne Again Shell—-一种用户与操作系统内核通讯的软件)

和gcc(GNU C 编译器).从一开始,Linus就决定自由扩散Linux,包括原代码,

他在comp.os.minix新闻讨论组里发布Linux 0.0.2时写到:

“Do you pine for nice days of Minix-1.1, when mem were men

and wrote their own device drivers? Are you without a nice

project and just dying to cut your teeth on a OS you can

try to modify for your needs? Are you finding it frustrsting

when everything works on Minix? No more all-nighters to

get a nifty program working? Then this post might be just

for you.

“As I mentioned a month ago, I’m working on a free version

of a Minix-lookalike for AT-386 computers. It has finally

reached the stage where it’s even usable(though may not be

depending on what you want),and I am willing to put out

the sources for wider distribution. It is just version

0.0.2 … but I’ve successfully run bash,gcc,gnu-make,

gnu-sed,compress,etc.under it.”

随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的

内核开发,Linux倾向于成为一个黑客的系统—-直到今天,在Linux社区

里内核的开发被认为是真正的编程.由于一批高水平黑客的加入,使Linux

发展迅猛,到1993年底94年初,Linux 1.0终于诞生了! Linux 1.0已经是一

个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,

在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,

不过自从2.1.xx系列的内核Linux开始走高端的路子—-硬件的发展太快了,

但是Linux不会失去它的本色.Linux具有良好的兼容性和可移植性,大约在

1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU—Digital

Alpha(至少目前主频是更高的).所以不要总把Linux与低档硬件平台联系

到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥

出来而已,Linux必将从低端应用横扫到高端应用!

在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共

版权许可证(GPL).此举大大加强了GNU和Linux,几乎所有应用的GNU

库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一

个根基,我现在也搞不清楚到底是GNU Linux呢还是基于Linux的GNU.

🙂 更重要的是遵循公共版权许可证,在继承自由软件的精神的前

提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形

式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发

商业软件.从此Linux又开始了一次飞跃,出现了很多的Linux发行版

,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且

还在增加,注意你不能说”Redhat Linux””Suse Linux””Slackware

Linux”等等,Linux主要指操作系统内核,对所有发行版内核原代码

都是一样的(但集成的内核版本可能因发行时间不同而有所不同).

还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移

植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix

,Syase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的

加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计

算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希

望所在!!

Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十

分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等.

随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,

如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统.

…..常有新手问Linux能做什么,其实它不象那些中看不中用的操作

系统,不在于你用它能干什么,而在于你想干什么!

Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,

又如自由软件的精神……

.

参考资料:

请参考

Linux容器是与系统其他部分隔离开的一系列进程。运行这些进程所需的所有文件都由另一个镜像提供,这意味着从开发到测试再到生产的整个过程中,Linux

容器都具有可移植性和一致性。因而,相对于依赖重复传统测试环境的开发渠道,容器的运行速度要快得多。容器比较普遍也易于使用,因此也成了 IT

安全方面的重要组成部分。

本视频介绍了Linux的基本概念和原理,特别是介绍了Linux发行版与Linux内核的关系。

Linux下怎么完成Git的配置

使用git 自从git-1.5.4 , ‘git-xyz’ 这种用法就不提倡了,而推荐 ‘git xyz’ 风格。 git 的后续段迅版本中将在 make install 时不再安装 ‘git-xyz’ 这些 hardlinks 。 当如果执行 git –exec-path 输出的目录中依然有 git-xyz 这些脚本,你还是可以把这个路径加到 PATH 环境变量中, 这样还能够使用 git-xyz 形式的脚本。 config我的一些简单的配置: $ git-config user.name “Jike Song” $ git-config user.email $ git-config core.editor vim $ git-config core.pager “less -N” $ git-config color.diff true // 显示 diff 时色彩高亮 $ git-config alias.co checkout // 给 git checkout 取个别名,这样只输入 git co 即可 $ git-config sendemail.tpserver /握兄此usr/bin/mtp 注意,这会在当前 repository 目录下的 .git/config 中写入配置信息。 如果 git-config 加了 –global 选项,配置信息就会写入到 ~/.gitconfig 文件中。 因为你可能用不同的身份参与不同的项目,而多个 项目都用 git 管理,所以建议不用 –global 配置。 $ git-val -l // 列出 git 变量 init —- $ git-init-db // 创建一个 .git/ 目录,初始化一个空的 git 仓库 //这个目录在git-clone时也会创建。也就是说clone时会自动初始化git //仓库里需要的东西 clone$ git-clone 是你想让这个仓库叫什么名字。 如果不指定,就会等尘闹同于目标仓库的名字。 注意,这种 git server 形式的 repository ,都有一个 filename.git 文件; 而对于 *.git 的操作,也可以 针对.git 所在的目录: $ mkdir tmp/ $ cd tmp/ $ git-clone ~/Sources/linux-2.6 或者通过 ssh : $ git-clone :/home/arc/Sources/linux-2.6 此时当前目录下有一个 .git/ 目录 . 以下我们都在 linux-2.6/ 下演示: 使用git 自从git-1.5.4 , ‘git-xyz’ 这种用法就不提倡了,而推荐 ‘git xyz’ 风格。 git 的后续版本中将在 make install 时不再安装 ‘git-xyz’ 这些 hardlinks 。 当如果执行 git –exec-path 输出的目录中依然有 git-xyz 这些脚本,你还是可linux中clone原型的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux中clone原型,Linux中clone原型轻松掌握线程创建方法,Linux到底是一个什么样的操作系统,LINUX 容器是什么东西啊?有什么作用啊?,Linux下怎么完成Git的配置的信息别忘了在本站进行查找喔。


数据运维技术 » Linux中clone原型轻松掌握线程创建方法 (linux中clone原型)