小马哥Linux笔记

这篇博客深入探讨了计算机的主要部件,包括CPU、内存和I/O,并详细介绍了Linux的发展历程,从Unix到Linux的衍变以及各种Linux发行版。文章还涵盖了操作系统的基本概念,如进程调度和文件系统,并解析了Linux的基础知识,如Shell命令和文件管理。此外,讨论了Linux文件系统的特性,如文件类型的区分和路径规则。
摘要由CSDN通过智能技术生成

计算机主要部件

  • CPU:运算器,控制器,寄存器
  • Memory:RAM
  • I/O:Input,Output

计算机CPU的基础内容讲解

  • 8bit = 1 Byte
  • 2^10Byte = 1KB
  • 2^20Byte = 1MB
  • 2^30Byte = 1GB

CPU通过地址总线来控制读取内存,CPU是一个指令的流水线运行器。CPU和每个设备都有自己的控制器,通过控制总线来控制。
程序 :指令 + 数据
编译器:把面向对象的语言转化成计算机语言
电脑开机后,计算机自举,即读取内存中特定地址的程序。

SysV
  • IBM: Power,PowerPC,AIX
  • SUN: Sparc,SunOS –> Solaris,OpenSolris
  • HP: Alpha,HP-UX
CPU的常见平台
  • PowerPC(简化版的Power)
  • Sparc,UltraSparc
  • Alpha
  • x86
  • x86_64(amd64)
  • MIPS
  • ARM(只提供设计规范)
二进制代码:指令
  • 每一种芯片生产时所能执行的命令都是二进制的,二进制代码;汇编器把二进制代码转化成人所能理解的汇编语言(微码语言)。所以不同的芯片,汇编器的转换方式也不同。所以不同的芯片编写的程序需要移植。
  • 高级语言编程,如C语言。C语言经过预处理,编译,汇编,链接后被CPU执行。
  • 调用:库,基本提供标准库。

操作系统发展进程

Windows
  • Windows最开始基于DOS(性能很差);
  • WindowsNT;
  • IBM,OS/2 –> Vista;
  • WindowsXP
  • Windows7
  • WIndows8
  • Windows10
BSD Unix的衍生系统(修改Unix)
Unix开放时期,衍生出了BSD系统。 最后一个版本:BSD Lite BSD Lite的衍生版本:
FreeBSD(x86可运行) –> MAC OS, ios
NetBSD
OpenBSD(最安全)
Unix –> Linux(仿Unix)

Unix商业化后不公开免费了

  • Minix,基于微内核,仿照Unix,不公开
  • MIT:Stallman,倡导Freedom;建立GNU组织
  • GNU:Gnu is not Unix;反抗Unix的不开源协议
  • Linus: Linux(核心)
  • GNU/Linux:Linux + GNU提供的外设
  • Linux使用C语言写的,源代码公开
Linux发行版
版本号:

major(主版本号).minor(次版本号).release(修订次数)

  • Debian
    • Ubuntu(基于Debian的二次发行版)
  • Slackware
    • s.u.s.E
  • Redhat
    • Redhat 9 –> Fedora
    • RHEL:RedHat Enterprise Linux 3
  • CentOs: Community ENTerprise OS,基于RedHat发行的源代码发行的
  • ArchLinux
  • Gentoo

操作系统

操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口:

  • 进程调度
  • 文件系统
  • 网络协议栈
  • 内存管理
  • 驱动程序
  • 安全功能

API(库) : Application Programming Interface,应用开发可使用库
ABI(应用二进制接口):Application Binary Interface,操作系统提供的运行环境

Linux:
API : syscall, libcall
ABI : 程序执行所需的环境

POSIX API: Portable OS (库接口协议)

.os : Shared Object (Linux)
.dll : Dynamic Link Labraries (Windows)

静态链接:程序编译后包含所用的库,任何地方都可用,但体积过大;
动态链接:程序编译后不包含所有的库,兼容性不高,但体积轻便;

自由软件
FSF : Free Software Fundation
ASF : Apache Software Fundation
定义:自由学习,自由修改源代码,可以处于任何目的获取源代码,自由分发源代码,自由创建衍生版。
开源协议GPL:通用公共许可证 GPLv2,GPLv3;(一旦沾边,程序开源) LGPL:Lesser GPL;(做衍生版,程序必须开源;调用不用开源) BSD
如果二次发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
如果二次发布的产品知识二进制格式的类库或程序,则需要在文档或版权声明中包含原来的BSD协议;
不可以用开源代码的作者或者组织和原来的产品名字做市场推广;

Apache License:
Copyright
Copyleft

Linux基础知识

发行版 : 各种开源程序 + Linux内核
Android: Linux + jvm(Java虚拟机) + Java程序
IOS: FreeBSD + Object(Swift)

