首页 > 其他分享 >第一、二章学习笔记

第一、二章学习笔记

时间:2023-09-10 19:13:51浏览次数:34  
标签:文件 gcc 操作系统 二章 笔记 学习 Unix Linux out

一、知识点总结
第一章
Unix和Linux是两个相关但不完全相同的概念。下面是它们的概论知识点总结:
Unix:
Unix是一种操作系统家族,设计目标是提供一个可移植、多用户、多任务的操作系统。
Unix采用了分层架构,将操作系统划分为内核等组件。
Unix引入了许多重要的概念和工具,如文件描述符、进程控制、管道、Shell脚本等。
Unix主要运行在大型服务器和工作站上,并在科学、学术和企业领域广泛使用。

Linux:
Linux是一个基于Unix思想和设计理念的开源操作系统内核
Linux内核提供了操作系统的核心功能,如进程管理、内存管理、设备驱动等。
Linux操作系统通常是通过发行版的形式发布,如我使用的Ubuntu。
Linux发行版包含了Linux内核以及大量的开源软件和工具,使得它们能够成为完整的操作系统。
Linux具有良好的可定制性和灵活性,广泛应用于服务器、嵌入式系统、个人计算机等领域。

Unix和Linux的关系:
Linux内核受到Unix设计的启发,并且与Unix具有一些相似性。
Linux采用了Unix的许多概念和工具,如Shell、文件系统、管道等。
Linux兼容大部分Unix软件,并且可以运行在多种硬件平台上。

尽管Unix和Linux之间存在相似性和联系,但它们是不同的实体,各自拥有自己的版本、发行版和社区支持。
总结起来,Unix是一个操作系统家族,而Linux是一个基于Unix思想和设计理念的开源操作系统内核。

第二章
Linux中的基础编程内容涵盖了多个方面,以下是一些核心概念和技术的总结:

在 Linux 上进行基本的文件和目录操作,如创建、删除、复制和移动文件。
使用命令行工具来管理用户、权限和组。
控制进程和作业,包括启动、停止和监视进程。

文本处理:
使用命令行工具如 grep、sed 和 awk 对文本数据进行搜索、替换、过滤和格式化。

编译和构建:
使用编译器,比如我使用的gcc,将源代码编译成可执行文件。
使用构建系统自动化编译和构建过程。

编程语言支持:
Linux 上支持多种编程语言,如C语言,Python等。
学习和使用特定的编程语言来开发应用程序和脚本,在本次学习中我用了我最擅长的c语言进行处理。

文件系统操作:
使用命令行工具操作文件和目录,如查看文件信息、更改权限、修改文件内容等。
处理文件路径、遍历目录结构,并进行文件搜索和过滤。

软件包管理:
使用软件包管理器(apt)安装、更新和卸载软件包。
学习软件包依赖关系管理和包管理工具的使用。
例如这次的学习中我需要安装gcc和makefile

Emacs 编程:
Emacs 是一款强大的可扩展文本编辑器,也可用于编程。 提供了各种编程模式和插件,适用于多种编程语言
Emacs 的特点包括代码自动完成、代码导航、代码调试等功能。

Makefile:
Makefile 是一个用于构建和管理软件项目的脚本文件。
Makefile 使用一系列规则来指定源文件的依赖关系和构建命令。
Make 工具根据 Makefile 的规则自动判断文件更新并执行相应的构建操作。
Makefile 允许开发人员简化编译、链接和安装过程,并支持跨平台使用。
在使用Emacs进行编程时,你可以按照以下方式来提高效率:

苏格拉底挑战



二、问题与解决思路
1、因为我的虚拟机在旧电脑上,因此我进行了重新安装

最后通过官网下载的VM和ubuntu很快完成了安装

2、打开文件时遇到了错误



经过改正,发现是我代码输入错误

三、程序实践,代码链接
1、安装虚拟机并注册


2、学习使用emacs

下载需要用到的gcc和makefile

3、用gcc把源文件转换成二进制可执行文件

四、其他知识点

1、动态链接和静态链接
动态链接:可以减小每个a.out文件大小,许多执行程序可以在内存中共享相同库函数
动态链接库
gcc -c -fPIC mysum.c
gcc -shared -o libmylib.so my sum.o
gcc t.c -L -lmylib
export LD_LIBRARY_PATH=./
a.out

静态链接库
gcc -c mysum.c
ar rcs libmylib.a mysum.o
gcc -static t.c -L. -lmylib
a.out

