linux是多线程还是多进程

linux是多线程还是多进程,第1张

进程:可执行程序是存储在磁盘设备上的由代码和数据按某种格式组织的静态实体,而进程是可被调度的代码的动态运行。在Linux系统中,每个进程都有各自的生命周期。在一个进程的生命周期中,都有各自的运行环境以及所需的资源,这些信息都记录在各自的进程控制块中,以便系统对这些进程进行有效的管理,进程控制块的结构如下图所示:

每个进程都有各自独立的虚拟地址空间,空间的大小与所基于的硬件体系结构有关。虚拟空间中各区代表的意义,代码段存储指令序列和只读数据,多个进程实例可共享代码段。数据段用来存放全局变量和静态变量。堆区域用于程序的动态内存管理,new或者malloc申请的内存就位于堆中。栈用来存放进程运行过程中的局部变量,函数返回地址,参数和进程上下文环境。

线程:引入进程是为了解决程序并发执行的问题,而引入线程是为了减少程序并发所带来的时间和空间的开销,线程是比进程更小的单位,一个进程至少有一个线程,线程是 *** 作系统进行调度的基本单位,线程基本上不占用系统资源,线程与其他同属一个进程的线程共享该进程所占有的资源。

linux是个系统,支持各种服务,服务可以开启多进程,进程可以开启多线程

一般linux系统上,使用fork来启动多进程。

以实际代码解答

#include<unistd.h>

#include<stdio.h>

int main(int argc, char ** argv )

{

int pid = fork()

if (pid <0)

{

printf("error!")

}

else if( pid == 0 )

{

printf("This is the child process!")//此处就是子进程执行

}

else{

printf("This is the parent process! child process id = %d", pid)//此处是父进程.

}

return 0

}

fork 函数的特点就是一次调用,两次返回。并且返回给子进程和父进程的返回值不同,对于子进程返回为0,对于父进程返回为子进程的PID号

系统调用fork后进程就分叉了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8321407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存