Linux基础:Day04
1、操作系统基础
调用:kernel通过给应用程序提供system call方式来提供硬件资源;
注意:这个应用程序也包括库文件;
库文件是运行在ring 0上的一段程序代码,不对客户直接提供应用;
中断、保护现场
一个进程:首先我们需要把硬盘中的程序代码加载到内存(复制),再将这段程序放到CPU上运算,此时,这段程序就会去调用(也会自动生成)很多的进程;由这些进 程来完成程序所指定的任务;
在这个过程当中:我们就需要解决数据输入与输出,还有存储的问题
(不讨论多核、CPU多线程的情况)
多个进程:在电脑中一般都是存在多个进程的,而CPU却只有一个,我们就使用time space的方式来给进程分配固定的时间来运行;某个进程只能在轮到自己运行的时候 才会被放到CPU上执行,时间一到就会自动被踢下来,CPU则会执行下一个进程;
问题:
1、进程谁先谁后的问题?
进程优先级
2、如果进程没有运行完就被踢下来了怎么办?--解决数据存储的问题
3、如果进程造反了怎么办?
0-139
0-99 实时进程 越大越优先
100-139 非实时进程 越小越优先
【特性:普通用户可以转让自己的优先级】
nice值:定义普通进程的优先级,-20 - 19
轮了一圈以后怎么办?
在我们内存上,会提供一个空间;这个空间会专门用来存放运行过后的进程;
当所有的进程运行完成一遍有,这个空间,就会和原有空间对调;再提供给CPU读取;
一直轮换,知道进程运行完成;
1、程序数据
2、输入数据输出数据(运行到一半留下的数据)
3、进程元数据
task struct 数据结构体:它定义了进程数据的存储格式;我们将进程数据,以及进程元数据存储tast struct中;这种结构下,方便CPU快速存储于读取;
进程在运行后的一些数据,通过线性地址对应的物理地址,存储到内存(页框page);MMU(内存管理单元)就是用来将不连续的物理地址转换为连续的线性地址;
这些分开的页框的数据又两种组织形式:1、链表型数据 2、双向链表
linux结构下进程也是树形结构 -- pstree
内核管理不会去直接管理;一般所有的进程都由上一级进程来管理--父子进程概念;
最大的进程--init,有权限去管理所有的进程;
正常情况:
1、如何生成子进程
写实复制:
父进程在需要完成一项工作的时候自己无法完成,则需要生成对应的子进程来完成这项工作,并且把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所运行数据;--这个过程我们就叫做写实复制;
2、子进程完成任务以后,如果关闭
子进程任务完成,功成身退,交出所有的占用资源;再由父进程关闭子进程,这个周期就结束了;
1、主机内进程通讯
single 信号通讯
共享内存
管道形式
2、主机间的进程通讯
streams -- rpc
socket
守护进程 -- 维护系统的正常运行
普通进程 -- 提供应用
占用CPU多进程 -- 后台运行进程
占用内存多的进程 -- 前台要显示进程
进程和程序比较起来,进程是有生命周期的,他会死去;
1、running 运行
2、sleeping状态
3、stop 停止状态
4、zombie 僵死状态
5、中断状态
==========================================================
进程管理:
调用
内核空间 用户空间
1个进程运行:
多进程再单核单线程cpu上运行的情况:
cpu资源
1、谁先谁后?
2、数据存储的问题?
task struct
page -- 页框是一个虚拟概念,页框之间并不知道对方的存在,只知道自己独占内存空间
3、进程暴走了
父子进程的概念
写实复制
4、进程的分类、进程的通讯、进程状态
pstree
通过树形结构显示进程关系
yum install psmisc -y
*ps
查看进程状态--当前运行状态;(这一刻)
PID 进程ID
TTY 启动该进程的终端是谁 pts
TIME 进程累计再CPU上运行的时长
CMD 启动该进程进程命令程序
ps的常用组合:
ps -aux
USER 进程所属用户
PID
%CPU
%MEM
VSZ virtual memory size 虚拟内存大小;进程自己再内存中真是占用的线性地址空间大小
RSS 常驻内空间(不可以进行内存交换 -- swap)
TTY
STAT 进程状态
R running
S sleeping
T stoped
Z zombie
附加状态
s 代表是lead进程--bash
+ 前端进程
< 高优先级进程
N 低优先级进程
D 表示不可中断
W 没有足够的内存可以分配
l 表示多线程进程;多线程 -- 把一个进程拆分为多个线程来完成,这样提高进程运行速度
START 进程启动时间
TIME
COMMAND
ps -ef
PPID 父进程号
C 进程运行再那个CPU上
ps -ejH
以树形结构显示进程
ps -eo
自定义参数格式
ps -eo uid,pid,comm
ps -U
查看指定用户所运行的进程
ps -U root
与ps相反,top实时状态,会动态刷新
k --> 关闭进程 输入PID即可;
h --> 帮助页面
调整top排序:
M 根据内存大小进行排序
P 根据CPU利用率来进行排序
T 根据使用CPU累计时长来进行排序
N 根据PID来进行排序
可以详细显示最上面的命令
1 2 3
htop
top的高级版本,默认yum源中是没有的,需要去下载并编译安装使用
vmstat
查看虚拟机内存的相关信息
进程信息
内存信息
交换内存信息
system系统IO相关信息 -- in cs
cpu信息
-s //以统计的形式来显示相关信息
pmap
报告内存的映射信息
pmag pid
映射内存空间中的物理地址信息和CPU所能识别的线性地址信息;
pidof
通过进程ID(UID)来查看进程号(PID)
pidof bash
dstat
默认没有为我们安装上 yum install dstat
动态的显示各种信息,可以自己定义
建议:去man dstat
kill
管理进程
通过kill对进行发送响应的操作信号
1信号 HUP -- 让进程重读配置文件,不重启进程
2信号 INT -- 中断进程
9信号 KILL -- 强制关闭进程,不去保存进程数据
15信号 TERM -- 优雅关闭
kill -l //查看系统支持所有信号
kill -9 pid
pgrep
进程过滤,也可以做进程查找--类似于pidof
pkill
直接去关闭进程--可以按照UID(名字)来关闭进程
jobs
作业: -- 进程
前台作业:占用了当前的shell界面
后台作业:在后台自动运行的进程
ctrl + z
COM & //脚本运行的时候
bg -- 将前端送到后台
.swp
Linux基础:Day04的更多相关文章
- day04 Linux基础命令
day04 Linux基础命令 查看帮助信息命令 1.man命令:man命令的功能是查看指定命令的详细解释. 格式:man [具体需要被查看的命令] [root@localhost ~]# man r ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- 大数据每日干货第四天(linux基础之一目录结构与常用命令)
为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...
- Linux课程实践一:Linux基础实践(SSH)
一.SSH服务 1. 安装SSH (1)查看是否已经安装过ssh服务 rpm -qa |grep ssh (2)进行安装 sudo apt-get install openssh-server Ubu ...
- 还是不想改报告,伊阿忆啊哟-Linux基础继续
hi 虽然今天是最最美好的周六(前不着工作日后不着工作日),但老子还要来改报告,但额就是不想改,你拿我有啥办法啊... 争取完结Linux基础 一.Linux常用命令(三) 4.帮助命令 4.1 帮助 ...
- 原来今天是感恩节-Linux基础继续&MySQL和PHP
hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...
- 买错的电影票,含着泪也得看-LAMP搭建&Linux基础
hi 没说过,上周五室友过生请客,在龙湖里吃嗨了喝爽了,回去的路上侃侃而谈.说好的这周一起去看年内最后的大片,火星救援的,谁知道老子眼神不好,买错了电影的时间...把周六的约定提前到了今儿个下午,ma ...
- Linux基础3(文件权限)
文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...
- Linux课程实践一:Linux基础实践(基础操作)
一.软件源维护 1. 基本操作 (1)查看源列表 sudo vim /etc/apt/sources.list deb:二进制软件安装包 deb-src:源码包 (2)备份软件源列表 sudo cp ...
- 实践一:Linux基础实践
一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...
随机推荐
- 系统之眼!Linux系统性能监控工具Glances
一.Glances介绍 glances是一个基于python语言开发,可以为linux或者UNIX性能提供监视和分析性能数据的功能.glances在用户的终端上显示重要的系统信息,并动态的进行更新,让 ...
- mybatis探究之延迟加载和缓存
mybatis探究之延迟加载和缓存 一.什么是延迟加载 1.延迟加载的概念 在mybatis进行多表查询时,并非所有的查询都需要立即进行.例如在查询带有账户信息的用户信息时,我们们并不需要总是在加载用 ...
- (转)ARM协处理器主要用途 及其 指令CDP LDC STC MCR MRC介绍
原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010111610612200/ ARM 微处理器可支持多达 16 个协处理器,用于各种协 ...
- git命令,github网站以及sourceTree用法详解
1.git下载安装 这里只是windows安装方法: 进入这个网址:http://msysgit.github.com/,点击下载,就会下载下来一个exe文件,双击打开,安装即可 完成安装之后,就可以 ...
- Python基础篇(一)_基本语法元素
Python基础篇——基本语法元素 缩进:体现强制可读性,一般缩进4个空格.一个或多个Tab 注释:单行注释----以 # 开头 多行注释----每行以 # 开头,以 # 结束 变量:无须提前声明.可 ...
- C++ 深拷贝和浅拷贝详解
前言 在对象拷贝过程中,如果没有自定义拷贝构造函数,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型成员变量,调用其相应类型的拷贝构造函数. 位拷贝( ...
- 【开源】使用Angular9和TypeScript开发RPG游戏
RPG系统构造 通过对于斗罗大陆小说的游戏化过程,熟悉Angular的结构以及使用TypeScript的面向对象开发方法. 项目地址 人物 和其他RPG游戏类似,游戏里面的人物角色大致有这样的一些属性 ...
- Journal of Proteomics Research | 自动的、可重复的免疫多肽数据分析流程MHCquant
题目:MHCquant: Automated and reproducible data analysis for immunopeptidomics 期刊:Journal of Proteome R ...
- Java高效编程:总结分享
参考资料:慕课网:Java高效编程收费实战课程.博客园.CSDN.菜鸟教程以及其他文档. 篇幅受限,不太想针对每个点都写篇博客,有的地方可能写的不是很详细,一笔带过了.如果你觉得那个点在项目中用得上可 ...
- 【spring springmvc】这里有你想要的SpringMVC的REST风格的四种请求方式
概述 之前的文章springmvc使用注解声明控制器与请求映射有简单提到过控制器与请求映射,这一次就详细讲解一下SpringMVC的REST风格的四种请求方式及其使用方法. 你能get的知识点 1.什 ...