zoukankan      html  css  js  c++  java
  • Linux从入门到精通——系统的进程

     ####系统进程###

    进程概念:

      进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。

    在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。

    线程概念:

      线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性

    引入线程的好处:

    (1)易于调度。

    (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。

    (3)开销少。创建线程比创建进程要快,所需开销很少。。

    (4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

    进程和线程的关系:

    (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。

    (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。

    (3)处理机分给线程,即真正在处理机上运行的是线程。

    (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步



    1.什么是进程
        进程就是系统未完成并且正在进行的工作。

    2.如何查看进程
       (1)图形方式查看
          gnome 系统桌面  gnome—system-monitor  弹出类似于资源管理器

                                               

       (2)进程查看命令
          ps  静态查看和当前shell相关的进程
          ps -A  ##所有进程
          ps -a  ##在当前环境中运行的进程,不包含环境信息
          ps -u  ##显示进程用户信息
          ps a   ##在当前环境中运行的进程,包含环境信息
          ps x   ##列出系统中所有运行包含tty输出设备
          ps -f  ##显示进程的父子关系,作一个更为完整的输出
          ps e   ##显示进程详细信息(系统资源的调用) 列出程序时,显示每个程序所使用的环境变量。

         

        ps的常用组合
              ps aux  ##显示系统中所有的进程并显示进程用户
              ps ef   ##显示进程详细信息并显示进程父子关系
              ps ax   ##显示当前系统中的所有进程,可以列出较完整的信息
       
       (3)显示进程指定信息
             ps -o xxxx    ##显示进程的指定信息
                  comm      ##进程名称
                  user        ##进程所有人
                  group       ##进程所有组
                  %cpu       ##进程cpu使用率
                  %mem     ##进程内存使用率
                  pid           ##进程id
                  nice         ##进程优先级

                                                  

       (4)进程排序
           ps ax --sort=
                +%cpu|-%cpu
                +%mem|-%mem

                                                     

      (5)stat中显示的信息
           S   ##表示:进程状态是
           l   ##内存中有锁定空间
           N   ##优先级低
           <   ##优先级高
           +   ##前台运行
           s   ##顶级进程

    3.进程优先级
       (1)进程的优先级范围    -20~19
       (2)优先级查看
          ps ax -o pid,nice,comm
       (3)指定某个优先级开启进程
          nice -n 优先级数字   进程名称
          nice -n -5 vim &   ##开启vim并且指定进程的优先级为-5

                                                  

       (4)改变进程优先级
          renice -n 优先级数字   进程pid

          renice -n -5 1806    ##改变1806进程的优先级为-5

                                                


    4.环境中进程的前后台调用(工作管理)
          jobs    ##查看被打入环境后台的进程
          ctrl+z   ##把占用终端的进程打入后台(挂起)
          fg jobsnum   ##把后台的进程调回前台
          bg jobsnum   ##把后台暂停的进程运行
          comm &       让命令直接在后台运行

                                                

    5.进程信号
       (1)常用信号的等级
          1   ##进程重新加载配置
          2   ##删除进程在内存中的数据
          3   ##删除鼠标在内存中的数据
          9   ##强行结束单个进程(不能被阻塞)
         15  ##正常关闭进程
          18  ##运行暂停的进程
          19  ##暂停某个进程(不能被阻塞)
          20  ##把进程打入后台(可以被阻塞)
          man 7 signal   ##查看信号详细信息

          kill -信号 进程pid
          killall -信号 进程名字   (删除全部有进程的名字)
          pkill -u student -信号  (查看特定的用户进程)

       

        SIGHUP  终止进程    终端线路挂断
        SIGINT  终止进程 中断进程
        SIGQUIT  建立CORE文件终止

    6.进程的动态监控
       (1)top
          1.   ##显示cpu每个核的负载
          u    ##后面输入用户名,用来查看改用户发起的所有进程
          s    ##调整刷新频率
          c    ##cpu负载排序
          m    ##内存使用量排序
          h    ##查看帮助
          q    ##退出

                                                                   

  • 相关阅读:
    L18 如何快速查找文档获得帮助
    L4 如何在XCode中下进行工作
    L17 怎么向应用程序商店提交应用
    Unity 烘焙材质到单一贴图的脚本
    关于用Max导出Unity3D使用的FBX文件流程注解
    计算两点之间的角度的代码
    Unity3d iOS基本优化和高级优化
    91SDK接入及游戏发布、更新指南
    UNITY3D与iOS交互解决方案
    Unity3d与iOS交互开发——接入平台SDK必备技能
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/9365195.html
Copyright © 2011-2022 走看看