- 浏览: 154102 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
[b]Linux下进程和线程的创建都是通过clone实现的. clone函数功能强大,带了众多参数, clone可以让你有选择性的继承父进程的资源,你可以选择想vfork一样和父进程 共享一个虚存空间,从而创造的是线程,你也可以不和父进程共享,你甚至可以选 择创造出来的进程和父进程不再是父子关系,而是 兄弟关系[/b]
pthread_create是基于clone实现的, 创建出来的其实是进程, 但这些进程与父进程共享很多东西,
共享的东西都不用复制给子进程, 从而节省很多开销, 因此,这些子进程也叫轻量级进程(light-weight process)
在linux中线程就是轻量级的进程
fork后, 子进程复制哪些东西
一句话总结, 就是所有 writeable 的东西都会复制.包括:
堆,栈, 数据段, 未初始化数据段, 打开的文件描述符,
信号安装过的handler, 共享库, ipc(共享内存,消息队列,信号量)
注意未决信号不会继承过来, 新进程会重置它的未决信号链
子进程和父进程共享哪些东西
一句话总结, 就是所有 read-only 的东西都不用复制, 父子进程共享, 包括:
正文段和字符串常量
哪些东西, 子进程不会从父进程继承
进程id, 各种锁(内存锁,文件锁), 定时器, 未决信号
在操作系统中。一个用户级的线程如果对应一个系统级线程,就可以充分利用linux多核的特性。
但是在早期的linux版本中,linux用户级进程的多个线程对应一个系统级的进程,不能充分利用操作系统的特性!
发表评论
-
简单的linux -c http-client
2013-10-23 15:35 4731#include<stdio.h> #includ ... -
linux进程cpu资源分配命令nice,renice,taskset
2013-09-04 14:03 1165nice,renice 指定进程运行的优先级 taskset ... -
c 专家编程
2013-08-13 17:06 693总结: -2> int * a = NUL ... -
Linux中线程与CPU核的绑定
2013-08-09 15:15 2130最近在对项目进行性能 ... -
建议编译的时候加警告 atof
2013-08-07 20:46 712#include <stdlib.h> ... -
feodra 17 安装 chrome
2013-08-04 01:35 7691: 下载:http://www.google.cn/chro ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 913Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
select,epoll,poll比较
2013-07-28 17:13 688select,poll,epoll简介 se ... -
gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数
2013-07-22 22:45 910我们用gcc编译程序时,可能会用到“-I”(大写i),“-L” ... -
Linux下如何将进程绑定在特定的CPU上运行
2013-07-22 10:52 990Linux下如何将进程绑定在特定的CPU上运行? 以root用 ... -
linux运维常用命令
2013-07-13 20:40 891推荐一个实用命令:awk '{x+=$2} END {prin ... -
linux 进程通信方式
2013-07-07 20:46 622# 管道( pipe ):管道是一种半双工的通信方式,数据只能 ... -
判断两个一个链表是否存在循环(C专家编程中的问题)
2013-06-24 15:35 916判断两个一个链表是否存在循环(C专家编程中的问题) #incl ... -
atoi源码
2013-05-14 19:32 1262原文: http://blog.csdn.net/eroswa ... -
为重负网络优化 Nginx 和 Node.js
2013-05-13 01:12 1010原文:http://linux.cn/forum.php?mo ... -
c语言特殊字符串复制
2013-05-06 01:59 8712.strcpy和memcpy主要有以下3方面的区别。 2.1 ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1176《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
CentOS升级Python到2.7版本
2013-04-23 15:24 945[root@localhost ~] python -V ... -
Linux多线程同步的几种方式
2013-04-22 22:49 778Linux多线程同步的几种方式 线程的最大特点是资 ... -
防止pause和alrm产生竞争
2013-04-08 22:51 8371 #include<stdio.h> 2 ...
相关推荐
Linux进程、线程和调度是操作系统领域中的重要概念,涉及到程序执行、资源管理和并发控制等核心问题。在Linux操作系统中,进程和线程是进行并发操作的基本单位,而调度则是操作系统控制进程和线程执行的方式。下面将...
在讲解Linux进程、线程和调度的时候,我们首先需要了解几个核心概念: 1. **进程和线程**:进程是程序的一次执行,拥有自己的地址空间、文件句柄、系统资源等。线程是进程中的一个执行单元,共享进程的大部分资源,...
在Linux中,进程和线程的创建并无本质区别,都是通过`do_fork()`系统调用来实现。然而,它们在资源的共享程度上有所不同,这一点主要体现在`clone()`系统调用的`flags`参数上。 线程的创建通常会使用`clone()`函数...
在Linux内核中,并没有专门的线程调度算法或者数据结构来区分线程和进程。每一个进程或线程,在内核中都是通过一个task_struct结构来表示的,这是进程描述符,包含了进程的状态、优先级、指向地址空间等重要信息。...
通过学习本章,读者将掌握 Linux 中线程的基本概念、线程的创建和使用、线程属性的设置、多线程程序的编写、同步与互斥问题的处理等。 九、Linux 线程概述 Linux 线程是进程内独立的一条运行路线,处理器调度的...
在Linux环境下,线程作为轻量级进程(lightweight process)的一种实现,是操作系统调度的最小单位,相较于进程,线程具有更低的资源消耗和更快的创建速度,以及更简便的线程间通信能力。在同一个进程中,线程共享...
然而,随着对线程模型的需求增加,尤其是对于SMP系统的支持,Linux内核后续版本引入了NPTL(Native Posix Thread Library),它提供了一个更接近POSIX标准的线程实现,包括更高效的线程调度和信号处理机制。...
内核线程则允许跨进程的线程调度,更好地利用多处理器系统。 多线程编程涉及到的关键点包括: 1. **线程创建**:通常使用`pthread_create()`函数创建新线程,指定线程函数和参数。 2. **线程属性设置**:可以设置...
Linux内核对待进程、线程和内核线程采取平等的原则,即使用唯一的数据结构task_struct来表示它们,并使用相同的调度算法对这三者进行调度。 在用户态函数库中,创建进程和创建线程调用了不同的函数,分别为fork()和...
Linux进程管理是 Linux 操作系统中一个非常重要的概念,它控制着系统中的进程资源分配和调度。本章节将从 Linux 进程概念、进程控制块 task_struct 结构、Linux 进程的创建、Linux 进程调度等方面进行详细介绍。 ...
`clone()`系统调用是Linux中创建线程的关键,它允许创建一个新的进程,同时共享父进程的资源。在系统调用的实现中,如示例代码所示,会处理新的栈空间分配和进程上下文切换。 总的来说,Linux系统的线程技术通过...
当使用`pthread_create`创建线程时,实际上是通过`clone()`系统调用完成的,设置特定的标志位(如`CLONE_VM`、`CLONE_FS`等)来实现资源共享和独立调度。 #### 总结 本文详细介绍了Linux操作系统中关于进程、内存与...
本文详细介绍了Linux线程启动的相关概念和技术细节,包括进程控制表、进程状态、多任务流程、用户进程与内核线程的区别、内核线程的创建与管理、信号处理以及同步机制等方面的内容。通过理解这些核心概念,可以帮助...
线程是操作系统调度的基本单位,相比于进程,线程的创建和销毁更快,上下文切换的开销更小,因为它们共享同一进程的内存空间和资源。 Linux线程概述: 1. **线程定义**:线程是进程内的一个执行实体,是处理器调度...
从【部分内容】中提供的信息来看,虽然文字因为OCR技术原因出现了一定程度的混乱,我们可以从中识别出与Linux进程相关的一些技术术语,并对它们进行解读和讲解。 1. IO(输入/输出):在进程管理中,IO是一个至关...
除了pthread库,Linux还提供了其他线程相关的系统调用,如`clone()`、`fork()`和`exec()`等,这些调用可以用来创建进程和线程,但它们通常比pthread库更底层,使用起来也更为复杂。 在进行Linux线程编程时,需要...
2. 创建线程:使用`pthread_create()`函数,传入线程属性、启动函数和参数,由内核调用`__clone()`创建新线程。 3. 执行线程:新线程的执行始于`pthread_start_thread()`,并在函数返回后调用`pthread_exit()`释放...
线程的创建和管理是通过线程库和内核的紧密协作来完成的,涉及到诸如线程管理器pthread-manager-thread、初始线程pthread-initial-thread以及线程请求处理pthread-manager-request等组件。 线程与进程的关系: 在...