linux中的进程和线程
应用程序:可以被操作系统执行的一组指令和参数的集合,是静态的,并存储在磁盘空间中;
进程:在操作系统中在运行程序后,处于运行状态的程序,是应用程序的一个执行过程,同时也是操作系统分配内存,cpu等系统资源的基本单位;
线程:进程中可以共享进程资源的一个执行单位;
一个应用程序可以对应多个进程,一个进程中可以有多个执行线程;
系统操作进程的方式主要是:创建进程,终止进程,已经控制进程间的通信和同步;
进程的创建过程:
1. 复制父进程的环境配置;
2. 在内核中建立进程结构;
3. 将创建好的进程结构放入到进程列表中;
4. 系统分配资源给此进程;
5. 复制父进程的内存映射信息;
6. 管理文件描述符和连接点;
7. 通知父进程;
进程的终止方式:
1. 从main函数返回;
2. 调用exit或者_exit函数;
3. 调用abort函数;
4. 被信号终止;
进程在终止时,系统会释放进程拥有的资源,包括内存,内核结构等。
进程间的通信方式:
1. 管道:内核为两个进程建立的通信通道,一端只能写数据,一个端只能读数据,完成通信;
2. 共享内存:多个进程共享一段内存,并对内存进行操作来完成通信;
3. 消息队列:内核中的一个链表,发送方进程将消息发送到内核中,内核将消息放入链表,等待接收方进程发送请求消息,收到请求消息后,内核将消息从链表上取下,交给接收方,完成通信,此过长完全是异步的;
4. 信号量:一个共享的数值,主要用于进程间的同步和对共享资源的保护;
进程和线程:
线程是进程的一个执行单位,属于进程的一部分;
进程是操作系统分配资源的基本单位,系统只为线程分配cpu资源,其他系统资源只能共享进程的系统资源,线程是执行的基本单位;
系统通过进程控制表PCB调度线程,并通过线程控制表TCB对线程进行调度;
linux中的进程和线程的更多相关文章
- Linux中的进程与线程
介绍了Linux下fork()创建进程以及使用pthread_create()创建线程的方法 1. 基于进程的斐波那契数列 在下面的代码中,由子进程进行斐波那契数列的输出,父进程要等待子进程输出完毕, ...
- Java中的进程与线程(总结篇)
详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...
- liunx中的进程与线程
1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的. Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程 ...
- Linux中查看进程的多线程pstree, ps -L
Linux中查看进程的多线程 在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢? 本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:在我的 ...
- Linux下的进程与线程(二)—— 信号
Linux进程之间的通信: 本文主要讨论信号问题. 在Linux下的进程与线程(一)中提到,调度器可以用中断的方式调度进程. 然而,进程是怎么知道自己需要被调度了呢?是内核通过向进程发送信号,进程才得 ...
- windows中的进程和线程
今天咱们就聊聊windows中的进程和线程 2016-09-30 在讨论windows下的进程和线程时,我们先回顾下通用操作系统的进程和线程.之所以称之为通用是因为一贯的本科或者其他教材都是这么说的: ...
- Java中的进程和线程
Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- 如何在 Linux 中查看进程占用的端口号【转】
对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识, ...
随机推荐
- MongoDB学习笔记六:进阶指南
[数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db. ...
- golang: 根据json生成go源文件
https://github.com/ChimeraCoder/gojson $ git clone https://github.com/ChimeraCoder/gojson.git$ cd go ...
- powerdesinger
www.sap.com solutions>data management>powerdesinger http://www.sap.com/product/data-mgmt/power ...
- shell脚本,防止sshd被暴力破解
1.tail -f /var/log/secure 你会发现有很多的登录 错误.这说明你的机器正在被暴力破解. 2.新建 一个 shell脚 本 保存退出. 3.加入定时crontab -e 我这里每 ...
- 调试新技能get - powershell
1. win+r -> powershell_ise 2. debug-process 3. type processname....WITHOUT ".exe"
- .NET设计规范————命名规范
NET设计规范:约定.惯用法与模式———命名规范 前言: 最近在看<.NET设计规范:约定.惯用法与模式>一书,主要还是讲.NET的设计规范,以前对这一块也不是特别在意, ...
- [delphi]向ImageList中加入png类型的资源图片
向ImageList中动态加入Png图片有些失真,经过多方查询,发现需要将Bitmap的AlphaFormat指定一下. //向ImageList中加入png类型的资源图片 procedure Add ...
- css 文本显示点点点
今天有这个需求,百度获取到这个效果,记录下来. text-overflow :ellipsis; //让截断的文字显示为点点.还有一个值是clip意思是截断不显示点点 white-space : no ...
- https 双向证书
一:服务器端 1.首先需要配置站点的SSl证书 打开Nginx安装目录下conf目录中的nginx.conf文件 找到 # HTTPS server # #server { ...
- ruby发送邮件方法
#encoding:utf-8require 'mail'def send_email sum,fail,case_path,name,receive smtp = { :address => ...