第1、2章学习笔记

第一章 引言

本章简单介绍了Unix的历史,包括贝尔实验室开发的Unix早期版本、AT&T System V以及Unix的其他版本,如BSD、HP UX、IBM AIX和Sun/SolarisUnix。此外,还介绍了Linux的开发及其各种发行版(包括Debian、 Ubuntu、 Mint、 RedHat和Slackware),列出了适用于Linux的各种硬件平台和虚拟机,并展示了如何将UbuntuLinux同时安装到Microsoft Windows中的VirtualBox虚拟机和VMware虚拟机上。

  • 系统编程

系统编程是计算机科学和计算机工程教育不可或缺的一部分。计算机专业中的系统编程课程可以为学生打下扎实的专业基础,在操作系统、嵌入式系统、数据库系统、人工智能等方面有很重要的影响。


  • 1.1-1.11

主要介绍了本书主要要介绍的内容,并介绍了Unix与Linux的相关内容与发展

Unix 包含AT&T Unix、Berkeley Unix、HP Unix、IBM Unix、Sun Unix
Linux 包含Debian Linux、Ubuntu Linux、Linux Mint、基于RPM的Linux、Slackware Linux

  • 安装虚拟机

  • 1.13使用Linux

  • linux内核映像

Linux内核映像位于/boot目录中,一个可启动的Linux内核映像由三部分组成: |BOOT|SETUP|linux kernel|
Linux的三个文件流:stdin、stdout和stderr

  • Linux启动

加载BOOT+SETUP至实模式内存的0x90000处
加载Linux内核至高端内存的1MB处

  • Unix/Linux文件系统组织

Unix/Linux文件系统采用树形组织结构

  • Unix/Linux命令

  • cd:更改目录
  • exit:退出
  • logout:注销
  • sudo apt install:安装应用程序
  • sudo:使用root权限执行
  • ls:lsdirname:列出CWD或目录的内容。
  • pwd:打印CWD的绝对路径名。
  • touch filename:更改文件名时间戳(如果文件不存在,则创建文件)。
  • cat filename:显示文件内容。
  • cp src dest:复制文件。
  • mv src dest:移动或重命名文件。
  • mkdir dirname:创建目录。
  • rmdir dirname:移除(空)目录。
  • rm filename:移除或删除文件。
  • find:搜素文件
  • grep:搜索文件中包含模式的行。
  • ssh:登录到远程主机
  • tar-zcvffile.tgz:从当前目录创建压缩tar文件。
  • tar-zxvffile.tgz:从tgz文件中解压文件。
  • man:显示在线手册页。
  • zip file.zip filenames:将文件压缩为.zip文件。
  • unzip file.zip:解压.zip文件。
  • history:查看历史命令。
  • !数字:执行第"数字"条命令。

第二章 编程背景

本章讲述了系统编程所需的背景信息;介绍了几种基于GUI的文本编辑器,比如vim、gedit和EMACS,可供读者编辑文件使用:展示了如何在命令和GUI模式下使用EMACS编辑器来编辑、编译和执行C语言程序;阐述了程序开发的步骤,这些编译链接步骤包括GCC、静态和动态链接、二进制可执行文件的格式和内容、程序执行和终止等;详细阐释了函数调用惯例和运行时堆栈的使用,包括参数传递、局部变量和栈帧。

  • Linux中的文本编辑器

  • 程序开发

创建源文件>用gcc把源文件转换成二进制可执行文件>静态与动态链接库

可执行文件格式
  • 二进制可执行平面文件
  • a.out 可执行文件
  • ELF可执行文件
程序执行过程
  • 读取a.out文件头,以确定所需的总内存大小。
  • sh从总大小中分配一个内存区给执行映像。
  • sh放弃放弃旧映像,开始执行新映像。
  • 执行从crt0.o开始,调用main()。
链接库

链接库静态链接库和动态链接库。
项目管理:
头文件:/include *.h
源文件:/src *.c
库: /lib *.o
二进制可执行: /bin *.out

makefile

makefile用来管理和编译项目。makefile是一个文件,在使用make命令时,会读取这个文件并对项目按照文件内容进行编译。make文件由一系列目标项、依赖项、规则组成。

GDB调试工具

GDB调试工具是一个交互式调试工具,可以调试用C、C++和其他几种语言编写的程序。
GDB是一个功能强大的调试工具,使用非常简单,但应该注意,所有调试工具只能提供有限的帮助,在某些情况下用处不大,所以程序开发的最佳方法是仔细设计程序的算法,然后根据算法编写程序代码。

原文地址:https://www.cnblogs.com/ruier/p/15268730.html