目录
1.进程。
1.进程的概念
2.并行和并发
3.并行和并发的区别:
4.PCB(程序控制块)
5.进程组与会话。
6.进程状态。
1.进程。
1.进程的概念
进程是操作系统进行资源分配和调度的一个独立单位。每个进程都运行在操作系统的控制之下,并且拥有独立的地址空间。
- 程序:二进制文件,占用的磁盘空间
- 进程: 启动的程序
- 所有的数据都在内存中 需
- 要占用更多的系统资源
- cpu,物理内存
2.并行和并发
- 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是 在同一个处理机上运行
并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几 个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应 用程序同时在进行。如:打游戏和听音乐两件事情在同一个时间段内都是在同一台电脑上完成了从开始到结 束的动作。那么,就可以说听音乐和打游戏是并发的。
- 并行:当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程 互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以并行
3.并行和并发的区别:
- 并发,指的是多个事情,在同一时间段内同时发生了。
- 并行,指的是多个事情,在同一时间点上同时发生了。
- 并发的多个任务之间是互相抢占资源的。
- 并行的多个任务之间是不互相抢占资源的、 只有在多CPU或者一个CPU多核的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的
4.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寄存器
- 描述虚拟地址空间的信息
- 描述控制终端的信息
- 当前工作目录(Cueernt Working Directory)
- umask掩码
- 文件描述符,包含很多指向file结构体的指针
- 和信号相关的信息
- 用户id和组id,stat
- 会话(Session)和进程组
- 进程可以适用的资源上线(Resource Limit),umilit -a
补充:umask掩码:
umask
(user file creation mask)是Unix和类Unix系统中用于设置文件权限的默认屏蔽字(mask)。当用户创建文件或目录时,umask
决定哪些权限应该被屏蔽掉。
umask
的值定义了在创建文件或目录时默认应该屏蔽掉哪些权限。umask
的值是一个八进制数,它表示应该从默认权限中减去的权限。默认情况下,文件的权限是666
(可读可写),目录的权限是777
(可读可进可执行)。
- 读(r):4
- 写(w):2
- 执行(x):1
umask
是一个重要的系统配置,它帮助控制文件和目录的默认访问权限,以增强系统的安全性。
5.进程组与会话。
进程组是由一组进程组成的集合,这些进程通常是由单个父进程创建的,它们可以一起接收信号。进程组ID(PGID)是标识进程组的数字。默认情况下,当一个进程创建一个子进程时,子进程会继承父进程的进程组ID。可以通过setpgid()
系统调用来创建新的进程组或改变某个进程的进程组。一个进程组通常与一个终端关联,该终端是进程组中某个进程的标准输入、输出和错误输出的关联点。
会话是一组进程组的集合,它由一个会话首进程(通常是登录shell)创建,并包括该首进程创建的所有子进程。会话ID(SID)是标识会话的数字。每个会话都有一个会话首进程,该进程的PID等于会话ID。会话的创建可以通过setsid()
系统调用实现,但调用该调用的进程不能是进程组的组长,因为这会导致同一个组中的进程属于不同的会话。
当会话首进程退出时,会话中的其他进程不会受到影响,但可能会导致孤儿进程组的产生。孤儿进程组是指其父进程不在会话中的进程组。如果孤儿进程组中的某个进程处于停止状态,内核会向该进程组的所有进程发送SIGHUP
信号,然后是SIGCONT
信号。
6.进程状态。
进程基本的状态有五种,分别为初始态,就绪态,运行态,挂起态和终止态。
其中初始态为进程准备阶段,常常与就绪态结合来看。