首页 > 其他分享 >20211312徐元琦 学习笔记1

20211312徐元琦 学习笔记1

时间:2023-09-10 20:44:39浏览次数:41  
标签:文件 操作系统 Linux 笔记 20211312 gdb 使用 徐元琦 目录

历史:

Unix是早期的商业化操作系统,诞生于20世纪60年代,最早由AT&T的贝尔实验室开发。它的设计目标是支持多用户和多任务的环境。

Linux是由Linus Torvalds于1991年创建的开源操作系统。它最初是为个人计算机而开发,后来演变成一个广泛的操作系统家族。

联系:

Linux是基于Unix的设计,因此它们共享一些核心概念,如多用户、多任务等。

Linux借用了许多Unix命令和工具,因此在使用上有相似之处,如shell命令。

Linux和Unix都是多用户、多任务的操作系统,适用于服务器和个人计算机。

区别:

Unix是商业操作系统,由多个厂商开发和发布,存在多个不同的版本,如IBM AIX、Sun Solaris等。

Linux是开源操作系统,由全球的开发者社区维护和改进,有众多的发行版,如Ubuntu、Fedora、CentOS等。

Unix通常需要购买许可才能使用,而Linux是免费的,可以自由获取和修改。

Unix通常用于大型服务器和工作站,而Linux可以用于服务器、个人计算机、嵌入式设备等各种用途。

Unix遵循Single UNIX Specification(SUS)标准,而Linux遵循POSIX标准,但没有一个统一的Linux标准。

Linux在虚拟机的应用:

Linux操作系统可以在虚拟化软件中运行,如VirtualBox或VMware。这允许用户在单个物理计算机上运行多个虚拟的Linux操作系统实例。

在大一时,你可能已经学习了在VirtualBox中安装Ubuntu等Linux发行版的过程。在后续学期中,你使用了VMware,但整体虚拟化的概念和应用方式没有太大变化。

Linux的应用:

Linux内核位置: Linux操作系统的内核通常存储在/boot目录中。这是启动时加载的核心组件。

Linux内核映像的三部分:

  • BOOT: 这是引导加载程序,负责启动计算机并加载操作系统。
  • SETUP: 它包含了一些系统设置和初始化信息。
  • Linux Kernel: 这是Linux操作系统的核心部分,包含了操作系统的主要功能和驱动程序。

Linux的三个文件流:

  • stdin(标准输入): 通常与键盘输入相关联,用于接收用户的输入。
  • stdout(标准输出): 通常与屏幕相关联,用于向用户显示信息。
  • stderr(标准错误): 通常也与屏幕相关联,但用于显示错误和警告信息。

常见指令:

  • ls: 列出目录内容。
  • cd: 切换目录。
  • pwd: 显示当前工作目录。
  • touch: 创建文件或更新时间戳。
  • cat: 查看文件内容。
  • cp: 复制文件。
  • mv: 移动或重命名文件。
  • mkdir: 创建目录。
  • rmdir: 删除空目录。
  • rm: 删除文件。
  • ln: 创建文件链接。
  • find: 搜索文件。
  • grep: 搜索文件内容。
  • ssh: 远程登录。
  • gzip: 压缩文件为.gz。
  • gunzip: 解压.gz文件。
  • tar: 打包/解包文件。
  • man: 查看命令手册。
  • zip: 压缩文件为.zip。
  • unzip: 解压.zip文件。

绝对路径:

  • 绝对路径是指从根目录开始的完整路径。
  • 根目录在Linux中通常使用斜杠(/)表示。
  • 绝对路径可以唯一地标识文件或目录的位置,无论当前工作目录在哪里。
  • 例如,/home/user/Documents是一个绝对路径,它指向根目录下的home目录,然后是user目录,再追加Documents目录。
  • 绝对路径可以在命令行中使用,以指定要操作的文件或目录的准确位置。
  • 使用绝对路径可以避免由于当前工作目录的更改而导致路径解析错误的问题。
  • 相对路径是相对于当前工作目录的路径,如果当前工作目录变了,相对路径也会随之变化。
  • 通常情况下,在输入或查看文件时,建议使用绝对路径,以确保准确性和可靠性。

