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

每个进程都有各自独立的虚拟地址空间,空间的大小与所基于的硬件体系结构有关。虚拟空间中各区代表的意义,代码段存储指令序列和只读数据,多个进程实例可共享代码段。数据段用来存放全局变量和静态变量。堆区域用于程序的动态内存管理,new或者malloc申请的内存就位于堆中。栈用来存放进程运行过程中的局部变量,函数返回地址,参数和进程上下文环境。
线程:引入进程是为了解决程序并发执行的问题,而引入线程是为了减少程序并发所带来的时间和空间的开销,线程是比进程更小的单位,一个进程至少有一个线程,线程是操作系统进行调度的基本单位,线程基本上不占用系统资源,线程与其他同属一个进程的线程共享该进程所占有的资源。
应用编程接口(相关头文件和参数类型可通过man命令查看,关于api使用的细节和编程中要注意的事项各书籍上都有,再次不赘述)
进程环境
getuid 获得当前进程实际用户ID
geteuid 获得当前进程有效用户ID
getgid 获得当前进程实际用户组ID
getegid 获得当前进程有效用户组ID
getpid 获得当前进程ID
getppid 获得父进程ID
getpgrp 获得进程组ID
setpgid 设置进程组
getsid 获得进程会话ID
setsid 设置进程会话ID
getenv 获取环境表量
putenv 设置环境表量
进程地址空间
malloc 申请内存
free 释放内存
brk 设置堆区域大小
进程的创建与终止
fork 创建子进程
exit 终止进程
atexit 注册终止处理程序
加载可执行二进制映像
exec
进程的同步控制
wait 暂停执行直到一个子进程结束
waitpid 等待指定子进程结束
线程
1. pthread_equal //判断线程是否相同
2. pthread_self //返回调用线程的ID
3. pthread_create //创建线程
4. pthread_exit //退出线程
5. pthread_join //启动线程
6. pthread_cancel //取消线程
7. pthread_cleanup_push
8. pthread_cleanup_pop
9. pthread_detach
10. pthread_mutex_init
11. pthread_mutex_destroy
总结:这一部分,间短介绍了linux下多进程和多线程的相关概念,并介绍了编程时使用的一些api,多进程编程和多线程编程的实例放在下一部分介绍。
Linux 多进程多线程相关概念的更多相关文章
- Linux多进程多线程例子
看了apue3,关于进程线程和进程间通信写了一个例子,方便自己理解相关知识,备忘. #include <stdlib.h> #include <stdio.h> #includ ...
- 进程 | 线程 | 当Linux多线程遭遇Linux多进程
背景 本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[<Unix环境高级编程>第3版] 本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分 ...
- Linux多进程之间的文件锁
之前对于文件的操作通常在一个进程中完成,最近需要在两个进程中对同一个文件进行操作.故想到了文件锁. Linux下可以使用flock()函数对文件进行加锁解锁等操作.简单介绍下flock()函数: 表头 ...
- [转帖]Windows和Linux对决(多进程多线程)
Windows和Linux对决(多进程多线程) https://blog.csdn.net/world_2015/article/details/44920467 太长了 还没看完.. 还是没太理解好 ...
- 转载自~浮云比翼:Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥)
Step by Step:Linux C多线程编程入门(基本API及多线程的同步与互斥) 介绍:什么是线程,线程的优点是什么 线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可 ...
- gdb常用命令及使用gdb调试多进程多线程程序
一.常用普通调试命令 1.简单介绍GDB 介绍: gdb是Linux环境下的代码调试⼯具.使⽤:需要在源代码⽣成的时候加上 -g 选项.开始使⽤: gdb binFile退出: ctrl + d 或 ...
- Python 多进程 多线程 协程 I/O多路复用
引言 在学习Python多进程.多线程之前,先脑补一下如下场景: 说有这么一道题:小红烧水需要10分钟,拖地需要5分钟,洗菜需要5分钟,如果一样一样去干,就是简单的加法,全部做完,需要20分钟:但是, ...
- [转]Linux 的多线程编程的高效开发经验
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文中我们 ...
- Linux 的多线程编程的高效开发经验(转)
http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...
随机推荐
- Matrix Again(最大费用最大流)
Matrix Again Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) Tota ...
- AngularJS学习篇(十三)
AngularJS HTML DOM ng-disabled 指令 ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性. <!DOCTYPE html> ...
- 关于缓存问题:js清除缓存
css并行加载,js串行加载(会阻塞页面) 清除缓存的问题: 1.一般手动清除,浏览器缓存 2.js代码清除缓存(原理:增加了一个参数,且该参数是一个随机数,每次都不一样,所以每次的请求参数都不一样, ...
- replace 使用函数作为第二参数
var sToChange = “The sky is red.”;var reRed = /red/;var sResultText = sToChange.replace(reRed, funct ...
- JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 《项目架构那点儿事》——浅析web层struts2的构建
[前言]所谓快速开发,实质上为了节省项目的开支成本,减少程序员的开发时 间,固然就形成了种种二次封装的框架,也就是造轮子,然后我们的程序就按照这个轮子去画瓢,这里我就把公司这几次开发系统的框架源码贴出 ...
- Breadth-first search 算法(Swift版)
在讲解Breadth-first search 算法之前,我们先简单介绍两种数据类型Graph和Queue. Graph 这就是一个图,它由两部分组成: 节点, 使用圆圈表示的部分 边, 使用线表示的 ...
- javaScript函数提升及作用域
代码片段: var a = 1; function foo() { console.log(a); //输出为undefined if (!a) { var a = 2; } alert(a); }; ...
- 在ASP.NET开发中一些单词的标准缩写
有些词可能共用一些缩写.带星号的缩写或词来源于PeopleSoft标准. The following standard word abbreviations should be used in nam ...
- 爬虫入门 手写一个Java爬虫
本文内容 涞源于 罗刚 老师的 书籍 << 自己动手写网络爬虫一书 >> ; 本文将介绍 1: 网络爬虫的是做什么的? 2: 手动写一个简单的网络爬虫; 1: 网络爬虫是做 ...