进程管理

内核功能:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等;

一、进程(Process)

进程:运行的程序;
进程编号:PID;

1.程序与进程关系
程序(磁盘文件)——进程(磁盘文件副本);
互斥机制(可能有):同一个程序——不允许开启多个进程;
2.以什么身份来运行程序
UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承;
3.进程在内存中,存在生命周期;
4.进程之间以链表形式关联;
task struct:Linux内核存储进程信息的数据结构格式;
task list:多个任务的的task struct组成的链表;

二、创建进程

1.第一个进程(init)
centos7:第一个进程是systemd;
centos6:第一个进程是init;
进程:都由其父进程创建;父子关系;
创建方式:CoW——写时复制;
例子:100进程和101进程
没更之前,指向同一个空间;
更改后,100进程指向原来空间,101进程指向新开的子进程的空间;

三、进程优先级

《进程管理》 Paste_Image.png

1.分类
system优先级:0(最高)——139(最低);数字越小,优先级越高;
realtime(实时)优先级——内核:99(最高)——0(最低);值越大,优先级越高;
nice优先级:-20(最高)——19(最低);nice值越大,优先级越小;
TOP(PR)优先级:RT——RT(最高)——0——39(最低)
例如:时间片
1s——5ms/时间片——200个时间片
1——150个——优先级高
2——50个——优先级低
各有140个运行队列和过期(等待)队列

《进程管理》 Paste_Image.png

2.Big O
Big O:时间复杂度,用时和规模的关系;
O(1):无论规模多大,所耗时间相同;
O(logn),O(n)线性,O(n^2)抛物线,O(2^n)

《进程管理》 Paste_Image.png

四、进程内存

1.Page Frame:页(框)~单位~内存空间~存储Page 4k;
2.LRU(Least Recently Used)
LRU:近期最少使用算法,释放内存;急需——放到内存里,不急需——释放内存;

《进程管理》 Paste_Image.png

新数据放在最上面;
旧数据被新数据依次往下压;
旧数据被重新使用,就会回到最上面;
数据超过空间容量,就会丢弃旧数据;旧数据(不常用)优先淘汰;
设置:使用几次,优先调到最上面;
假设序列为4 3 4 2 3 1 4 2;物理块有3个,则
第1轮4调入内存4
第2轮3调入内存3 4
第3轮4调入内存4 3
第4轮2调入内存2 4 3
第5轮3调入内存3 2 4
第6轮1调入内存1 3 2
第7轮4调入内存4 1 3
第8轮2调入内存2 4 1
3.物理地址空间和线性地址空间
MMU(Memory Management Unit):负责转换线性和物理地址;
TLB:保存虚拟地址和物理地址映射关系的缓存;
VSZ(Virtual memory SiZe):虚拟内存集——线性内存(操作系统许诺分配给你的内存空间);
RSS(ReSidentSize):常驻内存集(真正使用的内存空间);

《进程管理》 Paste_Image.png

4.
(1)IPC(Inter Process Communication)
同一主机
signal:发信号;
shm:shared memory共享内存(oracle数据库);
semaphore:信号量,一种计数器;

《进程管理》 Paste_Image.png

(2)rpc(remote procedure call)
不同主机
socket:IP和端口号;

《进程管理》 Paste_Image.png

socket——基于远程主机(http成为主流);

《进程管理》 Paste_Image.png

文件socket——基于本机

windows:"win键+R"——输入命令services.msc

《进程管理》 Paste_Image.png

1——3——socket机制
1——2——文件socket机制

《进程管理》 Paste_Image.png

五、进程状态

1.Linux内核:抢占式多任务(主流操作系统——抢占式);
2.进程类型
(1)守护进程(daemon):开机运行,和终端无关进程~ssh;
(2)前台进程(+):开机不运行,与终端相关,通过终端启动的进程~pstree;
前台执行程序:占用终端,不结束此进程,就不能运行其他程序;
注意:两者可相互转化;

(3)CPU-Bound:CPU密集型,非交互(CPU忙,不一定运行的程序多);
(4)IO-Bound:IO密集型,交互(磁盘的读写操作);
3.进程状态(STAT)
(1)运行态(R):running(内核)
(2)就绪态:ready
(3)睡眠态:可中断(S):interruptable~可唤醒
          不可中断(D):uninterruptable~IO操作(磁盘读写)~CPU进程
(4)停止态(T):stopped,暂停于内存,但不会被调度;
可以手动启动,从上次停止的地方继续运行(备份);
程序1耗资源~~想运行程序2~~停止程序1,先运行程序2~~程序2运行完成~~运行程序1;
(5)僵死态(Z):zombie,结束进程,父进程结束前,子进程不关闭;
已死程序~占用资源,不释放资源;
解决方法:杀死父进程||重启;
4.
N:低优先级进程
<:高优先级进程
s:session leader,会话(子进程)发起者
l:多线程进程
TIME:累计时间片
进程(process):不同进程——不共享内存;
线程(thread):每个线程——相互独立、共享内存、协作;
实验:http~apache(观察进程的线程)
yum -y install httpd
systemctl start httpd
ps auxf|grep httpd = pstree -p  观察进程有多个线程
vim /etc/httpd/conf.modules.d/00-mpm.conf
更改文件:
LoadModule mpm_prefork_  加#注释掉
LoadModule mpm_worker_  去掉#,使之生效
systemctl restart httpd
pstree -p  {}在pstree中是线程
    原文作者:Miracle001
    原文地址: https://www.jianshu.com/p/bda52402f80a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