学习笔记:编程背景

Ubuntu中的快捷键和小技巧

快捷键

  • 打开终端:使用 Ctrl + Alt + T 快速打开终端,方便进行命令行操作。
  • 系统监视器:使用 Ctrl + Alt + Delete 或 Ctrl + Alt + Esc 打开系统监视器,查看和管理正在运行的进程和系统性能。
  • 应用程序切换:使用 Alt + Tab 快速切换正在运行的应用程序。
  • 窗口关闭:使用 Ctrl + W 关闭当前应用程序的窗口。
  • 锁定屏幕:使用 Ctrl + Alt + L 锁定屏幕,保护计算机安全。
  • 终端标签页:在终端中使用 Ctrl + Shift + T 打开新的标签页,方便多任务操作。
  • 复制和粘贴:使用 Ctrl + C 复制文本,使用 Ctrl + V 粘贴文本。
  • 进程暂停和恢复:使用 Ctrl + Z 暂停正在运行的进程,使用 fg 命令恢复。

使用小技巧

  • 应用程序搜索:按下Super键(通常是Windows键)并开始输入应用程序名称,以快速启动应用程序。
  • 多工作区:使用 Super + S 查看和管理多个工作区,以更好地组织你的任务。
  • 截屏工具:使用 Print Screen 键或 Super + Shift + S 截取屏幕内容,方便创建屏幕截图。
  • 自定义快捷键:在系统设置中,你可以自定义自己的快捷键,以适应你的工作流程。
  • 命令行技巧:学习一些基本的命令行技巧,如 ls(列出文件和目录)、cp(复制文件和目录)、mv(移动文件和目录)和 rm(删除文件和目录)。
  • 软件包管理:使用 apt 命令来安装、更新和卸载软件包。例如,sudo apt update 用于更新软件包列表,sudo apt install package-name 用于安装软件包。
  • 备份:定期备份你的数据,可以使用工具如Deja Dup或rsync来自动化这个过程。

程序开发流程

开发工具

  • 文本编辑器:Ubuntu提供了多个文本编辑器,包括 vim(命令行文本编辑器)、gedit(图形界面文本编辑器)、emacs(功能强大的文本编辑器)以及 vscode(Visual Studio Code,跨平台的集成开发环境)。
  • 编译工具:使用 gcc 编译器来编译C语言程序。
  • 调试工具:使用 gdb 调试器来调试程序。
  • 项目管理工具:使用 make 工具来编译和管理项目。

编译过程

  1. 编写代码:使用文本编辑器编写程序代码。
  2. 编译代码:使用 gcc 编译器编译代码,生成可执行文件。
  3. 调试程序:使用 gdb 调试器来调试程序,查找和修复错误。
  4. 项目管理:使用 make 工具来管理项目,包括编译和构建过程。

额外信息: 在编程过程中,你可以使用快捷键和命令行工具来提高效率,例如使用 vim 编辑代码,使用 gcc 编译程序,使用 gdb 进行调试。通过备份你的代码和数据,你可以确保在意外情况下不会丢失重要信息。

程序执行底层细节

在Linux中,C程序的执行涉及到底层细节。这包括程序的编译、链接和执行过程。在编写C程序时,需要考虑编译器如何将源代码转换为可执行文件,链接器如何解析共享库,以及操作系统如何加载和执行程序。这些底层细节对于理解程序的运行方式和性能调优非常重要。

链接库

链接库在Linux中扮演着重要的角色。它们包含了程序在运行时需要的函数和数据,分为静态链接库和动态链接库两种类型。静态链接库在编译时将库的代码和数据与可执行文件链接在一起,而动态链接库在运行时从系统的共享库中加载。了解链接库的使用和管理对于程序的开发、维护和分发至关重要。

Makefile

Makefile是用于管理和编译项目的工具。它是一个文本文件,通过make命令读取并按照文件内容对项目进行编译。Makefile由一系列目标项、依赖项和规则组成,可以自动化构建过程,提高开发效率。

GDB调试工具

