进程管理
1、操作系统基础
 调用:kernel通过给应用程序提供system call方式来提供硬件资源;
  注意:这个应用程序也包括库文件;
  库文件是运行在ring 0上的一段程序代码,不对客户直接提供应用;
 中断、保护现场
2、进程运行原理(一个进程与多个进程)
 一个进程:首先我们需要把硬盘中的程序代码加载到内存(复制),再将这段程序放到CPU上运算,此时,这段程序就会去调用(也会自动生成)很多的进程;由这些进  程来完成程序所指定的任务;
 在这个过程当中:我们就需要解决数据输入与输出,还有存储的问题
  
 (不讨论多核、CPU多线程的情况)
 多个进程:在电脑中一般都是存在多个进程的,而CPU却只有一个,我们就使用time space的方式来给进程分配固定的时间来运行;某个进程只能在轮到自己运行的时候  才会被放到CPU上执行,时间一到就会自动被踢下来,CPU则会执行下一个进程;
 问题:
 1、进程谁先谁后的问题?
  进程优先级 
 2、如果进程没有运行完就被踢下来了怎么办?--解决数据存储的问题
 3、如果进程造反了怎么办?
3、进程优先级
 0-139
  0-99  实时进程   越大越优先
  100-139  非实时进程  越小越优先
  【特性:普通用户可以转让自己的优先级】
       nice值:定义普通进程的优先级,-20 - 19
 轮了一圈以后怎么办?
  在我们内存上,会提供一个空间;这个空间会专门用来存放运行过后的进程;
  当所有的进程运行完成一遍有,这个空间,就会和原有空间对调;再提供给CPU读取;
  一直轮换,知道进程运行完成;
4、进程数据怎么办?
 1、程序数据
 2、输入数据输出数据(运行到一半留下的数据)
 3、进程元数据
 task struct 数据结构体:它定义了进程数据的存储格式;我们将进程数据,以及进程元数据存储tast struct中;这种结构下,方便CPU快速存储于读取;
 物理地址空间--线性地址空间
 进程在运行后的一些数据,通过线性地址对应的物理地址,存储到内存(页框page);MMU(内存管理单元)就是用来将不连续的物理地址转换为连续的线性地址;
  这些分开的页框的数据又两种组织形式:1、链表型数据  2、双向链表
5、如果进程造反了怎么办?
 linux结构下进程也是树形结构 -- pstree
 内核管理不会去直接管理;一般所有的进程都由上一级进程来管理--父子进程概念;
 最大的进程--init,有权限去管理所有的进程;
 
 正常情况:
 1、如何生成子进程
  写实复制:
  父进程在需要完成一项工作的时候自己无法完成,则需要生成对应的子进程来完成这项工作,并且把自己的内存空间中的数据复制一份交给子进程,用来存储子进程所运行数据;--这个过程我们就叫做写实复制;
 2、子进程完成任务以后,如果关闭
  子进程任务完成,功成身退,交出所有的占用资源;再由父进程关闭子进程,这个周期就结束了;
6、进程间的通讯原理
 1、主机内进程通讯 
  single 信号通讯
  共享内存
  管道形式
 2、主机间的进程通讯
  streams -- rpc
  socket
7、进程类型
 守护进程 -- 维护系统的正常运行
 普通进程 -- 提供应用
 另外一种分类方式:根据占用资源的不同
 占用CPU多进程  --  后台运行进程
 占用内存多的进程  --  前台要显示进程
8、进程的状态
 进程和程序比较起来,进程是有生命周期的,他会死去;
 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
 top
  与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
   fg -- 切回到后台进程 : jobs -l  + -- 默认切回来的指定进程;
   COM & //脚本运行的时候
   bg -- 将前端送到后台
  vim a.txt
  .swp
 
 

