linux知识(一) 程序、进程与线程
linux知识(一) 程序、进程与线程
- 程序
- 进程
- 程序如何变成进程?
- 线程
- 线程与进程
- fork和创建新线程的区别
- 优点
程序
程序:程序是已编译好的二进制文件,存储在磁盘中,不占用系统资源
程序包括:
- RO段:只读代码段(code段.text段)和常量段(RO data段/.constdata段)
- RW段:(.data段)已初始化成非0的变量段(全局变量和静态变量)
- ZI段:(.bss段)未初始化的为0的变量段(全局变量和静态变量)
进程
进程: 进程是资源分配的最小单位,占用系统资源
进程主要包括:
- RO段:只读代码段(code段.text段)和常量段(RO data段/.constdata段)
- RW段:(.data段)已初始化成非0的变量段(全局变量和静态变量)
- ZI段:(.bss段)未初始化的为0的变量段(全局变量和静态变量)
- 栈:存储局部、临时变量,函数调用时,存储的函数返回指针,用于控制函数的调用和返回。程序开始时自动分配内存,结束时自动释放内存
- 堆:存储动态内存空间,需要程序员手工分配,手动释放。
程序如何变成进程?
当我们启动程序的时候,由DMA模块将程序从磁盘中拷贝到内存中,同时启动DMA中断,让cpu来加载进程
线程
线程:线程是资源调度的最小单位
线程与进程
假设linux系统中有三个进程同时运行,cpu分配每个进程时间片分别是3s、2s、4s.进程A中有两个线程,一个线程对应一个cpu的核心,进程A就会在分配的2s的时间片中用两个线程来处理事情,提高处理的效率。
fork和创建新线程的区别
- 当一个进程执行一个fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有它自己的变量和自己的pid。新进程运行时是独立的。
- 在进程里面创建一个新线程的时候,新的执行线程拥有自己的堆栈,当共享了全局变量、文件描述符、信号处理器和当前的子目录状态
优点
- 创建一个新线程的代价要比创建一个新进 程小得多
- 与进程之间的切换相比,线程之间的切换 需要操作系统做的工作至少在理论上要少很多
- 线程占用的资源要比进程少很多
linux知识(一) 程序、进程与线程相关推荐
- Linux系统编程之进程与线程控制原语对比
Linux系统编程之进程与线程控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_can ...
- 【Linux 内核】进程管理 ( 进程与操作系统 | 进程与程序 | 进程与线程 | 虚拟地址空间 )
文章目录 一.进程与操作系统 二.进程与程序 三.进程与线程 四.虚拟地址空间 一.进程与操作系统 操作系统与硬件的关系 : 操作系统 使用 硬件 提供的资源 , 如 CPU , 内存 , 磁盘 , ...
- linux+kill+进程和线程,什么是程序,进程和线程?三者之间有何关系?
进程 进程与线程的历史 进程与线程之间的关系 重点 进程 和 线程的概念 进程和程序关系 cpu在执行程序时什么叫进程 swap 内存的缺页异常 大的异常 小的异常 内存映射mmap 内存泄露 tas ...
- 【Linux系统编程】进程和线程的区别
00. 目录 文章目录 00. 目录 01. 进程和线程区别 02. 附录 01. 进程和线程区别 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需 ...
- linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题
#include #include pthread_t thread; void *fun(void *arg) { printf("hell0n"); pthread_exit( ...
- linux查看进程中的线程名,linux 怎么样查看一个进程的线程
一.linux系统支持的最大进程数 限制1:既然系统使用pid_t表示进程号,那么最大进程数不能超过pid_t类型的最大值吧 限制2:使用命令ulimit -u查看系统中限制的最大进程数,我的机器上是 ...
- Linux系统编程--守护进程、线程
守护进程 Daemon(精灵)进程,是 Linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或 等待处理某些发生的事件.一般采用以 d 结尾的名字. Linux 后台的一些系统服务 ...
- Linux 中统计一个进程的线程数
如果你想看到 Linux 中每个进程的线程数,有以下几种方法可以做到这一点. 方法一: /proc proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数. /p ...
- Linux 查看应用程序进程/端口号/内存/CPU使用情况
1.查看运行的程序的pid(线程号) {appName}:应用程序名称 ps aux | grep {appName} 2.根据线程号查询正在运行的程序的port(端口号) {pid}:程序的线程号 ...
- linux 多进程 同步,Linux内核同步,进程,线程同步
包括我自己在内,很多人对内核,进程,线程同步都不是很清楚,下面稍微总结一下: 内核同步: 主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区保护.主要有一下几种方式: 1. Mu ...
最新文章
- 基于springboot实现疫情管理系统
- Linux如何实现断点续传文件功能?
- linux设备驱动归纳总结(六):2.分享中断号【转】
- 收集经常使用的.net开源项目
- 百度地图得到两地点(通过经纬度)的距离、 通过经纬度获取详细地址
- 458. 可怜的小猪
- 分布式理论-CAP定理
- [Delphi]ListView基本用法大全
- mac 遇到的奇怪问题?
- 结对编程后传之做汉堡
- ADOQuery的locktype属性
- 几种常用设计模式的简单示例
- 播放量子计算机的声音,首次实现:用声音纠缠了两个量子比特!
- 反激式开关电源电路测试记录(二)
- 机器翻译技术的含义、发展和应用
- 一分钟解决“仅限中国大陆地区播放” (转)
- 解决Truffle搭建项目环境时候出现ExtendableError: Could not find suitable configuration file.
- eos安装区块链开发环境
- ios13 无法传参_iOS13.1 正式版来了,加入了降频功能
- 【软件测试-7】 自动化测试selenium篇(一)
热门文章
- android-铃声的设置与播放
- cocos2dx 3.x 蒙板 遮罩 点击圆功能
- iOS正则表达式(亲测,持续更新)
- 为什么django+mongo在windows上session能够获取到,同样的程序在linux上就会报session的变量错误,keyerror?...
- Daily Scrum 11.18
- [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...
- java线程统一_Java线程结果不一致
- java空格键_Java KeyPressed-如果其他键也太旧,则无法检测是否按下了空格键
- java三大特性 继承_java基础(二)-----java的三大特性之继承
- android adb杀死服务,Android app是如何杀掉的