Linux--进程管理--06
1、操作系统的基础
调用:kernel通过给应用程序提供system call的方式来提供硬件资源;
注意:应用程序也包括库文件
库文件是运行在ring0上的一段程序代码,不对客户直接提供应用
2、程序运行原理(一个进程和对个进程)
一个进程:首先我们需要把硬盘中的程序代码加载到内存中(复制),再将这段代码放到CPU上运算,此时,这段程序就回去调用更多的进程;由这些进程来完成程序所指定任务
在这个过程中,我们就需要去解决数据的输入输出,还有存储问题
多个进程:在电脑中一般都是存在多个进程的,而CPU却只有一个,我们就使用time space 的方式来给进程分配固定时间来运行;某个进程只能在轮到自己运行的时候才会被放到CPU上去运行,时间一到,就会被踢下来,CPU则会执行下一个进程;
问题:
1、进程谁先谁后的问题?
进程优先级
2、如果进程没有运行完就被踢下来怎么办
程序数据
输入数据输出数据(运行到一半留下的数据)
进程元数据
task struct 数据结构体:它定义了进程数据的存储格式;我们将进程数据及进程元数据存储于task struct中,这种结构下方便CPU快速存储和读取。
物理地址空间 ---- 线性地址空间
内存进程在运行后的一些数据通过线性地址对应的物理地址,存储到内存中;MMU就是用来将不连续的物理地址转换为连续的线性地址
这些分开的页框数据又有两种组织形式:1、链表型数据 2、双向链表
3、进程造反了怎么办
Linux结构下进程也是树形结构 – pstree
内核管理不会去直接管理;一般所有进程都有上一级进程来管理
最大的进程 --- init,有权限去管理所有进程
正常情况:
如何生成子进程:父进程在需要完成一项工作的时候自己无法完成,则需要生成对应的子进程来完成这项工作,并把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所需的运行数据;这个过程我们就叫写实复制;
子进程完成任务后,如何关闭:子进程完成任务后,交出所占用的资源,再由父进程关闭子进程。
3、进程优先级
0-139
0-99 守护进程 越大越优先
100-139 普通进程 越小越优先
【特性】普通用户可以转让自己的优先级
nice值:定义普通进程的优先级,范围在-19 – 20 对应100-139
在我们的内存上会提供一个空间,专门存放运行过后的进程,当所有的进程运行一遍后,这个空间会和原有空间对换,提供给CPU读取。直到进程运行完成为止。
4、进程间通讯原理
1、主机间进行通讯
single信号通信
共享内存
管道形式
2、主机间的进程通讯
streams --- rpc
socket
5、进程类型
守护进程:维护系统的正常运行
普通进程:提供应用
另一种分类方式:根据占用资源的不同
占用CPU多的进程:后台运行进程
占用内存多的进程:前台要显示进程,<优先>
6、进程的状态
进程和程序比较起来,进程是有生命周期的,他会死去
running运行
sleeping状态
stop停止状态
zombie僵死状态
中断
7、进程管理的命令
- pstree 查看进程树;通过树形结构显示进程关系,yum install psmisce -y
- ps 查看进程当前运行状态
PID 进程ID
TTY 启动该进程的终端是谁
TIME 进程累计在CPU上运行的时间
CMD 启动该进程的命令程序
常用组合:
ps -aux
ps -ef
ps -ejH 以树形结构显示进程
ps -eo 自定义参数格式 ps -eo uid,pid,comm
ps -U 查看指定用户运行的进程
- top
与ps向反,top实时更新状态,能够动态刷新
k --- 关闭进程 输入PID即可
调整top排序
M 根据内存排序
P 根据CPU即用率排序
T 根据使用CPU累计时长排序
N 根据PID进行排序
- htop
top的高级版本,默认yum源里没有,需要去下载并编译安装使用
- vmstat
查看虚拟机内存的相关信息
进程信息、内存信息、交换内存信息、system系统IO信息、cpu信息
-s 以统计的形式显示相关信息
- pmap
报告内存的内存映射信息
pmap pid
映射内存空间中的物理地址信息和CPU所能识别的线性地址信息。
- pidof
通过进程ID(UID)来查看进程号(PID)
pidof bash
- dstat
默认没有安装,通过yum dstat安装
动态的显示各种信息,可以自己定义
- kill
管理进程,通过kill对进程发送相应的操作信号
1信号:HUP ,挂起进程
2信号:INT ,中断进程,ctrl + c就是使用2信号
9信号:KILL,强制关闭进程,不去保存进程数据,直接杀死
15信号:TERM,优雅关闭,能储存打开的文件
kill -l 查看系统支持的所有信号
- pgrep
进程过滤,也可以做进程查找,类似于pidof
- pkill
直接去关闭进程,可以按照UID(名字)关闭
- jobs
作业:---进程
前台作业:
后台作业:在后台自动运行
前台作业放到后台: ctrl + z
把后台进程切回到前台:fg 【+代表默认切回的进程】
将前台进程放到后台:bg
- iptables
ip的tables ip的表格
iptables只是netfilter的前端管理工具;netfilter是Linux内核提供的数据流量管理模块
防火墙作用:1、流量控制 2、接VPN
网络防火墙:一般处在外网出口处,主要对于内外网交互的流量进行监控与过滤
主机防火墙:主机有内核空间和用户空间,netfilter的过滤模块运行在内核空间,但是它又无法提供数据匹配,所以我们需要使用函数来调用netfilter模块,匹配数据流量模块;
匹配数据流量:
五个钩子函数:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
三种流量:
1、到达主机的流量
2、通过主机的流量
3、主机发起的流量
四张表:
raw 保持连接---建议不要开启这个表的功能
mangle 数据包修改
nat 做nat映射,包括SNAT和DNAT
filter 数据包过滤,默认启用
raw关联OUTPUT、PREROUTING
mangle关联PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
nat关联PREROUTING、OUTPUT、POSTROUTING
filter关联INPUT、FORWARD、OUTPUT
【对于数据包的行为,就决定了这个数据包经过的链】
防火墙处理数据包的四种方式:
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端响应信息。
LOG 在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则
注意:写策略的时候需要关联钩子,策略是属于钩子的,而钩子只做策略匹配,不能进行数据操作;所以,我们需要关联表,每一种表决定了一种行为操作;
表包含链 链包含策略
iptables用法:
iptables [-t table] {-A|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|--Z} [chain [rulenum]] [option...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
参数:
-t 指定表
-A -I 添加策略 -A在最下面添加 ,-I在最上面添加
-D 删除策略
-R 替换链表,需要指定所替换的编号
iptables -t filter -R INPUT 2 -s 1.1.1.1 -d 2.2.2.2 -j ACCEPT
-S 显示链表的所有用法
-P 指定链表的默认行为
iptables -t filter -P INPUT DORP
建议写白名单用
-N 自己定义链表;
如果策略过多,我们需要将策略分类,这就用自己定义链表来分类;让后再将自己定义的链表调用在其他可以匹配数据流量的链表上;
-X 清除自定义的链表
iptables -t filter -X chain
-v 可以查看策略匹配的数据包
-w 详细查看数据包匹配情况-w
iptables -t filter -L -v
-Z 数据包计数清零
-L 显示所有chain上面所有的规则rule
-F 清空指定chain上面的所有规则
-E 替换chain的名称
Linux--进程管理--06的更多相关文章
- Linux进程管理之ps的使用
主题Linux进程管理之ps工具的使用 一ps工具的介绍 ps: process state 进程状态ps - report a snapshot of the current processesL ...
- Linux进程管理子系统分析【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...
- 12个Linux进程管理命令介绍(转)
12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...
- Linux进程管理知识整理
Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...
- Linux性能及调优指南(翻译)之Linux进程管理
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- Linux进程管理专题
Linux进程管理 (1)进程的诞生介绍了如何表示进程?进程的生命周期.进程的创建等等? Linux支持多种调度器(deadline/realtime/cfs/idle),其中CFS调度器最常见.Li ...
- [转帖]十二 个经典 Linux 进程管理命令介绍
https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看. 随笔- 109 ...
- Linux进程管理 (1)进程的诞生
专题:Linux进程管理专题 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 L ...
- Linux进程管理 (2)CFS调度器
关键词: 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 Linux进程管理 ( ...
- Linux进程管理 (7)实时调度
关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...
随机推荐
- LiteDB源码解析系列(1)LiteDB介绍
最近利用端午假期,我把LiteDB的源码仔细的阅读了一遍,酣畅淋漓,确实收获了不少.后面将编写一系列关于LteDB的文章分享给大家,希望这么好的源码不要被埋没. 1.LiteDB是什么 这是一个小型的 ...
- nginx(一)
localtion的语法 已=开头表示精确匹配 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串. ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~ ...
- 如何在Eclipse中查看Java类库的源代码
你的JDK安装目录下%Java_home%/src.zip文件就是源码,解压缩找到对应包下面的类即可. 如果是Eclipse开发,ctr+鼠标左击,出现不了源码的话,在弹出的视图中点击attach s ...
- linux初学者-文件管理篇
linux初学者-文件管理篇 linux系统的所有东西都是以文件的形式存储在计算机中的,所以linux系统中对文件的管理非常重要.以下介绍一些文件管理的常用方法. 1.文件的建立 文件的建立或者修改文 ...
- mysql 不同版本下 group by 组内排序的差异
最近发现网上找的 group by 组内排序语句在不同的mysql版本中结果不一样. 建表语句: SET FOREIGN_KEY_CHECKS=0; -- ---------------- ...
- 配置没有问题,虚拟机Ubuntu系统ifconfig没有网卡信息
如果没有问题,前几天都好好的,突然出现这个问题 sudo ifconfig etho up 其中eth0是我的网卡名称
- 关于STM32GPIO按键上下拉配置的认识
说真的,后知后觉这个问题还是有点值得研究的,一开始学习我用的板子在按键模块电路中GPIO输入脚是有外部上下拉电阻的,如下图所示:当KEY1接V3.3,在其后为它接一个下拉电阻,可以保证按下按键输入高电 ...
- 使用vue实现行列转换的一种方法。
行列转换是一个老生常谈的问题,这几天逛知乎有遇到了这个问题.一个前端说,拿到的数据是单列的需要做转换才能够绑定,折腾了好久才搞定,还说这个应该后端直接出数据,不应该让前端折腾. 这个嘛,行列转换在后端 ...
- 【Java例题】3.6 计算arcsin(x)的值
6.使用泰勒展开式计算arcsin(x)的值. arcsin(x)=x+x^3/(2*3)+1*3*x^5/(2*4*5)+...+ (2n)!*x^(2n+1)/(2^2n)*(n!)^2*(2n+ ...
- 【Java例题】2.1复数类
1.定义复数类,包括实部和虚部变量.构造方法. 加减乘除方法.求绝对值方法和显示实部.虚部值的方法. 然后编写一个主类,在其主方法中通过定义两个复数对象来 显示每一个复数的实部值.虚部值和绝对值, 显 ...