目录
1.进程的概念
- 程序:二进制文件,占用的磁盘空间
- 进程:启动的程序
- 所有的数据都在内存中
- 需要占用更多的系统资源
- cpu,物理内存
2.并行和并发
并发----在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。
并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成了几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应用程序在同时进行。
如:打游戏和听音乐两件事情在同一时间内都是在同一台电脑上完成了从开始到结束的动作。那么,就可以说听音乐和打游戏是并发的。
并行:当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,2个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Paralel)。
其实决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以进行。
并行和并发的区别:
3.PCB(进程控制块)
每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,linux内核的进程控制块是task_struct结构体。
/user/src/linux-headers-3.16.0-30/include/linux/sched.h头文件中可以查看struct task_struct结构体定义。内部成员有很多,我们重点掌握以下部分即可。
- 进程id.系统中每个进程有唯一的id,在C语言中用pit_t类型表示,其实就是一个非负整数
- 进程的状态:就绪、运行、挂起、停止
- 进程切换时需要保存和恢复一些CPU寄存器
- 描述虚拟地址空间的信息
- 描述控制终端的信息
- 当前工作目录(Current Working DIrectory)
- umask掩码
- 文件描述符,包含很多指向file结构体的指针
- 和信号相关的信息
- 用户id和组id,stat
- 会话(Session)和进程组
- 进程可以适用的资源上线(Resource Limit),umilit -a
4.进程状态
进程基本的状态有五种:初始态、就绪态、运行态、挂起态和中止态。其中初始态为进程准备阶段,常常与就绪态结合来看。