进程与线程

原创 2015年11月18日 20:46:20

进程与线程

进程是用开飞陪系统资源的,进程包含多个线程,一个进程的启动包含主线程的启动

了解概念

cpu好比一个工厂,每个车间是一个进程,车间里面的工人是线程

一个进程的内存空间是共享的,每个线程都可以使用这些共享的内存,特别的:某些内存空间,当一个线程使用时,其他线程必须等待它结束,才能使用这块内存,这就需要加“互斥锁”(Mutex),防止多个线程同时读写某一块内存区域;某些内存空间,可以提供给固定数目的线程使用,这时候需要“信号量”(Semaphore),用来保证多个线程不会互相冲突,Mutex 是 Semaphore 的 一种特殊情况。

操作系统的设计,可以归结为三点

  1. 以多进程形式,允许多个任务同时执行;
  2. 以多线程形式,允许单个任务分成不同的部分运行;
  3. 提供协调机制,一方面阻止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源;

命令相当于进程 进程间可以进行通讯(通讯机制)
实现进程之间的通讯方法:管道通讯 、socket套节字、 信号 、消息队列

进程(process)

终端下对进程的操作:(需要包含头文件unistd.h)(简称few)

  1. fork 创建一个新的子进程(通过系统调用流程,由内核来完成创建) 返回进程ID
    (返回0代表子进程,返回1代表父进程,返回值 <0 代表出现错误)
  2. getpid : 获取当前进程的id
  3. gitppid : 获取父进程的id
  4. exec : (把进程中的文本段进行替换)在进程中调用别的程序或命令
  5. wait 收尸 进程结束后,父进程要对子进程收尸,保证资源不会被浪费掉,一般父进程会晚于子进程挂掉 (结束状态为0表示正常退出)
  6. sleep(100); :不让进程结束

进程与进程之间的内存空间是彼此独立的,父进程与子进程刚开始创建的时候公用数据,但是一旦创建了,就会彼此独立,子进程是被父进程创建的。

防御式编程,先把错误的情况写出来

!狭义的定义:进程就是一段程序的执行过程

广义的定义:具有独立功能的程序对某个数据集合的一次运行活动,是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元

主要两点:

第一、进程是一个实体 包括文本区域、数据区域、堆栈

  1. 文本区域(text region):存储处理器执行的代码
  2. 数据区域(data region):存储变量和动态分配的内存
  3. 堆栈区域(stack region):存储着活动过程中调用的指令和本地变量

第二、进程是一个“执行中的程序”

进程的缺点

  1. 不同的进程之间共享状态信息困难 (需要显式的使用)
  2. 进程之间通讯比较慢

线程

这里写图片描述

这里写图片描述

线程是一个独立的执行单元

cpu通过优先级和时间片对多个线程进行控制,有一些调度算法,来切换线程。

线程中没有父子关系

线程之间的切换,需要开销时间,但是很小。

版权声明:本文为博主原创文章,未经博主允许不得转载。

进程和线程关系及区别

1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立...
  • yaosiming2011
  • yaosiming2011
  • 2015年03月15日 21:06
  • 219062

Android进程和线程的区别

恩恩,今天参加阿里的面试,被问到Android中进程和线程的区别,着实把我伤脑了,表示平时开发的时候只知道线程,并没有去仔细关注过进程,所以下来特地去查了以下资料,先说说线程: (1)在Androi...
  • qq_17475155
  • qq_17475155
  • 2016年03月15日 20:02
  • 4855

进程与线程的区别一个比较形象解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是...
  • lycyl
  • lycyl
  • 2016年04月18日 11:40
  • 1530

秒懂什么是进程And线程

学习.net 时遇到了两个新词汇:进程和线程。书上的太深奥,就查了查资料,整合下,希望对大家有帮助。        比喻:用手去抓苹果,很显然一根手指是不行,你需要至少两根手指才能抓起一个苹果。   ...
  • mengdonghui123456
  • mengdonghui123456
  • 2015年02月01日 11:49
  • 1178

进程和线程的区别

操作系统面试题 1、进程和线程的区别? 解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元           (2)同一个进程中可以包括多个线程,并且线程共...
  • zhou753099943
  • zhou753099943
  • 2016年06月27日 20:53
  • 5913

线程和进程的区别是什么?

 这是一道出现频率极高的面试题,考察基本概念。 进程可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。一个进程无法直接访问另一个进程的变...
  • jiangzeyun
  • jiangzeyun
  • 2015年04月11日 15:05
  • 2758

线程与进程的区别以及通过实例的详细分析

定义: 一、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。 二、线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独...
  • Atlas12345
  • Atlas12345
  • 2015年05月22日 11:08
  • 1657

C# 进程与线程 操作

using System.Diagnostics;//进程的命名空间               //利用进程可以打开一些应用程序             Process.Start("calc");...
  • yanhuatangtang
  • yanhuatangtang
  • 2017年05月29日 15:48
  • 389

进程与线程,线程的两种创建方式

程序:一条一条的按照语法规则排列起来的指令序列,告诉计算机完成一连串的操作,程序默认的是保存在硬盘上的; 当程序开始执行的时候,OS(操作系统)要把程序装入内存,然后CPU从内存中一条一条的读取并执行...
  • cheng_feng_xiao_zhan
  • cheng_feng_xiao_zhan
  • 2017年02月18日 13:16
  • 405

Linux进程与线程的区别

进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,...
  • laviolette
  • laviolette
  • 2016年05月26日 14:19
  • 11120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进程与线程
举报原因:
原因补充:

(最多只允许输入30个字)