Linux 第九章

发布于:2024-04-30 ⋅ 阅读:(35) ⋅ 点赞:(0)

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数C初学者入门训练题解CC的使用文章「初学」C++linux

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

.gitignore配置文件

调试代码的工具——gdb

冯诺依曼体系结构 

存储分级


.gitignore配置文件

.gitignore配置在创建的git目录中

会拦截特定后缀的文件,这些文件就不会上传到本地仓库

例如

*后面的就是特定的后缀,只要带有这些后缀的文件都不会上传到本地仓库

[BCH@hcss-ecs-6176 linux-test-git]$ cat .gitignore
# Prerequisites
*.d


# Object files
*.o
*.ko
*.obj
*.elf


# Linker output
*.ilk
*.map
*.exp


# Precompiled Headers
*.gch
*.pch


# Libraries
*.lib
*.a
*.la
*.lo


# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib


# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex


# Debug files
*.dSYM/
*.su
*.idb
*.pdb


# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf

调试代码的工具——gdb

GDB(GNU Debugger)是一个功能强大的调试器,用于调试程序,包括 C、C++ 等语言编写的程序,和我们在vs中调试的功能是一样的。

编译程序时启用调试信息:在编译程序时,使用 -g 选项启用调试信息,例如:

gcc -g -o program program.c

必须在编译时,加上-g的选项,这样可以改成debug版本,因为我们编译时默认版本时release版本
release不可调试,debug可调式,如果想要让你的程序被调试,必须加上 -g以debug方式发布!

启动 GDB:在终端中输入以下命令启动 GDB,并指定要调试的程序名称

gdb 可执行文件

查看代码:

l 

设置断点:在代码中设置断点以暂停程序执行,并查看状态。在 GDB 中,可以使用 break (b)命令设置断点,例如:

b number
number是看在行号,每一个断点都有编号

删除断点

d 断点编号

查看断点

info b

运行调试

r

查看变量名和变量地址

(gdb) p i
$3 = 21
(gdb) p sum
$4 = 231
(gdb) p &sum
$5 = (int *) 0x7fffffffe4dc
就是不能一直显示,只能显示当前查看的,不能动态变化

执行程序

n:逐过程
s:逐语句

display常显示查看变量名和变量地址

(gdb) display i
3: i = 21
(gdb) display sum
4: sum = 231
(gdb) display &sum
5: &sum = (int *) 0x7fffffffe4dc
(gdb) n
8                       sum+=i;
5: &sum = (int *) 0x7fffffffe4dc//最前面的5,就是条目编号
4: sum = 231
3: i = 22
(gdb) n
6               for(i=1;i<=total;i++)
5: &sum = (int *) 0x7fffffffe4dc
4: sum = 253
3: i = 22

Set var 变量=某个值:更改变量的值(有可能就会影响整个程序的运行结果)

总结:已经学习了yum、gcc/g++、vim、make/makefile、git、gdb六大工具

冯诺依曼体系结构 

冯·诺依曼体系结构由以下五个主要组成部分组成:

1. 输入设备(Input Device):用于将外部数据或指令输入计算机系统,例如键盘、鼠标、扫描仪等。

2. 输出设备(Output Device):用于将计算机处理后的结果或数据输出给用户或其他设备,例如显示器、打印机、音频设备等。

3. 存储器(Memory):用于存储指令和数据。在冯·诺依曼体系结构中,指令和数据都以二进制形式存储在同一存储器中,并通过地址进行访问。

4. 运算器(Arithmetic Logic Unit, ALU):负责执行各种算术和逻辑运算。它能够对数据进行加、减、乘、除等数学运算,以及逻辑运算如与、或、非等。

5. 控制器(Control Unit):控制器是计算机的指挥中心,负责协调和控制计算机中各个组件的操作。它从存储器中获取指令,并按照指令的内容和顺序控制运算器和其他组件的工作。

这些组成部分共同协作,使得冯·诺依曼计算机能够接收输入数据,对其进行处理,然后将结果输出给用户或其他设备。这种体系结构的优点是结构清晰、易于设计和实现,并且具有良好的扩展性。

linux内核的代码是c语言写的,但是也有一部分汇编语言,x86、x64、AT&T(汇编语句)

存储器:内存

输入设备:键盘、话筒、摄像头、usb、鼠标/ssd、网卡、显卡等

输出设备:喇叭、打印机、磁盘、网卡、显卡等

计算机里面的几乎所有的设备,都有数据存储能力!

cpu这个设备,它的处理数据的速度是非常快的,然后是内存,然后是各种外设(磁盘)

磁盘(以前):是永久存储介质

存储分级

存储器分级通常包括以下几个层级:

1. 寄存器(Registers):寄存器是位于 CPU 内部的最快速、最小容量的存储器。它们直接与 CPU 相连,用于保存当前执行的指令和数据。由于寄存器直接嵌入到 CPU 中,其访问速度非常快。

2. 高速缓存(Cache):高速缓存位于 CPU 相对较近的位置,用于存储最频繁使用的指令和数据。高速缓存分为多级,如 L1 缓存、L2 缓存等,其中 L1 缓存距离 CPU 最近,速度最快,但容量较小;L2 缓存则较远离 CPU,容量较大但速度稍慢。高速缓存的目的是减少来自主存储器的访问次数,从而提高数据访问速度。

3. 主存储器(Main Memory):主存储器存储计算机正在执行的程序和数据。通常用随机存取存储器(Random Access Memory, RAM)来实现,其容量较大但速度相对较慢。主存储器是计算机系统中的核心组件之一。

4. 辅助存储器(Secondary Storage):辅助存储器通常指硬盘驱动器(Hard Disk Drive, HDD)、固态驱动器(Solid State Drive, SSD)等外部设备。辅助存储器的容量更大,价格更低,但速度比主存储器慢得多。它主要用于长期存储数据和程序,以及作为主存储器的扩展。

存储器分级的设计原则是在不同层级之间根据访问速度、容量和成本进行折衷。快速的存储器层级用于保存最频繁使用的数据,而较慢但容量更大的层级用于存储整体数据集。这种分级能够提高数据访问效率,同时降低成本。

 🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸 


网站公告

今日签到

点亮在社区的每一天
去签到