《信息安全系统设计与实现》课程学习笔记1

知识点归纳

第一章

1.1 关于本书

本书研究Unix/Linux系统编程的专注,其中涵盖Unix/Linux的所有基本组件,包括进程管理、并发编程、定时器和时钟服务、文件系统、网络编程和MySQL数据库系统,还着重探讨了编程实践。

1.2 系统编程的作用

系统编程是计算机科学和工程教育不可或缺的一部分。

  • 教授学生计算机系统软件方面的广博知识以及高级编程技巧,有效利用系统资源开发应用软件
  • 为学生打下扎实的专业基础,一边在操作系统、嵌入式系统、数据库系统、数据挖掘、人工智能、计算机网络、网络安全、分布式和并行计算等计算机科学/工程领域继续深造

1.3 本书的目标

  • 强化学生的编程背景知识
  • 动态数据结构的应用
  • 进程概念和进程管理
  • 并发编程
  • 定时器和定时功能
  • 信号、信号处理和进程间通信
  • 文件系统
  • TCP/IP和网络编程

1.4 目标读者

供以技术为导向、理论与编程实践并重的计算机科学/工程专业学生使用。

1.5 本书的独特之处

  • 本书自成一体
  • 本书使用一个简单的多任务系统来介绍和阐释了进程的抽象概念
  • 本书详细描述了Unix/Linux中各种进程的来源和作用,包括系统启动、初始化进程、守护进程、登录进程以及用户sh进程等。
  • 本书介绍了并行计算和并发编程
    等等

1.8 关于Unix

Unix是一种通用操作系统。
Unix系统的各个版本:

  • AT&T Unix
  • Berkeley Unix
  • HP Unix
  • IBM Unix
  • Sun Unix

1.9 关于Linux

  • Linux是一个类Unix系统。
  • Linux系统包括其他Unix系统的许多特性。
  • Linux可免费试用,易于安装。

1.10 Linux版本

  • Debian Linux
  • Ubuntu Linux
  • Linux Mint
  • 基于RPM的Linux
  • Slackware Linux

1.11 Linux硬件平台

Linux最初是为基于Intel x86的个人计算机而设计,主要硬件平台仍是基于Intel x86的个人计算机。

1.12 虚拟机上的Linux

大多数用户会在Windows主机内的虚拟机上安装和运行Linux。
虚拟机的种类:

  • VirtualBox
  • VMware
    本机安装了VMware workstation pro

  • 双启动Slackware和Ubuntu Linux

1.13 使用Linux

  • Linux内核映像
    内核映像位于/boot中
  • Linux启动程序
    最受欢迎的Linux启动加载程序是GRUB和LILO。
  • Linux启动
    启动加在程序首先会定位Linux内核映像(文件),然后加载BOOT+SETUP至实模式内容的0x90000处,加载内核至高端内存的1MB处。
  • Linux运行级别
    Linux内核以单用户模式启动。
  • 登录进程
    登录进程将在其终端上打开三个文件流:stdin stdout stderr,额庵后等待用户登录。
  • 命令执行
    登录后,用户进程通常会执行命令解释程序sh,提示用户执行命令。

1.14 使用Ubuntu Linux

  • Ubuntu版本
    推荐使用Ubuntu Linux15.10或更高版本
  • Ubuntu Linux特性
  1. 按下“Ctrl+Alt+T”组合键打开一个伪终端
  2. 右键点击“Term”(终端)图标,选择“lock to launcher”(锁定到启动器)
  3. 出于安全问题,用户应为普通用户,而不是根用户或超级用户。要运行任何特权命令,用户必须输入sudo command
    首先会验证用户密码
  4. 在当前目录下运行程序,用户每次需输入./a.out

1.15 Unix/Linux文件系统组织

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

  • 文件类型
    (1)目录文件
    可能包含其他目录和文件
    (2)非目录文件:常规文件和特殊文件
    (3)符号链接文件
    文件是指向其他文件的指针
  • 文件路径名
    文件系统树的根节点成为根目录
    以“/”开头的路径名为绝对路径名,反之为相对于进程当前工作目录(CWD)相对路径名
  • Unix/Linux命令
    最常用的命令:

1.16 Ubuntu Linux系统管理

  • 用户账户
    保存在/etc/passwd文件中
  • 添加新用户
    方式为sudo adduser username
    (此处课本adduer错误)

第二章

2.1 Linux中的文本编辑器

  • vim
    vim是Linux的标准内置编辑器。
    vim启动时,处于默认的命令模式。输入i或a切换到插入模式
    i:插入模式,插入文本
    a:插入模式,追加文本
    退出插入模式,按ESC。命令模式下,输入“:”进入末行模式,将文本保存为文件或退出vim
    :w:写入(保存文件)
    :q:退出vim
    :wq:保存并退出
    :q!:不保存更改,强制退出
  • gedit
  • emacs

2.2 使用文本编辑器

  • 使用emacs
  • emacs菜单
  • emacs的集成开发环境

2.3 程序开发

  • 程序开发步骤
    1.创建源文件
    2.用gcc把源文件转换成二进制可执行文件
  • 静态与动态链接
    创建二进制可执行文件的方式为静态链接和动态链接。
    动态链接的优点:
    1.可减小每个a.out文件大小
    2.许多可执行程序可在内存中共享相同的库函数
    3.修改库函数不需要重新编译源文件
    动态链接所用的库成为动态链接库,在Linux中成为共享库。
  • 可执行文件格式
    1.二进制可执行平面文件
    2.a.out可执行文件
    3.ELF可执行文件
  • a.out文件的内容
    1.文件头
    2.代码段
    3.数据段
    4.符号表
  • 程序执行过程
    在类Unix操作系统中,在sh命令行输入a.out one two three执行a.out文件,以标记字符串作为命令行参数
  • 程序终止
    可通过正常终止(调用库函数exit(0)(系统调用)来终止进程)和异常终止(按下ctrl+C可以产生硬件中断;用kill -s signal_number pid #signal_number=1 to 31向通过pid识别的目标进程发送信号)两种方法终止正在执行a.out的进程。

2.4 C语言中的函数调用

  • 32位GCC中的运行时堆栈使用情况
  • long jump
  • 64位GCC中的运行时堆栈使用情况

2.5 C语言程序与汇编代码的链接

  • 用汇编代码编程
    GCC生成汇编代码由三部分组成:
    1.入口代码
    2.函数体代码
    3.退出代码
  • 用汇编语言实现函数
  • 从汇编中调用c函数




2.6 链接库

  • 动态链接库
    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.7 makefile





问题与解决思路

问题

(1)不理解绝对路径名和相对路径名的区别与意义
(2)不理解makefile中的宏的定义与意义

解决思路



实践过程截图

我实践了老师上课讲的代码示例,掌握了基本的linux语言与gcc编译器语言


代码链接

  • hello.c
#include<stdio.h>
  #include"hello.h"
void say_hello(){
	printf("Hello World!");
}
  • main.c
#include<stdio.h>
#include"hello.h"
int main(){
	say_hello();
	return 0;
}
  • hello.h
#ifndef __HELLO_H__
#define __HELLO_H__
/***
 *fuction:print hello string
 *param:void
 *return value:void
 *
 */
void say_hello();

#endif
posted @ 2023-09-10 20:41  20211402赵佳怡  阅读(25)  评论(0编辑  收藏  举报