20201330马榕辰第一,二章学习笔记

news/2024/4/29 16:14:46/文章来源:https://www.cnblogs.com/MRC-/p/16656423.html

第一章:

 

一.知识点归纳:

第一章前半部分重在介绍课程和书本的基本情况,包括Unix  /  Linux的历史,其各种发行版,我了解到了一些基本情况。

后半部分主要是 Linux的使用,Linux的启动过程,Unix/Linux文件系统组织、文件类型和常用的Unix/Linux命令,Linux系统的一些系统管理任务等相关内容。

 

二.学到了什么?(收获)

1.Linux内核映像:内核是与计算机接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。

2.登录进程:各登录进程将在终端上打开三个文件流:stdin(用于输入),stdout(用于输出),stderr(用于错误输出)

3.Ubuntu Linux的特性:用户应为普通用户,不是根用户或者超级用户,运行任何特权命令,用户需输入 sudo command,会验证用户密码。

用户的路径环境变量设置不包括用户的当前目录,在当前目录下、运行程序,每次需输入./a.out。方便起见应更改路径设置。

4.Unix/Linux文件系统组织:文件类型有目录文件、非目录文件(常规文件和特殊文件(字符特殊文件与块特殊文件))、符号链接文件。

5.Ubuntu Linux系统管理:(1)用户账户:当用户使用登录名和密码登录后,登录进程将通过获取用户的gid和uid来转换成用户进程,并将目录更改为用户的homeDir,然后执行列出的initialProgram,该程序通常为命令解释程序sh。(2)sudo命令:在Ubuntu里,sudo(“超级用户执行”)允许用户以另一个用户(通常是超级用户)的身份执行命令,为确保用户能够发出sudo,只需在sudoers文件中添加一行:username ALL(ALL) ALL。

 

第二章:

一.知识点归纳:

第二章主要知识点:

1.介绍了基于GUI的文本编辑器;

2.展示了如何在命令和GUI模式下使用EMACS编辑器来编辑、编译和执行C语言程序;

3.阐述了程序开发的步骤;

4.详细阐释了函数调用惯例和运行时堆栈的使用;

5.展示了C语言程序与汇编代码的链接;

6.讨论了GUNmake工具编写makefile;

7.对如何使用GDB调试工具调试C语言程序给出回答,并防止出现调试过程中出现的常见错误;

8.复习了C语言中的结构和指针。以及数据结构中的二叉树模拟Unix/Linux文件系统树中的操作等。

 

二.学到了什么?(收获)

1.Linux中的文本编辑器:有三个文本编辑器,vim、gedit和EMACS。vim有三种不同的操作模式:命令模式、插入模式和末行模式,vim启动时处于默认的命令模式;gedit是GNOME桌面环境默认的文本编辑器;EMACS(GUN EMACS 2015)是强大的文件编辑器,可以在很多不同的平台上运行。

2.C语言程序变量:全局变量、局部变量、静态变量、自动变量和寄存器变量

3.程序开发步骤

(1)创建源文件:使用文本编辑器创建一个或多个程序源文件

(2)用gcc把源文件转换成二进制可执行文件;

(3)完成gcc三大步骤:1.将C源文件转换为汇编代码文件;2.把汇编代码转换成目标代码;3.执行链接器:将.o文件的所有代码段组合成单一代码段,再将所有数据段组合成单一数据段,最后将所有BSS段组合成单一bss段,用.o文件中的重定位信息调整组合代码段中的指针以及组合数据段、bss段中的偏移量,便于用符号表来解析各个.o文件之间的交叉引用。

4.创建二进制可执行文件的方式:静态链接和动态链接。其中动态链接的优点是:可减小每个a.out文件的大小;许多执行程序可在内存中共享相同的库函数;修改库函数不需要重新编译源文件。

5.大部分C编译器和链接器可生成多种不同格式的可执行文件:(1)二进制可执行平面文件;(2)a.out可执行文件;(a.out文件的内容包括文件头、代码段、数据段和符号表)(3)ELF可执行文件。

6.a.out文件包括文件头,代码段(该代码调用main()函数),数据段,符号表。

7.程序执行过程

(1)读取a.out文件头,确定所需的总内存大小,包括堆栈空间大小;

(2)sh从总大小中分配一个内存区给执行映像。

(3)sh放弃旧映像,开启新映像·

(4)执行从crt0.o开始,调用mian(),将argc和argv作为参数传递给miain();

8.正在执行a.out的进程终止方式有正常终止和异常终止(传递异常信号)。

