计算机系统基础实验一、Linux环境和GCC工具链
Linux
操作系统概述和实验环境介绍
操作系统概念
OS
是管理和控制计算机硬件与软件资源的计算机程序,是直接在“裸机”上的最基本的系统软件。
Linux
的应用
- 服务器端:Linux非常稳定,特别适合大型企业生产环境。
- 作为网络平台的后端服务器被使用。
- 作为应用服务器、数据库服务器被使用:解决海量数据、高并发的问题;
- 作为嵌入式操作系统被使用:智能控制、自动化、物联网等领域。
Linux
历史
追溯到UNIX
简单地说,Linux
是对UNIX
的重新实现。世界各地的Linux
开发人员借鉴了UNIX
的技术和用户界面,并且融入了很多独创的技术。Linux
不属于BSD
和AT&T
风格的UNIX
中的任何一种。因此,严格来说,Linux
是有别于UNIX
的另一种操作系统。
Linux
简介
Linux
发现行版本举例:Ubuntu
、redhat
操作系统的三个部分
内核
操作系统五大管理功能一般都由操作系统内核负责。
外壳
操作系统的功能
CPU
的控制与管理:处理器管理- 内存的分配与管理:存储器管理
- 外部设备的控制与管理:设备管理
- 文件管理
- 作业管理和控制:用户接口
Shell
- 外壳程序对用户的输入命令进行解释,为用户提供一种通过操作系统使用计算机的操作环境。
Windows
的图形界面,由一个成为Explorer
的模块解释用户的输入。- 如
DOS
的命令行界面,Command.com
是对命令输入进行解释的外壳程序(Linux
的Shell
) - Shell命令:从命令行输入语句,每输入一次就能得到一次响应,这些语句就是
shell
命令。 Shell
程序:又称Shell
脚本。(把一系列的shell
命令,按照一定的语法规则和控制结构,组织在一个文件中,然后由内核来一条接一条地解释和执行这些命令,这个文件就是shell程序,类似DOS
/Winsows
中的。bat批处理文件。)- [username@computername ~]$
user name为当前用户名,computername 为当前计算机名 ,$表示当前用户是一般用户。
把ssh
secure shellLinux
终端搬到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 - 存放被系统修改过的数据。
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 - 存放被系统修改过的数据。
常用的目录操作命令包括:
- pwd 打印当前工作目录
- cd 改变当前所在目录
- ls 查看当前目录下的内容
- dir 类似ls命令
- mkdir 创建目录
- rmdir 删除空目录
文件操作命令
- 在命令行环境下对文件进行操作将比在图形环境下操作文件更加快捷和高效
- 文件操作主要包括:搜索文件、复制和移动文件、删除文件以及合并文件内容
常用文件操作命令:
cat
more
less
head
tail
cp
mv
rm
find
touch
ln
使用帮助命令
man 命令名
whatis 命令名
help 命令名
:适用于部分命令
Vi编辑器
Vi
简介
Vi
编辑器是Visual interface
的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作Vi
不是一个排版程序,只是一个文本编辑程序。- 是全屏幕文本编辑器,没有菜单,只有命令。
Vi
的基本概念
- 命令行模式(command mode)
控制屏幕光标的移动、字符、字或行的删除、移动复制某区段及进入Insert mode
下,或者到last line mode
。 - 插入模式(Insert mode)
只有在Insert mode
下,才可以做文字输入,按ESC键可回到命令行模式。 - 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号。
$ vi test.txt
即可进入vi(打开或新建文件)
即可进入vi(打开或新建文件)
操作:
- 命令行模式 —->(i) 插入模式
- 插入模式 —->(ESC) 命令行模式
- 如果处于「插入模式」,就只能一直输入文字,如果发现输错了字想用光标往回移动将该字删除,就得先回到「命令行模式」
- 在「命令行模式」下,按下:进入底行模式
: w filename
: wq
: q!
GCC
工具链
简介
GCC
编译器能将C
和C++
语言源程序、汇编程序编译、链接成可执行文件。- 使用
GCC
编译器时,编译过程可以被细分为四个阶段:- 预处理(Pre-Processing)
- 编译(Compiling)
- 汇编(Assembling)
- 链接(Linking)
GDB
的概述
GDB
是一款GNU开发组织并发布的UNIX/Linux下的程序调试工具。它使你能够在程序运行时观察程序的内部结构和内存的使用情况。以下是GDB
提供的一些功能:
- 监视程序中变量的值
- 设置断点以使程序在指定的代码行上停止运行
- 能逐行执行代码
Objdump
简介
Objdump
是以一种可阅读的格式让你更多地了解二进制文件可能带有地附加信息。
对于想进一步了解系统地程序员,这个命令没有没有更多意义,对于想进一步了解系统的程序员,应该掌握这种工具,至少你可以自己写写shellcode
了,或者看看人家给的exploit
中的shellcode
是什么东西。
把C语言源代码编译链接生成的可执行程序反汇编后得到对应的汇编代码,可以帮助我们理解C语言和汇编语言之间的对应关系。非常有助于深入理解C语言
至此,已经完成了计算机系统基础第一次实验的理论部分,其中有太多的东西还需要自己去实践、接下来开始实验!