进程(process):一个程序被加载到内存中运行,那么内存中的那个数据就被成为进程;
Linux中,触发任何一个事件的时候,系统都会将他定义成一个进程(process),并且给予这个进程一个ID,称为PID,同时根据触发这个进程的用户与相关属性关系,基于这个PID一组有效的权限设置;
如何产生一个进程(process)?当执行一个程序或命令就可以触发一个事件而获取一个PID;系统只认二进制文件,当我们要让系统工作的时候,需要启动一个二进制文件,这个文件就是程序(program);
每个进程(process)都有三组权限,每一组权限又包括rwx这三种;以不同的身份执行同一个程序时,系统给予的权限也都不相同;
program是存储在磁盘中的,然后通过用户的执行来触发,触发后加载到内存中成为进程;
内存中的进程会产生相关数据(PID,执行者的权限属性参数,程序所需要的程序代码与相关数据);
登录执行bash其实就已经产生了一个process了,之后用户再执行像是touch这样的操作,衍生出来的子进程也会沿用父进程的相关权限;
有可能会出现这样的问题:我明明杀掉了一个进程,但是这个进程过了一会又跑出来了,而且PID还和杀掉的不一样,这就很烦人;
遇到这种问题先看一个他是不是crontab计划任务,如果不是,那他一定有一个父进程,杀掉这个父进程就好了;
linux的程序调用被称为fork-and-exec流程,进程会借由父进程以复制(fork)的方式产生一个一模一样的子进程被复制出来的子进程再以exec的方式来执行的进程最终成为一个子进程;
具体过程大致为:
fork父进程,此时fork出来的中间临时进程会多一个PPID,PPID的值是父进程的PID,需要注意的是此时中间临时进程的的PID和父进程是不一样的;之后临时进程开始按照exec的方式加载实际要执行的进程;之后中间临时进程就会变成最终的子进程;
系统/网络服务种会涉及到常驻在内存中的进程,想touch,ls这种命令,命令触发后产生的PID很快就会终止,除了这些临时工,还存着很多会长期驻扎在内存里的进程,这些进程我们通常会称之为”服务(daemon)”
Linux是一个多人多任务环境,多人指的是可以有多个账号登录,多任务指它可以实现多任务操作,CPU的频率很高,每秒可以完成很多命令(按照GHz来计算的话,1GHz代表1s内能完成10^9次命令),linux可以让cpu在各个任务之间切换,也就是说每个任务仅仅占去CPU的几个命令次数,所以CPU每秒都能在各个进程之间反复横跳;CPU切换进程的任务与这些任务进入到CPU运行的调度,会影响到系统的整体性能。目前linux使用的多任务切换操作是一个很棒的机制,几乎可以将PC的性能压榨干净,所以即使多用户多任务,每个用户也没啥不好的使用感觉;
多登录环境的七个基本终端界面:
Linux默认提供了六个命令行登录界面和一个图形界面,每个终端界面可以登录不同的用户;
Linux几乎很少宕机,因为它可以在任何时候将跑飞的进程杀掉,重新执行这个进程,而不用重新启动;
