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