Fork me on GitHub

关于Linux和编程背景(第一、二章)


系统安全

  • CIA

    • 机密性:不可见
    • 完整性:不可改
    • 可用性:可读
  • 黄金法则

    • 认证:你是谁?身份可认
    • 授权:你干了什么?行为可信
    • 审计:谁什么时候做了什么?可查
  • 安全威胁

    • 无知之错
    • 无能之错
  • 密码

    • 国家密码管理局
    • 标准化:密标委、全国信息安全标准化技术委员会

关于Linux和编程背景(第一、二章)

问题与解决思路(最有收获的内容)

  1. 这本书要解决什么问题?介绍了什么内容?

    要搞清楚这个问题,就要对书本目录和导论进行系统梳理。

    在关于编程的课上我们已经习得的有:基本语法、数据类型、简单的程序结构以及I/O库函数的使用。实际上,还需了解到软件工具、程序开发步骤和程序执行的运行时环境,书中对程序开发步骤有详细介绍。书中还探讨了动态数据结构的实际应用,进程的概念,并发编程,定时器和定时功能,进程间通信,文件系统,网络编程。

  2. 硬链接的实现?

    读写时,inode(index node)索引节点,inode本质是一个结构体,存储着文件详细信息。

    删除时,只是删除硬链接计数,当删到0时,再真正去删除inode。

  1. 关于openEuler几乎没有现成的教程?

    虽然关于openEuler几乎没有现成的教程供参考学习,但常有一种观点称openEuler是centOS换了壳,足见两者间相似度较高。centOS的教程相对较成熟些,可供学习参考。

知识点归纳

  • 清楚自己会的是什么,聚焦学习自己不会的东西,这是求知上进过程中最为基本的。

    在课上我们所习得的有:基本语法、数据类型、简单的程序结构以及I/O库函数的使用。实际上,还需了解到软件工具、程序开发步骤和程序执行的运行时环境,书中对程序开发步骤有详细介绍。书中还探讨了动态数据结构的实际应用,进程的概念,并发编程,定时器和定时功能,进程间通信,文件系统,网络编程。

  • Linux的历史:Linux起源于Unix系统,是一个类Unix系统。

  • Linux采用二级启动。对于Ubuntu Linux,具有一些特性。

    • 输入sudo command,完成口令验证,可以运行需要超级用户权限的命令

    • 每次打开伪终端,sh都会先执行.bashrc文件来设置路径,以包含当前工作目录

    • 在64位Linux下使用

      gcc -m32 t.c # compile t.c into 32-bit code
      

      可以产生32位代码

    • 具有友好的GUI界面,不过sh要比其通用和强大得多

    • 可连接到计算机网络

  • Linux文件系统采用树形组织结构。文件:所有能够存储或提供信息的事物。

    • 该树型结构中,父节点也称作目录节点,其中可能包含其他目录和文件
    • 树中的叶节点称作非目录文件,其中包括常规文件和特殊文件。
      • 常规文件:要么包含普通文本,要么包含可执行的二进制代码。特别地,内容为其他文件的路径名的常规文件也称为符号链接文件。
      • 特殊文件:是/dev目录中的条目。包括字符特殊文件(字符I/O),块特殊文件(块I/O),网络(套接字)特殊文件、命名管道等其他类型。
  • Linux系统管理。用户账户信息明态保存在/etc/passwd文件中。其中用户密码以密态保存在/etc/shadow文件中。

  • 编程背景。

    • 基于GUI的文本编辑器

      书中介绍了vim,gedit,emacs。他们都支持直接输入、全屏模式下的文本编辑、关键词搜索替换。

      其中,Emacs不仅是一款文本剪辑器,还提供了软件开发的IDE。

      需要了解C语言中变量的分类。

    • 程序开发的步骤和函数调用

      1. 创建源文件

      2. 用gcc把源文件转换成二进制可执行文件。gcc的转换包含三个步骤:编译,形成.s文件—汇编,形成.o文件—链接,将.o文件和必要的库函数组合成单一的二进制可执行文件a.out。

        • 链接有两种。

          静态链接:a.out文件完整、独立,但通常非常大

          动态链接:共享库函数,减小每个a.out文件的大小

        • a.out文件包含文件头、代码段、数据段、符号表。

          在执行过程中,堆栈大小通常是默认值,操作系统会试着处理运行期间可能出现的堆栈溢出。

          程序的异常终止有错误导致的陷入、Ctrl+C产生的硬件中断、使用kill命令向通过pid识别的目标进程发送信号三种。

      3. 函数调用序列在堆栈中保持为一个链表。

    • emacs,makefile和gdb

      makefile在简单应用上和sh命令的差别不大,但makefile的宏定义是较为特别的。makefile支持变量。

      emacs通常通过makefile编译链接源代码。为了生成一个二进制可执行文件以便GDB进行调试,需要使用-g标记,否则GDB将无法调试生成的可执行文件。

      程序开发的最佳方法是仔细设计程序的算法,然后根据算法编写程序代码,而不是依赖调试工具。这是因为在某些情况下,即便是GDB这样强大的调试工具用处也不大。

实践内容

  1. openEuler的安装与使用

    openEuler安装的大部分教程可参考:OpenEuler小白式安装教程

    尤其需要注意,教程里没有的,在安装界面还需要配置的两个地方。

    • 在软件选择中,选择最小安装后,还应该选择右侧的“标准、开发工具、系统工具”三项,方便进入终端之后,有一定的工具可以用

    • 检查网络和主机名一项,看看网络是否连接,是否有IP地址,默认路由,和DNS,顺便改一下主机名;

    • 这个截图一定要保留一下,如果后面网络出了问题,要用截图里的信息配置网络
      关于网络果然出了问题

  1. openEuler的git安装与使用

posted @ 2022-09-04 22:20  郭幸坤  阅读(39)  评论(0编辑  收藏  举报
1