Linux的基本法则

  • 一切皆文件(包括硬件);
  • 由众多单一目的小程序组成;
  • 组合小程序完成复杂任务;
  • 尽可能避免捕获用户接口,方面实现脚本编程以实现自动化执行;
  • 使用文本文件保存程序的配置数据,使用一个文本编辑器即可完成系统及服务配置工作;
Linux的基本层次
1 运行程序:通知内核把某应用程序调度至硬件执行其指令

2 用户接口:

  • CLI(命令提示符):
    • shell: sh,csh,ksh,bash,zsh,tcsh
  • GUI(图形界面):
    • Gnome,c语言,gtk
    • KDE,c++,qt
    • xfce,轻量级
3 硬件 –> 操作系统 –> API –> 应用程序

终端分类:

  • 虚拟终端(程序): Ctrl+Alt+F[1-6] tty表示为:/dev/tty#
  • 图形终端: Ctrl+Alt+F7 第一次启动要用startx &startx – :2 &
  • 伪终端: 使用ssh远程连接;在图形界面下打开的命令提示符;tty表示为:/dev/pts/#
  • 物理终端(控制台 console):tty表示为:/dev/console
  • 串行终端:tty表示为:/dev/ttyS#

终端命令总结: : ifconfig,tty,ls,startx,echo

计算机基本知识

总线

  • 地址总线:寻址
  • 控制总线:
  • 数据总线:
  • 最新总线结构:
    - AMD:HT;
    - INTEL:QPI

缓存

  • 寄存器
  • 一级缓存,二级缓存,cache,buffer
  • 内存

IO:controller(adapter),device
协议:SATA,IDE等等;

Shell

mkdir:创建目录
ifconfig:查看网络信息
tty:查看终端状态
ls:文件目录

命令提示符:prompt,由shell提供
管理员:#
普通用户:$

Linux的文件系统:

  • Linux严格区分大小写
  • 一个目录:一个名称空间,不能重名;
  • 相对路径:从非顶级名称空间起始的路径;
  • 绝对路径:从顶级名称空间(root)起始标记的路径;
    • rootfs
登陆系统之后:
工作目录:working directory;
当前目录:current directory;
家目录
命令

命令提示符下格式: COMMAND [OPTIONS] [ARGUMENTS]

命令提示符下可输入的内容:

  • 命令
    • 内建命令:shell程序自带的命令
    • 外部命令:本身是一个独立的可执行程序文件,命令名即为程序文件名,
      - 查找方式:通过shell的内置环境变量PATH中制定的路径变量;
    • 区分方法:type COMMAND
  • 应用程序
  • 脚本文件

echo $PATH 显示当前的环境变量的值
基本的环境变量路径值: PATH=/bin:/sbin:/usr/bin:usr/sbin

选项

短选项: -char,例如, -l,-d,-h
- 多个选项间要使用空白分隔符: -l -d -h
- 合并使用: -ldh
长选项: –word,例如, –long, –directory, –human-readable
- 长选项一般不能合并使用
注意:有些选项需要带参数,称为选项参数, mkfs -t ext4

参数:命令的作用对象
cd: change directory
cd ~USERNAME:切换到指定用户家目录
cd DIRECTORY :切换到制定目录
cd - :在前一个目录和当前目录之间反复切换
两个独特的路径:cd .. :返回一级目录; cd . :当前目录

pwd: print working directory 打印当前目录

bash特性之一:

  • history:显示历史命令
  • Ctrl + c:终止当前命令的执行
  • echo $HISTORYSIZE:保存历史命令的条数变量
  • echo $HISTORYFILE:保存历史命令文件路径参数

Linux中所有以 . 开头的文件都是隐藏文件,用选项 -a 或者 -A 可以查看。

cat FILE : 查看文件
help COMMAND:查看内建命令用法
COMMAND –help:外部命令简要说明
man COMMAND:命令的详细说要说明

bash调用命令列表中的命令:

  • !#:执行命令历史中的第#条命令
  • !!:执行上一条命令
  • !string:执行最近一条以string开头的命令

Bush

  • hash:查看缓存使用过的地址,可用help查看命令使用帮助
  • 命令补全:根据内建命令或外部命令的查找方式查找以用户指定的字符串开头的命令。如果用户指定的开头字符串能唯一标识某一命令,则tab键可补全此命令。否则两次tab键显示所有指定字符串开头的命令。
  • 路径补全:tab
  • bash命令历史
    • HISTSIZE
    • HISTFILE
    • HISTFILESIZE
    • HISTCONTROL:
      • ignoredups:忽略重复的命令
      • ignorespace:忽略以空白字符打头的命令
      • ignoreboth:以上二者都生效
  • data
  • hwclock
  • ntp
  • reboot
  • halt
  • who
  • whoami
  • which