2、a.out可执行文件
ELF可执行文件
读取a.out文件头
Total_Size = _brk + stackSize

3、程序执行过程
在类Unix操作系统中,在sh命令行a.out one two three执行a.out文件,以标记字符串作为命令行参数。为执行命令,sh创建一个子进程并等待改子进程终止。子进程运行时,sh使用a.out文件执行新的执行映像

4、程序终止

正常终止
程序执行成功,main()最终会返回到crt0.out,调用库函数exit(0)(系统调用)来终止进程

异常终止
遇到错误,如无效地址,非法指令,越权等,按下ctrl+C可以产生硬件中断,用命令kill -s signal_number pid #signal_number=1 to 31向通过pid识别的目标进程发送信号。
C语言中的函数调用

标签:文件,gcc,操作系统,二章,笔记,学习,Unix,Linux,out
From: https://www.cnblogs.com/ningxinyu1/p/17691672.html

相关文章

  • 《信息安全系统设计与实现》第一周学习笔记
      </d  第一章知识点归纳:1。进程:进程是计算机中正在运行的程序的实例。在操作系统中,每个进程都有自己独立的内存空间和执行环境。进程可以包含一个或多个线程,每个线程执行进程的一部分任务。进程之间是相互独立的,它们通过进程间通信(IPC)来进行数据交换和协调。每个进程......
  • 《信息安全系统设计与实现》第一周学习笔记
    《信息安全系统设计与实现》第一周学习笔记第一章摘要本章介绍了Unix的历史,包括贝尔实验室开发的Unix早期版本以及其他版本。此外,还介绍了Linux的开发及其各种发行版本,列出了适用于Linux的开发的各种硬件平台和虚拟机,并展示了如何将UbuntuLinux同时安装到MicrosoftWindows......
  • 学习笔记1
    学习笔记1第一章本书目标强化编程背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能信号、信号处理和进程间的通信文件系统TCP/IP和网络编程关于UnixAT&TUnixBerkeleyUnixHPUnixIBMUnixSunUnix关于LinuxDebainLinuxUbuntu......
  • 第1、2章学习笔记
    教材第一、二章读书笔记主要内容第一章主要学习了Unix的历史、开发及其各种发行版,列出了适用于Linux的各种硬件平台和虚拟机,揭示了常用的命令和文件系统组织、文件类型。第二章主要学习了基于GUI的编辑器,展示了如何在命令和GUI模式下使用EMACS编辑器来边集、编译和执行C语言......
  • 学习笔记1
    1.知识点归纳①Ubuntu②如何安装虚拟机③如何下载VMwareWorkstation④Unix/Linux命令2.问题与解决过程......
  • 经典接雨水-刷题笔记
    leetcode42按行求(测试用例通过,但超时)classSolution{publicinttrap(int[]height){intres=0;intn=height.length;intmaxh=0;for(inti=0;i<n;i++){maxh=Math.max(maxh,height[i]);}for(intr......
  • 20211421《信息安全系统设计与实现》第一周学习笔记
    知识点总结第一章关于本书研究Unix/Linux系统编程的专著,涵盖Unix/Linux的所有基本组件,包括进程管理、并发编程、定时器和时钟服务、文件系统、网络编程和MySQL数据库系统。本书目标强化学生编程背景知识动态数据结构的应用进程概念和进程管理并发编程定时器和定时功能......
  • 机器学习算法原理实现——cart决策树
      cart决策树示例: 本文目标,仿照sklearn写一个cart树,但是仅仅使用max_depth作为剪枝依据。   我们本次实现cart分类,因此用到gini指数: 为了帮助理解:  好了,理解了基尼指数。我们看下cart树的构建步骤:注意还有几个细节: cart树每个treenode存储......
  • 学习笔记1
    ChatGpt的苏格拉底挑战:有关内核:linux系统的核心是内核。内核控制着计算机系统的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下4种功能。·系统内存管理·软件程序管理·硬件设备管理·文件系统管理  有关GCC:GNUCompilerCollection,编译器集合......
  • Node.js+Express+Koa2开发接口学习笔记(二)
    搭建开发环境从0开始搭建,不适用任何框架使用nodemon监测文件变化,自动重启node使用cross-env设置环境变量,兼容maxlinux和windows创建项目文件夹blog-1,在终端输入命令npminit-y在根目录下创建bin=>www.js文件,将初次运行的文件www.js存放在bin目录下。同时需要修改pack......