多进程笔记

多任务(进程、进程间通信、线程)–最核心、最难
1.什么是多任务?(系统可以响应多个任务)并发处理
错误理解:同时执行多个程序。
正确理解:
单任务:一个任务执行结束之后,另一个任务才能执行。
多任务:一个任务执行过程中,可以暂停执行,然后cpu执行其他任务
时间片轮转:(非实时)
抢占式:中断
非抢占式:不能中断
2.并发执行和并行执行。
并发执行:就是CPU轮换的执行,当前进程执行了一个短暂的时间片(ms)后,切换执行另一个进程,如此循环往复,由于时间片很短,在宏观上我们会感觉到所有的进程都是在同时运行的,但是在微观上cpu每次只执行某一个进程的指令。 (单核CPU)
并行执行:如果cpu是多核的话,不同的cpu核 可以同时独立的执行不同的进程,这种叫并行运行。所以当cpu是多核时,并发与并行是同时存在的。(多个CPU)
3.进程的概念
多任务编程:多进程或者多线程编程
进程VS程序
进程:一个程序执行的一次过程。 进程时操作系统执行的最小单元!!!
例:运行hello.c时,加载到内存,这个程序就是所谓的进程,CPU来计算内存里的数据

//进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序
的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、
静态和可以复制
//进程是暂时的,程序使长久的:进程是一个状态变化的过程, 程序可
长久保存
//进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即
进程状态信息)
//进程与程序的对应关系:通过多次执行,-个程序可对应多个进程;
通过调用关系,一个进程可包括多个程序。

//Linux进程的特点:每个进程都有自己独立的虚拟地址空间大小为4G,互不干扰、相互独立。(或运行空间:Linux进程虚拟地址空间,每个进程一旦创建,就给4G的虚拟空间)
换句话:每个进程都有自己独立的虚拟地址空间,所有的数据都保存在自己独立的空间内;
Hello.c–>a.out–>加载到内存中
//在所有计算机系统中,内存都是稀缺资源!!!
保护稀缺资源的方法:抽象虚拟物体进行代替;
操作虚拟物体的物体实际上时在操作稀缺资源;
特点:Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也
就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各
个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常, 它也不会
影响到系统中的其他进程。

Linux进程虚拟地址空间的划分:

用户进程部分分段存储内容如下表所示(按地址递减顺序):
名称 存储内容 特点
栈 局部变量、函数参数、返回地址等 先进后出,系统管理;生命周期是由所在函数决定(局部)
堆 动态分配的内存 先进先出,用户管理(malloc,free);用户决定
BSS段 未初始化或初值为0的全局变量和静态局部变量
数据段 已初始化且初值非0的全局变量和静态局部变量 系统管理;生命周期:全局
代码段 可执行代码、字符串字面值、只读变量

//进程id:
getpid函数:获取调用该函数进程的进程pid
getppid函数:获取调用该函数进程的父进程pid,第个P是parent, 第二个process.
//所有进程创建都是由父进程创建的,父进程创建的进程称为子进程
//Linux系统下所有进程的父进程:init 0
//进程创建
1.利用fork的返回值
函数原型
#include <unistd.h>
pid_t fork(void);
(1)函数功能
从调用该函数的进程复制出子进程,被复制的进程则被称为父进程,复制出来的进程称为子进程。
/*
fork函数的作用:创建进程
1、给子进程分配空间;
2、拷贝父进程的代码段、数据段到子进程地址空间;
3、给父子进程的pid赋值;
/
/

fork创建的进程:父子进程的执行顺序是随机的
父子进程的调度是由系统决定
*/
(2)函数参数:无参数。
(3)函数返回值:forl返回两次,可能存在三种不同的值(><=0)
1)父进程的fork,成功返回子进程的PID,失败返回-1,errno被设置。
2)子进程的fork,成功返回0,失败返回-1,ermo被设置。
//父进程先与子进程退出,该子进程就是一个僵尸进程(子进程的资源要靠父进程来回收)
进程等待:等待子进程执行结束之后,回收资源
wait(pid);//阻塞等待子进程退出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值