9.Makefile:一个make文件由一系列目标项(创建或更新的文件,也可能是make程序要引用的指令或标签)、依赖项和规则(使用依赖项列表构建目标项所需的命令)组成。

10.C语言结构体的属性:(1)定义C语言结构体时,该结构体的每个字段都必须具有一个编译器已知的类型,但自引用的指针除外;(2)每个C语言结构体数据对象都分配了一个连续内存块;(3)一个结构体的大小可以由sizeof(struct type)确定;(4)假设“NODE x,y;”为两个相同类型的结构体;(5)C语言联合体与结构体类似。

11.C语言程序中常见的错误:(1)未初始化的指针或含有错误值的指针;(2)数组下标越界;(3)字符串指针和char数组使用不当;(4)assert宏

12.链表基本操作如遍历,插入,搜索等;

13.二叉树基本内容,操作方式;

 

三.问题与解决方式:

问题:makefile的相关内容不能理解,makefile是什么,有什么作用,怎么用;

思路:通过查资料先明白makefile到底是什么,它的目的作用到底是什么,在逐步了解它的主要内容,主要特性,操作方式等

结果:查找到资料makefile的定义:一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,也可以执行操作系统的命令。再具体去了解其余问题       https://blog.csdn.net/nb_zsy/article/details/123082082;

 

 四.实践代码,截图:

简单C语言程序再Linux系统文件中编辑

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5557.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20201306吴龙灿学习笔记

一、知识点归纳: 第一章:引言 主要内容: 第一章是本书的引子,因为本书意在让我们学会Unix以及Linux相关只是,在高级语言的基础上进一步学习创造编程平台的基本语言,让我们学会硬件设备怎么样跟我们所熟知的软件设备取得联系。第一章讲述了我们如何利用本书学好系统编程,…

第二章 操作系统基本原理(操作系统知识)

一:操作系统概述 二:进程管理 PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。 三:存储管理四:文件管理五:作业管理六:设备管理

opencv入门四

