《Unix/Linux系统编程》第1,2章学习笔记 20201209戴骏

一.知识点归纳

第一章 引言

1.本书目标

  • 编程背景知识
    • 详细介绍了程序开发步骤,包括汇报器、编译器、链接器等。
  • 动态数据结构的应用
  • 进程概念和进程管理
  • 并发编程
    • Pthreads 编程、线程连接、互斥量等
  • 定时器和定时功能
  • 信号、信号处理和进程间通信
    • 进程中通信机制,任务间交换信息
  • 文件系统
  • TCP/IP和网络编程
    • TCP\IP协议、套接字API、UDP和TCP套接字编程,以及网络计算中的服务器-客户机模型。

2.Unix

  • Unix(Thompson 和Ritchie 1974,1978)是一种通用操作系统。该系统诞生于20世70年代早期,由肯·汤普森(KenThompson)和丹尼斯·里奇(DennisRitchie)采用贝尔实验室的PDP-11 微型计算机开发。1975 年,贝尔实验室向公众发布了 Unix,称为V6 Unixo该Unix系统的最初使用者以各大高校和非营利性机构为主。这一早期版本,连同有关C编程语言的经典著作(Kernighan 和Ritchie1988),在操作系统领域掀起了 Unix革命,其影响一直持续至今。

  • AT&T Unix

  • Berkeley Unix

  • HP Unix

  • IBM Unix

  • Sun Unix

3.Linux

  • Linux(Linux2017)是一个类Unix系统。它最初是林纳斯·托瓦兹(Linus Torvalds)
    在1991年为基于Intelx86的个人计算机开发的一个实验性内核。后来,世界各地的人都开
    始加人Linux的研发队伍。Linux的一个重要里程碑发生在20世纪90年代末,当时,它与 GNU(Stallman2017)相结合,纳入了许多GNU软件,如GCC编译器、GNUemacs编辑器和bash等,极大地促进了Linux的进一步发展。不久之后,Linux实现了访问互联网的 TCP/IP协议族,并移植了支持 GUI的X11(X-window),成为一个完整的操作系统。
    Linux 包含其他Unix系统的许多特性。在某种意义上,它是由各种最为流行的 Unix系统组合而成。在很大程度上,Linux是兼容 POSIX标准的。Linux已被移植到许多硬件体系结构中,如摩托罗拉、SPARC和ARM 等。主要的Linux平台仍然是基于Intel x86 的个人计算机,包括广泛可用的台式机和笔记本电脑。此外,Linux可免费使用,且易于安装,因此,颇受计算机科学专业的学生欢迎。

  • Debian Linux

  • Ubuntu Linux

  • Linux Mint

  • 基于RPM的Linux

  • slackware Linux

4.Unix/Linux命令

第二章 编程背景

1. 文本编辑器

  • vim

    • 命令模式:用于输入命令

      • h:将光标向左移动一个字符
      • l:将光标向右移动一个字符
      • j:将光标向下移动一行
      • k:将光标向上移动一行
    • 插入模式:用于输入和编辑文本

      • i:插入文本
      • a:追加文本
    • 末行模式:用于保存文件退出

  • WYSIWYG

    • Ctrl+C:中止或退出
    • Ctrl+K:删除行到缓冲区
    • Ctrl+Y:从缓冲区内容中复制或粘贴
    • Ctrl+S:保存已编辑文本等
  • gedit

  • emacs

2.程序开发

  • 创建源文件

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

  • 静态与动态链接

  • 可执行文件格式

  • a.out文件

    • 文件
      • tsize、dsize、bsize、total_size
    • 代码
    • 数据段
    • 符号表
  • 程序执行过程

    • 读取a.out文件头,以确定所需的总内存大小。
    • sh从总大小中分配一个内存区给执行映像。
    • sh放弃放弃旧映像,开始执行新映像。
    • 执行从crt0.o开始,调用main()。
  • 程序终止

    • 正常终止
    • 异常终止

3.C语言程序与汇编代码链接

4.链接

5.makefile

  • make工具是一个程序,它按照顺序读取makefile,以自动有选择的执行编译链接

    • 一个make文件由一系列目标项、依赖项和规则组成

      目标项 依赖项列表
      target: file1 file2 ... fileN
      规则
      < tab > command1
      < tab > command2
      < tab > other command
  • 当make程序读取makefile时,通过比较依赖项列表中源文件的时间戳来确定要构建哪些目标项

5.GDB调试工具

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

6.C语言结构体

  • 结构体和指针
  • 类型转换
  • 链表
  • 树和二叉树

二. 问题与解决思路

问题1:所下载的Ubuntu20.04不是光盘,无法继续安装
解决方法:网上搜索教程,找到Ubuntu20.04的光盘

问题2:安装完显示的是英文版
解决方法:根据汉化教程,实现汉化配置

三. 实践内容与截图,代码链接

虚拟机以及Ubuntu的安装与配置



在终端运行代码




相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...