首页 > 代码库 > 走入计算机的第七天(关于操作系统的内容)

走入计算机的第七天(关于操作系统的内容)

1 监控系统的一些命令

   top:是linux中常用的性能分析工具,用来查看系统中各个资源的占用空间的数据。

      第一行是任务信息,从中到右分别是(当前时间),(系统运行时间,以时:分的格式),(当前登录用户数),(系统负载,三个数值分别是1分钟,5分钟,15分钟前到现在的平均值。

      第二行属于进程,从左到右分别是(进程总数),(正在运行的进程),(睡眠的进程),(停止的进程数),(僵尸进程)。

      第三行是关于CPU的信息,从左到右分别是(用户空间占用CPU百分比),(内核空间占用CPU百分比),(用户进程空间内改变过优先级的进程占用CPU的百分比),(空闲CPU的百分比)(,等待输入输出的CPU时间百分比),(硬件中断占用CPU时间的百分比),(软件中断占用CPU时间的百分比)。

      第四行和第五行属于内存信息。

   free:显示内存的使用状态。

         (total)(Mem)属于物理内存。

         (used)(Mem)使用的物理内存。

         (free)(Mem)可以使用的内存。

          他们之间的关系是(total)(Mem)=(used)(Mem)+(free)(Mem)

         (shared)(Mem)共享内存,表示有几个进程共享的内存。

         (buffers)(Mem)表示已经分配但还未使用的buffers大小。

         (cached)(Mem)表示已经分配但还未使用的cached大小。

          buffers和cached功能是:

          buffers是用于存放要输出到disk(块设备)的数据,而cached是存放从disk上读出的数据。都是为了提高IO的性能,由OS管理。

          操作系统为了提高IO read的性能,总是要多一些cached数据,这就是(cached)(memory)为什么比较大。

         (used)(-buffers/cached):一个应用程序认为系统被用掉多少内存。(used)(-buffers/cached)=(used)(Mem)—(buffers)(Mem)—(cached)(Mem)

         (free)(+buffers/cached):一个应用程序认为系统还有多少内存。(free)(+buffers/cached)=(free)(Mem)+(buffers)(Mem)+(cached)(Mem)

         free命令的数值都是从?proc/meminfo中读取的。 $ free -m是数值的单位为MB,不过数值没有那么详细。可以使用命令($ free -wm)可以得到buffers和cached各自使用的数值。

      pstree:以树状形式显示程序。进程状态的使用方法是(pstree PID)。

      kill:比一个信号发给一个或多个进程,默认为发送终止信号。终止进程的方法是(kill PID)。杀死进程使用方法是(kill -9 PID)。

     pgrep:通过进程和其他属性查找进程。查找进程方法是(pgrep 要查找的进程名称)。

     pkill:通过进程和其他属性发信号给进程。杀死进程是(pkill 要杀死的进程名称)。

     fdisk:创建磁盘分区。

             d(delete):删除一个已存在的分区。

             l(list):列出也存在分区的类型。

            m(menu):列出fdisk中使用的所有命令。

            n(new):添加一个新的分区。

            p(print):列出分区表的内容。

           q(quit):退出fdisk,但是不储存所操纵的变化。

           t(title):改变分区系统的id。

          w(write):退出fdisk,并储存所操纵的变化。

    partprobe:重新初始化内存中内核的分区表。

    mkfs:格式化内存。使用方法是(mkfs.操作过后的对象名 操作对象)。

    e2label:设定或查看一个设备的label名称。查看某个分区的方法是(e2label 操作的对象)。设定命令的方法是(e2label 操作的对象 wg)。

2  进程的信息

    PID:进程id。

    PPID:父进程id。

    RUESR:Real user name。

    UID:进程所有者的用户id。

    USER:进程所有者的信息。

    TTY:启动进程的终端名(不是从终端启动的进程则会显示?)。

    RR:优先级。

    NI:nice值。(负值表示高优先级,正值表示低优先级)。

    P:最后使用的CPU(仅在多CPU环境下有意义)。

    %CPU:上次更新到现在CPU时间占用的百分比。

    TIME:进程使用CPU的时间统计(单位秒)。

    %MEM:进程使用的物理内存百分比。

    VIRT:进程使用的虚拟内存总理(单位KB)。VIRT=SWAP+RES.

    SWAP:进程使用的虚拟内存中被换出的大小(单位KB)。

     RES:进程使用的没有被换出的物理内存大小(单位KB)。RES=CODE+DATA。

     CODE:可执行代码占用的物理内存大小(单位KB)。

     DATA:可执行代码以外部分占用物理内存的大小(单位KB)。

     SHR:共享内存大小(单位KB)。

     nFLT:面页错误的次数。

     nDRT:最后一次写入到现在被修改的次数。

     S:进程状态

                   D=不可中断的睡眠状态。

                   R=运行。

                   S=睡眠。

                   T=跟踪或停止。

                   Z=僵尸进程。

    COMMAND:命令名或命令行。

    WCHAN:若该进程在睡眠,则会显示睡眠中的系统函数名。

    Flags:任务标志,参考sched.h。

3  CPU的利用率与load average

    CPU正常的利用率是<70%的。CPU负载<或=1时,能正常执行。CPU负载>1时,属于超负荷执行。load average应该<或=CPU核数*0.7。CPU负载和CPU利用率过高都是不好的现象。

    为何要有1分钟,5分钟,15分钟三种cpu的负载:是希望我们将他们三个值结合起来看。或者说是展示一个动态图表示的数据。

    进程挂起是自身原因,遇到了I/O的阻塞,便会让出CPU让其他进程去执行,保证CPU一直在运行。

    与进程无关,在操作层面时,有个进程占用CPU过久时,或者需要调用硬盘里的文件时,而会调用其它进程使用CPU。

4  硬盘的相关内容

    在linux系统中,每个设备都会被当一个文件来对待。而他们对应的文件名如下:

                     IDE硬盘:/dev/hd(a-d)

                     SCSI硬盘:/dev/sd(a-p)

                     U盘:/dev/sd(a-p){与SCSI硬盘一样)

                     CDROM:/dev/sr0

    硬盘的结构和分区:硬盘为什么要有分区,更容易管理和控制操作系统,这样系统效率高,更容易备份,可以限制用户使用磁盘份额。

    硬盘主要分为主分区,扩展分区和逻辑分区。一个硬盘上最大可以划分4个主分区,在SCSI磁盘最多可以分15个分区,IDE磁盘可以分63个分区。

     硬盘的逻辑结构:硬盘结构为磁道,块,磁柱和分区。

         块是盘片上访问的最小单位,一个块可以储存一个字节的数据。

         磁道是有一系列的头尾相连块组成的圆圈。

         磁柱是有一叠磁道在相同半径的每个盘面的磁道组成的。

         分区是有一组相邻的磁道组成的。

走入计算机的第七天(关于操作系统的内容)