目录鼠标操作与响应图像像素归一化类型转换图像放缩插值鼠标操作与响应 static void on_draw(int event, int x, int y, int flags, void* userobj) {Mat image *(Mat*)userobj;if (event EVENT_LBUTTONDOWN) {//鼠标点击时 sp.x x;sp.y y;std::cout << "star…

预科知识1-MarkDown语法

MarkDown语法的基本操作markdown 标题 方法:#(几个)+空格+内容 三级标题 四级标题 字体 方法:加粗(2个星号 内容 2个星号) 斜体(1个星号 内容 1个星号) 加粗斜体(3个星号 内容 3个星号) 删除线(2个波浪 内容 2个波浪) hello world hello world …

在线教育项目【前端路由和Ajax实现分析与后端连接分析】

目录 1&#xff0c;前端路由实现分析 1.1&#xff1a;入口文件中调用路由 1.2&#xff1a;定义路由模块 1.3&#xff1a;编写路由模块文件 1.3.1&#xff1a;配置一个或者多个子路由 1.3.2&#xff1a;编写教师路由对应的文件 2&#xff0c;后端接口分析&#xff08;与后…

查询数字的最邻近

这道题目要用二分+桶排的方式解决 函数: l~r找v c:靠左/右(‘l’/‘r’) 靠左和靠右用STL函数二分就行,这里讲一下思路,二分出最靠左/右的v值(but二维,在but[v][0~len]区间二分)再判断是否在区间内在区间内输出but[v][a](a为二分的答案)否则输出-1。 最后再考虑一下需要…

注解Annotation

注解是一种引用数据类型,重点掌握Deprecated(表示已过时),Override(表示重写)。 元注解是用来标注注解类型的注解如Target(用来标注注解可以出现在哪些位置)、Retention(用来标注最终保存到哪里)。 package com.javastudy.example13;import java.lang.annotation.Ann…

计算机毕业设计php+vue基于微信小程序的员工宿舍报修系统

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

神奇的卡尔曼滤波,目标追踪的福音

前言 卡尔曼滤波算法由匈牙利数学家Kalman提出&#xff0c;主要基于线性系统提出。这里我们将其用于汽车跟踪&#xff0c;并对其基本原理进行介绍。 神奇的卡尔曼滤波&#xff0c;目标追踪的福音 1. 背景知识 1.1 时间序列模型 1.2. 滤波 1.3. 线性动态系统 2. 卡尔曼滤波…

python生成PDF报告

如何使用Python制作pdf文档&#xff1f; PDF报告生成软件开发&#xff08;学习记录&#xff09; Python生成图文并茂的PDF报告 官方用户手册 字体下载注册问题 在windows找到字体文件&#xff1a;C:\Windows\Fonts 在你的python环境引入字体 D:\devementtool\Anaconda3-202…

Java并发 JUC工具类:Semaphore详解

文章目录Semaphore源码分析类的继承关系类的内部类类的内部类 - Sync类类的内部类 - NonfairSync类类的内部类 - FairSync类类的属性类的构造函数核心函数分析 - acquire函数核心函数分析 - release函数Semaphore 示例更深入理解单独使用Semaphore是不会使用到AQS的条件队列的场…

USB4 V2.0即将发布,速度高达80Gbps

关注星标公众号&#xff0c;不错过精彩内容作者 | strongerHuang微信公众号 | strongerHuang2019年3月初&#xff0c;USB-IF组织官方宣布了下一代 USB4.2019年9月3日&#xff0c;USB-IF组织正式发布 USB4(现在称USB4 V1.0)规范。最近&#xff0c;也就是2022年9月1日&#xff0c…

推荐系统中的特征工程

摘要&#xff1a;深度学习时期&#xff0c;与CV、语音、NLP领域不同&#xff0c;搜推广场景下特征工程仍然对业务效果具有很大的影响&#xff0c;并且占据了算法工程师的很多精力。数据决定了效果的上限&#xff0c;算法只能决定逼近上限的程度&#xff0c;而特征工程则是数据与…

uniapp 之 获取底部安全距离,状态栏高度等

特定样式注意点固定底部按钮自定义顶部导航栏其他工作中我们常常需要设置一些特定样式&#xff1a; 固定底部按钮自定义顶部导航栏…… 固定底部按钮 这里需要注意的是&#xff0c;真机运行时底部时IOS是存在安全距离的&#xff0c;这个时候就需要我们处理一下 .u-fixed-b …

Echarts y轴相关配置

目录1 简介2 y轴配置2.1 y轴主要属性2.2 y轴刻度设置3.总结1 简介 本篇介绍我们在使用Echarts画图时常用的一些y轴坐标设置&#xff0c;如y轴位置&#xff0c;y轴偏移量、y轴刻度、y轴最大最小值等&#xff1b; 2 y轴配置 2.1 y轴主要属性 只有一个纵坐标的情况下&#xff0…

TLM通信总结1

事务级建模 (TLM) 用于模块之间的通信。 TLM 是实现基于事务的方法的概念,这些方法可用于模块之间的通信。 UVM TLM UVM 为 TLM 库提供事务级接口,ports,exports,imp ports,and analysis ports。所有这些 TLM 元素都需要发送事务、接收事务以及从一个组件传输到另一个组件…

STM32物联网项目-程序框架思想

程序框架思想 一、程序框架的构想 1、STM32cubeMX生成的代码与添加的应用代码分离; 2、利用STM32cubeMX重新生成代码&#xff0c;不影响应用代码; 3、应用代码的添加&#xff0c;移除与修改&#xff0c;不影响cube生成的代码; 4、代码架构方便阅读&#xff0c;编辑&#x…

领域最全!多传感器融合方法综述!(Camera/Lidar/Radar等多源异构数据)

点击进入→自动驾驶之心技术交流群 后台回复【ECCV2022】获取ECCV2022所有自动驾驶方向论文! 自动驾驶中的多传感器融合 原文:Multi-Sensor Fusion in Automated Driving: A Survey 自动驾驶正成为影响未来行业的关键技术,传感器是自动驾驶系统中感知外部世界的关键,其协作…

Java 开发中的 Lombok 是什么?

一. 血案 今天有个学生告诉我&#xff0c;他在项目中使用Mybatis框架查询时报错&#xff0c;提示无法创建对象。但自己仔细地检查了代码都没有发现错误&#xff0c;于是他就半夜拼命地给我发消息求救。 我起床拿手机&#xff0c;还差点摔倒闪了我的老腰&#xff0c;我老婆看我…

猿创征文|工作中遇到技术盲区后的自我成长

猿创征文&#xff5c;工作中遇到技术盲区后的自我成长 1、立场 我是一名python后端开发程序员&#xff0c;在一家创业公司中兢兢业业工作快两年了&#xff0c;从软件架构、开发、测试、部署、运维一手经办&#xff0c;到开发文档、API接口、开发周期、设备交付、安装完成全程…