• linux笔记


    1.内核 

      

       1)系统调用接口

      SCI 层提供了某些机制执行从用户空间到内核的函数调用。正如前面讨论的一样,这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。

     2)进程管理

      进程管理的重点是进程的执行。在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU寄存器)。在用户空间,通常使用进程 这个术语,不过 Linux 实现并没有区分这两个概念(进程和线程)。内核通过 SCI 提供了一个应用程序编程接口API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。
    进程管理还包括处理活动进程之间共享 CPU 的需求。内核实现了一种新型的调度算法,不管有多少个线程在竞争 CPU,这种算法都可以在固定时间内进行操作。这种算法就称为 O⑴ 调度程序,这个名字就表示它调度多个线程所使用的时间和调度一个线程所使用的时间是相同的。O⑴ 调度程序也可以支持多处理器(称为对称多处理器或 SMP)。您可以在 ./linux/kernel 中找到进程管理源代码,在 ./linux/arch 中可以找到依赖于体系结构的源代码。

     3)内存管理

      内核所管理的另外一个重要资源是内存。为了提高效率,如果由硬
    VFS 在用户和文件系统之间提供了一个交换层 VFS 在用户和文件系统之间提供了一个交换层
    管理虚拟内存,内存是按照所谓的内存页 方式进行管理的(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
    不过内存管理要管理的可不止 4KB缓冲区。Linux 提供了对 4KB缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。
    为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理源代码可以在 ./linux/mm 中找到。

     4)虚拟文件系统

      虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。
    VFS 在用户和文件系统之间提供了一个交换层
    在 VFS 上面,是对诸如 open、close、read 和 write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。
    文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。
     
    2.ls  -l
      文件类型
        -:普通文件(f)
        d:目录文件
        b: 块设备文件(block)
        c: 字符设备文件(chacracter)
        l:  符号链接文件(symbolic link file)
        p: 命令管道文件(pipe)
        s:套接字文件(socket)
      文件权限    9位 每3位一组
      文件硬链接的次数
      文件的属主
      文件的属组
      文件的大小(默认单位是字节)
      时间戳(timestamp) 最近一次被修改的时间
        三个时间戳--
          访问(access)
          修改(modify):文件的内容
          改变(change):文件的属性数据,也叫文件的元数据metadate
      文件名
    -h humanreadable
    -a 显示以 .开头的隐藏文件
    -d 显示目录自身属性
    -i index node ,inode 每个文件唯一的索引节点号
    -r 逆序显示
    -R 递归(recursive)显示
     
    3.cd
     cd ~username 进入指定用户的家目录
     cd - 当前目录和前一次所在目录来回切换
     
    命令类型
      内置命令(shell内置) builtin
      外部命令:在文件系统的某个路径下有一个与命令名称相对应的可执行文件
    4.type:显示命令属于能类型
     
    环境变量:命名的内存空间
      变量赋值
        NAME=jerry  (在内存中找个空间,命名为name ,把jerry 值放在这个空间上)
    printenv  查看环境变量
    hash  缓冲  记录所有用过的命令  下次用命令时直接从hash 键值对数据库   查找速度  O(1)   (O(1) 指的是算法需要的时间与问题的规模 n 没有关系,即问题规模变大时,算法需要的时间并不变化。)
     
    5.date  系统时钟
      clock 硬件时钟 hwclock
    6.获得命令帮助
      内部命令:help  CMMAND  help cd
      外部命令:COMMAND --help
    命令手册:mannual
      man COMMAND
      whatis COMMAND  显示命令的摘要信息以及出现在那些章节中
      man分章节
        1:用户命令(/bin , /usr/bin, /usr/local/bin)
        2:系统调用 man 2 read
        3: 库文件
        4:特殊文件(设备文件:作为设备的访问入口存在)
        5:文件格式  man 5 passwd (配置文件的语法)
        6:游戏
        7:杂项(Miscellaneous)
        8:管理命令(/sbin, /usr/sbin, /usr/local/sbin) 只有管理员可以用,修改硬件参数,系统级别的配置 mount
    <>必须给出的内容
    ...可以出现多次
    | 多选一
    [] 可选
    {} 分组,无特殊意义
     SYNOPSIS 用法说明
      翻屏  :
        向后翻一屏 :space键
        向前翻一屏: b
        向后一行: enter键
        向前一行: k
      查找: 
          /keyword 向后
              n: 下一个
              N:上一个
          ?keyword 向前
        
        
     
    7.乱码 export LANG=en
      
  • 相关阅读:
    LeetCode 32.使数组唯一的最小增量
    LeetCode 31. 最小的k个数 快速排序+堆排序+二叉搜索树
    LeetCode 30. 最长回文串
    LeetCode 29. 矩形重叠 反向思维
    LeetCode 28. 拼写单词 HashMap赋值给另一个HashMap
    LeetCode 27. 字符串压缩
    Java SSM Spring+Spring MVC+Mybatis整合
    LeetCode 26.岛屿的最大面积 DFS深度遍历问题
    LeetCode 25.最长上升子序列 动态规划
    LeetCode 24.找出数组中出现次数大于二分之一数组长度的数
  • 原文地址:https://www.cnblogs.com/jycjy/p/6835766.html
Copyright © 2020-2023  润新知