Lunix

Linux文件系统的基础特征

1.文件名区分大小写
2.所有文件都位于根目录下,FHS
3.路劲以/作为分隔符
4.每个路径的名称处理/之外不能超过255个字符

绝对路径可以分为基名和目录名:
- 基名:basemane
- 目录名:dirname

FHS:Filesystem Hierarchy Standard
具体自行下载 fhs 文件查看,百度搜索即可。
- /bin(所有用户都可以用),/sbin(只有管理员可以用):系统自身会用到的核心二进制命令;
- /usr/bin,/usr/sbin:系统运行中,用户可能用到的命令;
- /lib:共享库文件和内核文件
- /etc:主机特有的配置文件
-/dev:所有设备文件都存放再这里,设备文件通常也称为特殊文件(只有语言数据,没有数据)
- /proc:伪文件系统:内核和进程信息的虚拟文件系统接口
- /sys:为文件系统:硬件设备信息虚拟文件系统接口
- /boot:系统引导加载时用到的静态文件:
- 内核,ramdisk(CentOS5:initrd,Cent)S6:initramfs),grub(bootloader)
- /home/USRENAME
- /root
- /mnt
- /media
- /srv:服务所用的数据
- /tmp:临时文件的存放目录
- /var:经常发生变化的文件
- /var/log
- /var/account
- /var/cache
- ……
- /misc:杂项目录,备用目录
- /net:
- /opt:第三方应用程序的安装目录(早期)
- /usr/local:第三方应用程序的安装目录(现在)
- /selinux:Security Enhanced Linux:安全加强的linux,内核工作机制

文件管理类命令
  • 文件类型
  • 文件信息查看
  • 用户和权限
  • bash的一些特性
    • 管道和重定向
    • 文件本编辑器
    • 正则表达式
    • 文件查找

文件类型:ls -l 查看时每个文件第一个字符表面文件类型
- 普通文件:-
- 目录文件:d
- 符号链接文件:l,后面有箭头指向
- 设备文件:
- 字符设备:c,线性设备
- 块设备:b,随机设备,例如硬盘
- 命名管道:f
- 套接字文件:s ,unix sock

文件类型查看:命令:file 文件路径

目录管理
- cd,pwd,ls
- mkdir:make directory
- rmdir:remove directory

  • 安装tree

  • ls:ls [option] [file]

  • ls -l:

    • 例子:drwxr-xr-x. 2 root root 4096 Feb 12 09:55 accout
    • 左起第一位:文件类型
    • 后面9位:权限,常称mode
      • r读,w写,x执行
    • .:表示文件有隐藏属性,lsattr可查看
    • 数字:此文件被硬件连接的次数
    • 属主:owner,文件拥有者
    • 属组:group,文件所属的组
    • 4096:文件大小,单位是字节
    • 文件最近一次被修改的时间
    • 文件名

    文件管理类的命令

    • 查看:cat,tac,head,tail,less,more
    • 时间戳管理:touch
    • 复制:cp
    • 移动:mv
    • 查看元数据属性:stat
    • 文本编辑器:nano,vi
小马哥stm32f1源文件是指由小马哥团队开发的针对STMicroelectronics的STM32F1系列微控制器的源代码文件。 STM32F1系列微控制器是STMicroelectronics推出的一款32位ARM Cortex-M3内核的单片机产品系列,它具有高性能、低功耗和丰富的外设资源等特点,广泛应用于各种嵌入式系统中。 小马哥团队开发的STM32F1源文件包含了各种驱动库、示例代码和应用程序,用于简化开发者在STM32F1系列微控制器上进行软件开发的过程。这些源文件提供了丰富的功能和接口,包括GPIO(通用输入输出)、USART(串行通信接口)、SPI(串行外围设备接口)、I2C(串行总线接口)等,开发者可以根据自己的需求选择适合的源文件进行开发。 通过使用小马哥stm32f1源文件,开发者可以更加便捷地进行STM32F1系列微控制器的项目开发。开发者可以根据自己的需求使用源文件中提供的函数和驱动库,以实现各种功能,如控制外部设备、接收传感器数据、实现通信等等。同时,源文件中的示例代码也提供了一些常用的应用案例,方便开发者了解和学习。 小马哥stm32f1源文件的开发团队专注于为开发者提供高质量的开发工具和开发资源,以帮助开发者更好地利用STM32F1系列微控制器进行嵌入式系统开发。这些源文件的开发和维护不仅提升了开发效率,还提供了更好的可靠性和稳定性,为开发者的项目成功实施提供了有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值