进程管理
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. ML-Agents(二)创建一个学习环境

    ML-Agents(二)创建一个学习环境 一.前言 上一节我们讲了如何配置ML-Agents环境,这一节我们创建一个示例,主要利用Reinforcement Learning(强化学习). 如上图,本 ...

  2. 7.vue前台配置、插件、组件

    目录 luffy前台配置 axios前后台交互 cookies操作 element-ui页面组件框架 bootstrap页面组件框架 luffy前台配置 axios前后台交互 安装:前端项目目录下的终 ...

  3. What is the difference between shades and shadows?

    Shade is the darkness of an object not in direct light, while shadows are the silhouette of an objec ...

  4. 快速上手项目远程团队协作--CODING(新手向)

    快速上手项目远程团队协作--CODING(新手向) CODING网址:https://e.coding.net/signin 前言:之前用过github,用过微软的Azure协作(https://az ...

  5. IOS抓包工具Stream——让移动端的抓包变得轻而易举

    有一天下晚班回家,在地铁上的时候,开发发来信息说,能不能把之前创建的bug再抓包看下数据.顿时心里就想,在地铁上,我上哪抓包去.之后百度了下,发现ios有一款非常实用的抓包工具,大家可以上App St ...

  6. tcp上传大文件举例、udp实现qq聊天、socketserver模块实现并发

    为什么会出现粘包现象(day31提到过,这里再举个例子) """首先只有在TCP协议中才会出现粘包现象,因为TCP协议是流式协议它的特点是将数据量小并且时间间隔比较短的数 ...

  7. 判断网站CMS

    1.robots.txt文件 robots.txt文件我们写过爬虫的就知道,这个文件是告诉我们哪些目录是禁止爬取的.但是大部分的时候我们都能通过robots.txt文件来判断出cms的类型 如: 从w ...

  8. [math] Codeforces 597A Divisibility

    题目:http://codeforces.com/problemset/problem/597/A Divisibility time limit per test 1 second memory l ...

  9. vue2源码分析:patch函数

    目录 1.patch函数的脉络 2.类vnode的设计 3.createPatch函数中的辅助函数和patch函数 4.源码运行展示(DEMO) 一.patch函数的脉络 首先梳理一下patch函数的 ...

  10. springboot使用swagger2创建文档

    一.导入swagger2依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>spri ...