Linux系统基础原理

一些基础知识补充(很零散,日后慢慢补充和加以扩展)

  1、一个计算机的组成部分

    硬件、内核(kernel)、库(库调用)、(系统调用)、应用程序

      说明:

        调用——去载入本人事先编辑好的功能模块,例如函数。系统调用的意思就是把应用程序的请求传递给内核,调用相应的内核函数完成所需的处理,将处理的结果返回给函数

 

  2、CPU的指令

    (1)特权指令:只有内核才能够运行,完成硬件的一些工作

    (2)用户指令:用户程序使用的指令,用户要想使用特权指令,需通过系统调用

  

  3、用户空间和内核空间

    linux操作系统和驱动程序运行在内核空间,而应用程序运行在用户空间。一旦用户模式中的指令发起了系统调用,则CPU运行在在了内核模式下,此时为内核空间。

 

  4、内核的功用

    我们所说的内核模式就是整个操作系统在进行下面这些功能的运行

    (1)进程管理   (2)文件系统  (3)网络功能  (4)驱动管理  (5)安全功能

 

进程

  1、process进程

    含义:通常进程就是脚本读取文件的一个副本所运行的一个程序

    存在生命周期:从创建到结束

  2、进程创建

    当一个系统启动时,先把内核放在CPU上执行,内核运行完后,由内核负责启动jinchegn,创建出第一个进程,通常是init进程,内核创建完init进程后,内核空间没有了,用户空间创造出来了,然后除了特权指令,都由init来创建进其他用户进程。

  

  3、init

    1)进程都由其父进程创建,主要两个步骤是fork()和clone()。意思大概就是新进程的创建是在内存中为新进程创建一个task_struct结构,然后将父进程的task_struct内容复制其中。(暂时缺乏足够的理解)

  2)进程优先级

    前提:进程是要执行的一个活动,主要是由CPU来执行,当有多个进程时,就有一个处理先后的过程。

    0-139

      a)1-99 :实时优先级,越大越优先

      b)100-139:静态优先级,越小越优先

    NICE值

      用户用过调整进程的NICE值来改变进程的100-139的优先级

      -20-19,:对应的100-139

  3)进程内存的理解

     1、假设:物理内存(是主机内存条的内存)只有一个,CPU只有一颗,当前系统运行多个进程,进程的执行是先内存存数据和指令,再通过CPU进行执行,那么内存是怎样合理划分内存来存放多个进程的呢?对于所有进程包括内存,不会直接访问硬件,而是通过内核来分配资源,内核自己占用一定内存,剩下的给进程使用,内核把剩余内存切割成固定大小的片段(不精确)——page frame,内核分配内存时,寻找空闲页框给进程,整个物理内存由大量页框组成,多个不连续的页框被分配给某进程使用,称为虚拟内存。

        page frame:页框,用来存储页面数据

     2、线性地址空间:进程以为自己能够占用的内存空间,进程只能够访问线性的,而不能访问物理的

      物理地址空间:和线性是离散对应的,参考页框。和线性地址是一个映射的关系

   

    3、MMU :Memory Mangement

    Unit: 内存管理单元,当一个进程被加载至cpu上运行时,把它的映射关系放在MMU这个芯片上,负责完成地址的实时转换,即把虚拟地质转换为物理地址,分配给进程所需要的内存使用

 

    4、IPC:Inter Process Conmunication,进程间通信

     a)同一主机上:

        signal:信号

        shm:shared memmory,共享内存

      b)不同主机上

        rpc:remote process call,远程过程调用

        socket:套接字

  3)进程类型

    1、守护进程:在系统引导过程中的启动的进程,与终端无关

    2、用户进程:与终端相关,通过终端启动

  4)进程的状态

   运行态:running,有分给内存运行
            就绪态:ready,未分给内存
            睡眠态:
                可中断:interruptable
                不可中断:uninterruptable
            停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
            僵死态:zombie

        5)进程的分类:
            CPU-Bound :非交互型的,占用内存多
            IO-Bound :交互型的

  

 

posted @ 2017-06-30 09:44  FernLi  阅读(677)  评论(0编辑  收藏  举报