Linux基础:Day04的更多相关文章

  1. day04 Linux基础命令

    day04 Linux基础命令 查看帮助信息命令 1.man命令:man命令的功能是查看指定命令的详细解释. 格式:man [具体需要被查看的命令] [root@localhost ~]# man r ...

  2. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  3. 大数据每日干货第四天(linux基础之一目录结构与常用命令)

           为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...

  4. Linux课程实践一:Linux基础实践(SSH)

    一.SSH服务 1. 安装SSH (1)查看是否已经安装过ssh服务 rpm -qa |grep ssh (2)进行安装 sudo apt-get install openssh-server Ubu ...

  5. 还是不想改报告,伊阿忆啊哟-Linux基础继续

    hi 虽然今天是最最美好的周六(前不着工作日后不着工作日),但老子还要来改报告,但额就是不想改,你拿我有啥办法啊... 争取完结Linux基础 一.Linux常用命令(三) 4.帮助命令 4.1 帮助 ...

  6. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  7. 买错的电影票,含着泪也得看-LAMP搭建&Linux基础

    hi 没说过,上周五室友过生请客,在龙湖里吃嗨了喝爽了,回去的路上侃侃而谈.说好的这周一起去看年内最后的大片,火星救援的,谁知道老子眼神不好,买错了电影的时间...把周六的约定提前到了今儿个下午,ma ...

  8. Linux基础3(文件权限)

    文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...

  9. Linux课程实践一:Linux基础实践(基础操作)

    一.软件源维护 1. 基本操作 (1)查看源列表 sudo vim /etc/apt/sources.list deb:二进制软件安装包 deb-src:源码包 (2)备份软件源列表 sudo cp ...

  10. 实践一:Linux基础实践

    一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...

随机推荐

  1. WEB应用之http协议和httpd闲聊

    什么是web?在日常生活中我们常常听到web这个词,它到底是什么呢?今天我们来聊一聊web应用http协议:相信生活在如今互联网时代的我们,http这个协议应该对我们不是很陌生吧!比如双十一双十二我们 ...

  2. 在kubernetes1.17.2上结合ceph部署efk

    简绍 应用程序和系统日志可以帮助我们了解集群内部的运行情况,日志对于我们调试问题和监视集群情况也是非常有用的.而且大部分的应用都会有日志记录,对于传统的应用大部分都会写入到本地的日志文件之中.对于容器 ...

  3. CF1082B Vova and Trophies 题解

    CF1082B Vova and Trophies 题解 瞎搞题,推荐的,一看是道水题,就随手A了-- 题目描述 Vova has won \(n\)trophies in different com ...

  4. ubuntu与windows相关配置内容

    安装.配置.启动FTP服务 执行以下命令安装,安装后即会自动运行: sudo apt-get install vsftpd 修改vcftpd的配置文件/etc/vsftpd.conf,将下面几行前面的 ...

  5. 谈谈MySQL数据库索引

    在分析MySQL数据库索引之前,很多小伙伴对数据结构中的树理解不够深刻.因此我们由浅入深一步步探讨树的演进过程,再一步步引出MySQL数据库索引底层数据结构. 一.二叉树 二叉查找树也称为有序二叉查找 ...

  6. el-dialog对话弹框中根据后台数据无限制添加el-select标签,并进行展示,搜索,删除

    前几天遇到一个题,el-dialog对话弹框中根据后台数据无限制添加el-select标签,并进行展示,搜索,删除,在这上面用到了递归算法,废话不多说,直接上代码 <template> & ...

  7. 浅谈 HTTP中Get与Post的区别

    浅谈 HTTP中Get与Post的区别 存在的误区 有人说 HTTP 协议下的 Get 请求参数长度是有大小限制的,最大不能超过XX,而 Post 是无限制的,看到这里,我想他们定是看多了一些以讹传讹 ...

  8. ASP.NET MVC5实现芒果分销后台管理系统(二):Code First快速集成EntityFramework

    在上一篇文章中,我们已经搭建了整个芒果后台管理系统整个工程架构,并集成了AutoMapper,日志组件等,接下来我们将使用Entity Framework完善系统的持久化存储部分.这篇EF的构造,我将 ...

  9. SpringBoot2整合Redis多数据源

    配置文件属性 spring: redis: database: 1 host: 192.168.50.144 port: 6379 password: timeout: 600 #Springboot ...

  10. 大数据安装之Kafka(用于实时处理的消息队列)

    一.安装部署kafka 1.集群规划 hadoop102                                 hadoop103                          hado ...