奔跑中的IT男

只有在雨中,才会拼命奔跑!

进程与线程

进程与线程

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

了解概念

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通过优先级和时间片对多个线程进行控制,有一些调度算法,来切换线程。

线程中没有父子关系

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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coyote1994/article/details/49912843
文章标签: 进程 线程 cpu 内存
个人分类: iOS-OC
想对作者说点什么? 我来说一句

进程 线程 linux

2010年09月07日 405KB 下载

线程进程的区别.txt

2009年08月15日 3KB 下载

linux unix下多线程进程

2011年04月08日 87KB 下载

操作系统PPT(关于线程进程的)

2009年12月30日 1.24MB 下载

C++模拟查看进程线程

2011年06月13日 53KB 下载

进程线程的区别

2011年09月29日 367KB 下载

进程线程的分析,很有用

2009年03月25日 631KB 下载

没有更多推荐了,返回首页

不良信息举报

进程与线程

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