《信息安全系统与设计》学习笔记第一二章

第一章:引言
第一章主要内容为:

  1. 本书大致目标
  • 强化编程背景知识
  • 动态数据结构应用:C结构、指针、链表、链树
  • 进程概念和进程管理
  • 并行计算:线程
  • 定时器和定时功能
  • 信号、信号处理和进程间通信
  • 文件系统
  • TCP\IP和网络编程:TCP\IP协议、套接字API、UDP和TCP套接字编程,以及网络计算中的服务器-客户机模型
  1. Unix/Linux操作系统及其历史
    (1) Unix
  • AT&T Unix
  • Berkeley Unix
  • HP Unix
  • IBM Unix
  • Sun Unix
    (2) Linux
  • Debian Linux
  • Ubuntu Linux
  • Linux Mint
  • 基于RPM的Linux
  • Slackware Linux
  1. ubuntu操作系统在主机或者虚拟机上的安装
  • VirtualBox
  • VMware Workstation
  1. 部分简单的unix/linux命令、文件类型、文件组织系统
    (1)常用命令(列出与用户有关)
  • user name :列出文件所有者为name的文件
  • touch filename:新建文件或修改文件时间戳
  • ls [dirname]:列出cwd或指定目录内容(可以与tree配合使用)
  • history:查看历史命令
  • sudo adduer username:添加新用户
    (为确保用户可以发出sudo,a、用户名必须保存在/etc/sudoers文件中,sudoers文件中必须包含 username ALL(ALL) ALL)
  • sudo su :切换至根用户(书中不方便透露的内容)
    (书中说明了Ubuntu禁用了root,sudo命令仅允许用户以超级用户的身份执行命令,执行完后恢复之前级别以提高安全系统)
  • passwd username:修改用户密码
    ...

(2)文件类型

  • 目录文件
  • 非目录文件
    A.特殊文件
    B.常规文件
  • 符号链接文件(类似与快捷方式)
    (文件路径名可分为绝对路径和相对路径,pwd命令可以打印cwd的绝对路径名)

(3)文件组织系统
Unix/Linux系统采用树形组织结构,在Linux中文件系统树中的每一个节点都由文件组成。用tree命令可以打印看见组织情况。

第二章:编程背景
第二章主要内容为:

  1. Linux操作系统中的三款文本编辑器vim、gedit、emacs
    (1)vim
  • 命令模式:输入命令
  • 插入模式:输入和编辑文本
  • 末行模式:保存文件并退出
    (2)gedit
    gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器,对中文支持很好,支持包括gb2312、gbk在内的多种字符编码。
    (3)emacs:
    功能强大,书中涉及到的编辑器大多是emacs,使用sudo apt-get emacs命令安装,使用emacs filename命令编辑相应文件。
  1. 程序开发
    (1)变量
    c语言程序中的变量可分为全局变量、局部变量、静态变量、自动变量和寄存器变量。其中,全局变量在函数外定义。局部变量在函数内定义。该内容在大一时已经学过,这里是再复习一遍。

(2)程序开发基本流程

  • 创建源文件。
  • 用gcc把源文件转换成二进制可执行文件:
    使用gcc程序,它有三个步骤:第一步:将c源文件转换为汇编代码文件。第二步:把汇编代码转换为目标代码(通常是二进制代码)。第三步:链接。
    A.预处理:gcc -E xx.c -o xx.i
    B.编译(将C语言文件转换为汇编代码文件):gcc -s xx.i xx.s
    C.汇编(处理完之后通常是二进制代码):gcc -c xx.s xx.o
    二进制可执行文件名为a.out。a.out的内容包括4个部分:
    a.文件头:包含a.out文件的加载信息和大小
    b.代码段:也叫正文段,代码段从标准c启动代码crt0.o开始
    c.数据段
    d. 符号表
    D.链接:
    静态链接:gcc -static xx.c -L[dirname] -l[libname]
    动态链接: gcc xx.c -L[dirname] -l[libname]
    示意图如下:

(3)makefile
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile是在linux系统下设计大型项目所必须的文件,可以使整个工程编译自动化,极大提升开发效率。
makefile组成:

  • 目标项(创建或更新的文件,也可以是make程序要引用的指令或标签)
  • 依赖项
  • 规则(使用依赖项列表构建目标项需要的命令)

(4)高级语言和数据结构相关知识
书本后面介绍很多在之前高级语言课和数据结构课中学过的知识,包括C语言结构体、数组、指针、树、二叉树(含遍历等操作)、链表(含创建、删除、增添、排序等操作)。这部分书本介绍的内容相对前面linux系统的知识来说熟悉了很多,因此看得较快。

问题和解决
用sudo apt-get install emacs命令下载emacs出错。

用sudo apt-get remove --auto-remove emacs命令卸载后重装,仍然有相同的错误。找网上的博客也都不行。
最后在重新安装虚拟机后重新下载,成功运行。

posted @ 2022-09-04 19:37  20201319吴向林  阅读(32)  评论(0编辑  收藏  举报