GDB是Linux下强大的调试工具,可用于分析程序的执行过程,查找和解决错误。以下是一些GDB常用的断点设置指令:

  • (gdb) break 7: 以行号设置断点。
  • (gdb) break function_name: 以函数名设置断点。
  • (gdb) clear 行号: 删除指定行的断点。
  • (gdb) clear 函数名: 删除指定函数的断点。
  • (gdb) delete breakpoints n: 删除指定编号的断点。
  • (gdb) clear: 删除程序中所有的基于行设置的断点。
  • (gdb) delete: 删除程序中所有的断点。
  • (gdb) run: 执行程序。
  • (gdb) n: 单步调试。
  • (gdb) c: 执行到下一个断点。


{{uploading-image-21962.png(uploading...)}}

标签:文件,操作系统,Linux,笔记,20211312,gdb,使用,徐元琦,目录
From: https://www.cnblogs.com/xuyuanqi/p/17691864.html

相关文章

  • 读书笔记1
    读书笔记120211215卢泽第一章-引言1.1系统编程的作用系统编程的目标是有效地利用系统资源来开发应用软件,并为学生提供扎实的专业基础。1.2本书目标本书旨在强化学生的编程背景知识,并涵盖了以下主题:动态数据结构的应用进程概念和进程管理并发编程定时器和定时功......
  • python学习笔记-redis缓存数据库
    一、缓存数据库介绍NoSQL(notonlysql)redis是业界主流的Key-valuenosql数据库之一,和memcached类似redis优点:速度快,每秒可执行大约110000设置操作,81000个/每秒的读取操作支持丰富的数据类型,列表,结合,可排序集合,哈希等操作是原子的二、redis操作安装redisubuntu安装$......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》学习笔记1
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就......
  • 学习笔记1
    第一次学习笔记第一章 知识点 1、系统编程:内存空间用来存放程序和数据,所有的程序必须在内存空间中才能运行。用来容纳操作系统的内存空间叫做系统空间,容纳应用程序的内存空间叫做用户空间。操作系统实现内核提供服务以便使系统程序可以直接访问系统资源。 2、目的:(1)实现U......
  • 学习笔记1
    第一二章知识点归纳系统编程大致内容动态数据库结构进程概念和进程管理并发编程定时器和定时功能信号.信号处理和进程间通信文件系统TCP/IP和网络编程关于Unix/Linux版本信息  Unix系统诞生于20世纪70年代早期,是一种通用的操作系统,大多数Unix系统都是专有的,......
  • SimGCL阅读笔记
    SimGCL论文阅读笔记​ 本篇文章主要讲述了图增强虽然有效果,但是起到的作用很小,然后提出了基于添加均匀的噪声来创建对比视图。这样准确性和效率都会优于原来的方法1.引言部分​ 尽管现在基于结构扰动的图增强具有着很不错的效果,但是性能提升的原因还是不清楚,并且有研究发现,即使......
  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记1
    20211306密码系统设计与实现课程学习笔记1学习任务详情自学教材第1,2章,提交学习笔记知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一......
  • 第一、二章学习笔记
    一、知识点总结第一章Unix和Linux是两个相关但不完全相同的概念。下面是它们的概论知识点总结:Unix:Unix是一种操作系统家族,设计目标是提供一个可移植、多用户、多任务的操作系统。Unix采用了分层架构,将操作系统划分为内核等组件。Unix引入了许多重要的概念和工具,如文件描述符......
  • 《信息安全系统设计与实现》第一周学习笔记
      </d  第一章知识点归纳:1。进程:进程是计算机中正在运行的程序的实例。在操作系统中,每个进程都有自己独立的内存空间和执行环境。进程可以包含一个或多个线程,每个线程执行进程的一部分任务。进程之间是相互独立的,它们通过进程间通信(IPC)来进行数据交换和协调。每个进程......
  • 《信息安全系统设计与实现》第一周学习笔记
    《信息安全系统设计与实现》第一周学习笔记第一章摘要本章介绍了Unix的历史,包括贝尔实验室开发的Unix早期版本以及其他版本。此外,还介绍了Linux的开发及其各种发行版本,列出了适用于Linux的开发的各种硬件平台和虚拟机,并展示了如何将UbuntuLinux同时安装到MicrosoftWindows......