• Linux


    Linux_system

    <一切皆文件>

                                                    

                                                  

                             <数据类型><数据结构><IO编程><进程线程><网络编程>

     应用                                                 open     read     ioctl     write    close


                                    <VFS机制>

                

             < 进程调度><内存管理><文件系统><设备管理><网络接口>      

                                                   

      <内核驱动>

      (字符设备,块设备,网络设备)


     硬件

    同步是规则,阻塞是等待

    进程调度:

    内存管理:

    文件系统:

         普通文件 [ - ] ,目录文件 [ d ] ,字符设备  [ c ] ,块设备 [ b ] ,套接字  [ s ] ,管道  [ p ] ,链接 [ l ]

    inode索引节点编号:544365
    文件类型         :文件类型是’-‘,表示这是一个普通文件
    文件权限         :rw-r–r– 表示文件可读、可写、可执行,文件所归属的用户组可读可执行,其他用户可读可执行
    硬链接数         :表示a.txt这个文件没有其他的硬链接,因为连接数是1,就是他本身
    文件属主         :表示这个文件所属的用户,这里的意思是a.txt文件被root用户拥有,是第一个root
    文件属组         :表示这个文件所属的用户组,这里表示a.txt文件属于root用户组,是第二个root
             文件大小, 文件大小是3个字节
    文件修改时间  :这里的时间是该文件最后被更新(包括文件创建、内容更新、文件名更新等)的时间可用如下命令查                                  看文件的修改、访问、创建时间

    设备管理:

    网络接口:

    内核驱动:      

           字符设备驱动 (IO,UART,RTC,ADC,PWM......)

                总线设备驱动 (虚拟:platform  物理:IIC,SPI,USB,PCI......)

                输入设备驱动 (绝对,按键,相对)

                pinctrl子系统

                :无缓冲的直接的设备访问,以字节为单位顺序读写,称为裸设备(raw devices)

           块设备的驱动 (硬盘,SD......)

                :有缓冲区的随机设备访问,以扇区为单位随机读写,多为存储设备

           网络设备驱动 (网卡,CAN......)

                :为网卡设计的驱动模型(eth0,eth1)

           


    <笔记>

    1. Linux由汇编和C语言构成 

    2. 根文件系统,是挂载在根目录下的文件系统,是linux内核启动以后第一个加载的文件系统,是其他文件系统的挂载点(mount)

    3. PATH(环境变量):在系统中的任何地方都可以运行都可以用 !

      (PATH =(把绝对路径告知,任何情况都使用)sudo  vim etc/enviroment)

    4. 三大子系统:Bootloader(uboot)—— kernel(linux—3.0.8.tar.bz2)——  根文件系统(独立制作)

            <print—setenv/saveenv—nand—tftp—bootm—go>

    5. 内核中有文件系统接口层,VFS(机制)要求必须有一个根目录  

      接口函数上层提供VFS内核接口,sysopen / sysclose / sysread / syswrite ......

      fopen ——> open ——> sysopen ——> dry_open

    6. file   a.out (工作平台)

    7. 主机与目标机连接 

      UART —— USB —— TCP/IP —— DebugJtag

    8. 交叉编译器
      交叉编译工具链 —> arm—none—linux—guneabi—
      交叉编译工具集 —> readelf — nm — size — strip — strings — objcopy — objdump — addr2line

    9. mmu是一个物理硬件,这样速度快!

    10. (虚拟地址) CPU——>MMU——>Dev (物理地址)

    11.  linux中的同步与异步 :

       同步 : 信号量/自旋锁/原子操作
       解决同步问题 : 对共享资源(共享代码是临界区)的互斥访问,需要对临界区加锁(信号量/自旋锁)。

       信号量(阻塞) :
       信号量(睡眠) : A(down资源)——>B(睡眠)——>A(up资源)——>B(down资源)——>(up信号量)
       信号量只能在进程中使用,不能在中断中使用,可以长期加锁,不能同时使用自旋锁!
       互斥信号量,只有一个资源。
       (信号量可以有多个,自旋锁只能有一个)

       自旋锁(非阻) :
       CPU反复轮巡查看 !
       进程上下文与中断上下文同步 —— 自旋锁

       内核进程与内核进程 : 信号量
       内核进程与中断其他 : 自旋锁
       短期加锁,CPU开销大,不能同时信号量(会睡眠滴),持有时不能二次持有(否则死锁)

    12.  设备树:实现驱动代码与设备信息的分离

          在ARM Linux内,一个.dts(device tree source)文件对应一个ARM的machine;

          ( arch/arm/boot/dts/ ) 

    13.  Linux中文件是一堆二进制码,对内输入,对外输出

    14.  

    Stay hungry, stay foolish 待续。。。
  • 相关阅读:
    PHP curl_exec函数
    PHP curl_escape函数
    PHP curl_error函数
    PHP curl_errno函数
    PHP curl_copy_handle函数
    PHP curl_close函数
    PHP 利用 curl 发送 post get del put patch 请求
    PHP cURL 函数
    PHP 实例
    PHP 实例
  • 原文地址:https://www.cnblogs.com/panda-w/p/11003702.html
Copyright © 2020-2023  润新知