计算机系统基础实验一、Linux环境和GCC工具链

Linux操作系统概述和实验环境介绍

操作系统概念

OS是管理和控制计算机硬件与软件资源的计算机程序,是直接在“裸机”上的最基本的系统软件。

Linux的应用

  1. 服务器端:Linux非常稳定,特别适合大型企业生产环境。
  2. 作为网络平台的后端服务器被使用。
  3. 作为应用服务器、数据库服务器被使用:解决海量数据、高并发的问题;
  4. 作为嵌入式操作系统被使用:智能控制、自动化、物联网等领域。

Linux历史

追溯到UNIX
简单地说,Linux是对UNIX的重新实现。世界各地的Linux开发人员借鉴了UNIX的技术和用户界面,并且融入了很多独创的技术。Linux不属于BSDAT&T风格的UNIX中的任何一种。因此,严格来说,Linux是有别于UNIX的另一种操作系统。

Linux简介

Linux发现行版本举例:Ubunturedhat

操作系统的三个部分

内核

操作系统五大管理功能一般都由操作系统内核负责。

外壳

  • 外壳程序负责接收用户操作,提供与 用户的交互界面。
  • 一般操作系统提供给用户的界面主要有两种:文本界面、GUI图形界面。

    管理工具和附属软件

操作系统的功能

  1. CPU的控制与管理:处理器管理
  2. 内存的分配与管理:存储器管理
  3. 外部设备的控制与管理:设备管理
  4. 文件管理
  5. 作业管理和控制:用户接口

Shell

  1. 外壳程序对用户的输入命令进行解释,为用户提供一种通过操作系统使用计算机的操作环境。
  2. Windows的图形界面,由一个成为Explorer的模块解释用户的输入。
  3. DOS的命令行界面,Command.com是对命令输入进行解释的外壳程序(LinuxShell)
  4. Shell命令:从命令行输入语句,每输入一次就能得到一次响应,这些语句就是shell命令。
  5. Shell程序:又称Shell脚本。(把一系列的shell命令,按照一定的语法规则和控制结构,组织在一个文件中,然后由内核来一条接一条地解释和执行这些命令,这个文件就是shell程序,类似DOS/Winsows中的。bat批处理文件。)
  6. [username@computername ~]$
    user name为当前用户名,computername 为当前计算机名 ,$表示当前用户是一般用户。

    ssh secure shell

    Linux终端搬到Windows下,连接到BUPT1.

    Shell常用命令

    目录操作命令

    目录操作命令能够对当前的目录进行查看、创建、删除,以及显示当前工作目录和改变当前目录等操作。
1. /etc - 系统所需的重要配置和管理文件
2. /dev - 存放device file(装置文件)
3. /boot - 存放系统激活的相关文件,不可任意删除。
4. /home - 登陆用户的主目录
5. /lib - 存放系统激活时需要的系统函数库
6. /usr/lib - 存放一些应用程序的共享函数库
7. /mnt - 系统默认的挂载点(mount point) 8. /proc - 虚拟文件系统,不占用硬盘空间,目录下的文件均放置于内存中
9. /root - 系统管理用户root的主目录
10. /bin - 存放一些系统启动时所需的普通程序和系统程序
11. /tmp - 存放临时文件 12. /var - 存放被系统修改过的数据。

常用的目录操作命令包括:

  1. pwd 打印当前工作目录
  2. cd 改变当前所在目录
  3. ls 查看当前目录下的内容
  4. dir 类似ls命令
  5. mkdir 创建目录
  6. rmdir 删除空目录

文件操作命令

  • 在命令行环境下对文件进行操作将比在图形环境下操作文件更加快捷和高效
  • 文件操作主要包括:搜索文件、复制和移动文件、删除文件以及合并文件内容

常用文件操作命令:

  • cat
  • more
  • less
  • head
  • tail
  • cp
  • mv
  • rm
  • find
  • touch
  • ln

使用帮助命令

  1. man 命令名
  2. whatis 命令名
  3. help 命令名:适用于部分命令

Vi编辑器

Vi简介

  • Vi编辑器是Visual interface的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作
  • Vi不是一个排版程序,只是一个文本编辑程序。
  • 是全屏幕文本编辑器,没有菜单,只有命令。

Vi的基本概念

  1. 命令行模式(command mode)
    控制屏幕光标的移动、字符、字或行的删除、移动复制某区段及进入Insert mode下,或者到last line mode
  2. 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按ESC键可回到命令行模式。
  3. 底行模式(last line mode)
    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号。
$ vi test.txt
即可进入vi(打开或新建文件)

操作:

  1. 命令行模式 —->(i) 插入模式
  2. 插入模式 —->(ESC) 命令行模式
  3. 如果处于「插入模式」,就只能一直输入文字,如果发现输错了字想用光标往回移动将该字删除,就得先回到「命令行模式」
  4. 在「命令行模式」下,按下:进入底行模式
    : w filename
    : wq
    : q!

GCC工具链

简介

  1. GCC编译器能将CC++语言源程序、汇编程序编译、链接成可执行文件。
  2. 使用GCC编译器时,编译过程可以被细分为四个阶段:
    • 预处理(Pre-Processing)
    • 编译(Compiling)
    • 汇编(Assembling)
    • 链接(Linking)

GDB的概述

GDB是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。它使你能够在程序运行时观察程序的内部结构和内存的使用情况。以下是GDB提供的一些功能:

  1. 监视程序中变量的值
  2. 设置断点以使程序在指定的代码行上停止运行
  3. 能逐行执行代码

Objdump简介

Objdump是以一种可阅读的格式让你更多地了解二进制文件可能带有地附加信息。
对于想进一步了解系统地程序员,这个命令没有没有更多意义,对于想进一步了解系统的程序员,应该掌握这种工具,至少你可以自己写写shellcode了,或者看看人家给的exploit中的shellcode是什么东西。
把C语言源代码编译链接生成的可执行程序反汇编后得到对应的汇编代码,可以帮助我们理解C语言和汇编语言之间的对应关系。非常有助于深入理解C语言

至此,已经完成了计算机系统基础第一次实验的理论部分,其中有太多的东西还需要自己去实践、接下来开始实验!