复习内容 ?操作系统相关概念 ?linux常用命令 ?Vim编辑器、gcc编译器、gdb调 试器、makefile ?进程、线程相关概念及linux进程 创建 linux操作系统 华软软件学院电子系 P1 第一部分 ?操作系统相关概念 n操作系统定义 n操作系统功能 n操作系统特性 linux操作系统 华软软件学院电子系 P2 操作系统定义 ?操作系统 n 是配置在计算机硬件系统(也称为裸机系统)上 的第一层软件 n 是对计算机硬件功能的第一次扩充 n 定义:是计算机系统中的一个重要系统软件。它 管理和控制所有的计算机资源(软、硬件),合 理组织计算机工作流程,以便有效的利用这些资 源为用户提供一个功能强大、使用方便且易于扩 展的工作环境,从而在计算机与用户之间起到接 口的作用。 linux操作系统 华软软件学院电子系 P3 操作系统地位 ?操作系统的地位 用户 用户 用户 ?基于硬件 ?计算机所有资 源的管理、协调 和分配 ?进程管理 ?界面管理 ?。。。等等 应用程序 命令解释器、编译器等 操作系统 硬件 linux操作系统 华软软件学院电子系 P4 操作系统的功能及特征(1) ?操作系统的功能 n 处理机管理 u 处理机分配调度策略,分配实施和资源回收 n 存储管理 内存分配:保护系统和各用户的存储区不产生冲突 u 存储保护:保护一个程序不会遭到其他程序的破坏 u 内存扩充:为用户提供虚拟存储器(比实际内存大得 多) u n 设备管理 u u 缓冲管理:缓和CPU和I/O设备速度不匹配的矛盾 设备独立性:为用户提供一个良好的界面 华软软件学院电子系 P5 linux操作系统 操作系统的功能及特征(2) ?操作系统的功能 n 文件管理 目录管理:方便用户有效组织、管理文件 u 文件存取控制管理:对文件设置读、写、删等权限, 防止非法破坏 u 文件存储空间管理:提高文件存储空间利用率和文件 工作速度 u n 用户接口 u u 命令接口:对程序员输入的命令解释并执行 程序接口:可在编写的程序中通过对这些接口的调用 完成相应的功能 linux操作系统 华软软件学院电子系 P6 操作系统的功能及特征(3) ?操作系统的特征 n 并发性 n 共享性 n 虚拟性 n 不确定性 linux操作系统 华软软件学院电子系 P7 第二部分 ?Linux的基本操作 n Linux关闭、重启命令 n 系统管理命令 n 文件管理命令 n 文件搜索命令 n 帮助命令 n 压缩解压命令 n 网络通信命令 n 其它常用命令 linux操作系统 华软软件学院电子系 P8 linux的退出和关闭 ? Linux退出 n 退出时指退出与Linux当前的交互 n Shell下,使用exit或logout命令 n GUI界面下,点击主菜单的logout项 ? Linux关闭 n 在shell下,用shutdown或halt命令 ? 重新启动Linux n reboot命令 n shutdown命令 n 同时按下Ctrl+Alt+Del linux操作系统 华软软件学院电子系 P9 系统管理命令 ?su:变更用户身份 ?sudo:以其他身份来执行指令 ?passwd:变更用户的密码 su zhangsan与su - zhangsan有何区别? linux操作系统 华软软件学院电子系 P10 文件管理命令(1) ?ls:列出一个或多个文件的信息 n -a, --all:列出目录下所有的文件,包括文件名 以.开头的隐藏文件,.和..除外。 n -i, --inode:显示每个文件的i节点号 n -l:使用长列表格式 ?pwd:打印当前工作目录的全路径名(绝对路径), 如果没有显示目录,则属于符号链接。 ?cd:改变当前目录 n cd .. 切换至当前目录的父目录 n ./当前目录 linux操作系统 华软软件学院电子系 P11 文件管理命令(2) ?mkdir:创建一个或多个目录 n -p, --parents: 如果不存在错误,则根据需要创 建父目录 n $ mkdir –p a/b/c ?rmdir:删除一个或多个空的目录 n -p, --parents: 删除DIRECTORY后,试图删除 DIRECTORY的每一个分量。 n $ rmdir –p a/b/c ?tree:以树状输出目录下所有子目录和文件的列表 linux操作系统 华软软件学院电子系 P12 文件管理命令(3) ?cp:复制一个或多个文件或目录 n cp [OPTION] … SOURCE DEST n cp [OPTION] ... SOURCE ... DIRECTORY n -R 复制目录 ?rm:删除命令中所列出的每个文件 n -f, --force:忽略不存在的文件而给用户任何提示 n -r、-R、--recursive:以递归方式删除目录中内容 ?mv:移动或更名文件或目录。 ?touch:修改文件的时间戳 n touch [OPTION] … [FILE] … n 如果FILE文件并不存在,则创建新文件 linux操作系统 华软软件学院电子系 P13 文件管理命令(4) ?ln:在文件间建立链接。 n $ ln 123.txt hl.txt n 硬链接是指,已存在文件的别名。一旦链接生成,链接与 原文件是无法区别的。 n $ ln -s 123.txt sl.txt n 符号链接(软链接)是指一种特殊的文件类型。链接文件 实际上指向了另一个文件。 ?cat:在屏幕上显示文件的内容 ?more:在屏幕上分页显示文件的内容,支持跳转行 功能 n 空格或f n Enter n Q或q linux操作系统 显示下一页 显示下一行 退出 华软软件学院电子系 P14 文件管理命令(5) ?head:显示文件的开始部分 n -n num :显示文件前num行 n $ head –n 20 /etc/services ?tail:显示文件的末尾部分 n -n num :显示文件后num行 n $ tail –n 20 /etc/services ?组合使用可定位到某一行或几行,如显示第15行: n $ head –n 15 /etc/services tail –n 1 linux操作系统 华软软件学院电子系 P15 文件管理命令(6) ?chmod:改变文件的访问许可(符号连接除外) n $ chmod a+x 123.txt n $ chmod 777 123.txt linux操作系统 华软软件学院电子系 P16 文件管理命令(7) ?chown:改变文件或目录所有者(即文件主) n $ chown nobody 123.txt ?chgrp:改变文件或目录所属组 n $ chgrp adm 123.txt ?umask:显示、设置文件或目录的缺省权限 n -S:以rwx形式显示文件或目录的缺省权限 n $ umask n $ umask -S n $ umask 644 linux操作系统 华软软件学院电子系 P17 文件搜索命令(1) ?find:查找文件和目录 n -name 按文件名称查找 n $ find /etc –name init n $ find /etc –name init?? n $ find . –name *top ?grep:输入一个或多个输入文件中查找含有与指定 模式相匹配的字符串的行 n $ grep ―text‖ 123.txt linux操作系统 华软软件学院电子系 P18 文件搜索命令(2) ?which:显示系统命令所在目录 n $ which ls ?whereis:和which用法一样,显示信息的方式不同 ?locate:寻找文件或目录 n $ locate file (列出所有跟file相关的文件 ) linux操作系统 华软软件学院电子系 P19 帮助命令 ?man:获得帮助信息 n $ man ls 查看ls命令的帮助信息 n $ man services 查看配置文件services的帮助 信息 n $ man 5 passwd 配置文件的帮助 1是命令的帮 助,查看时调用more ?info:获得帮助信息 n $ info ls 查看ls指令的帮助信息 ?whatis:获得索引的简短说明信息 n $ whatis ls linux操作系统 华软软件学院电子系 P20 压缩解压命令(1) ?zip:压缩文件或目录 n -r 压缩目录 n 压缩后文件格式:.zip n $ zip services.zip /etc/services 压缩文件 n $ zip –r test.zip /test 压缩目录 n .zip是默认windows和linux通用格式 ?unzip:解压.zip的压缩文件 n $ unzip test.zip linux操作系统 华软软件学院电子系 P21 压缩解压命令(2) ?gzip:压缩文件 n 压缩后文件格式:.gz n gzip只能压缩文件,不能压缩目录,并且不保留 原文件 n $ gzip 123.txt ?gunzip:解压缩.gz的压缩文件 n $ gunzip file1.gz linux操作系统 华软软件学院电子系 P22 压缩解压命令(3) ?bzip2:压缩文件(适合压缩大文件) n 压缩后文件格式:.bz2 n -k 产生压缩文件后保留原文件 n $ bzip2 –k file1 ?bunzip2:解压缩.bz2的压缩文件 n -k 解压缩后保留原文件 n $ bunzip2 –k file1.bz2 linux操作系统 华软软件学院电子系 P23 压缩解压命令(4) tar命令解压缩语法: -x 解包.tar文件 -v 显示详细信息 -f 指定解压文件 -z 解压缩tar.gz -j 解压缩tar.bz2 $ tar –zxvf dir1.tar.gz tar:打包文件或目录 -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 (.tar.gz ) -j 打包同时压缩 (.tar.bz2 ) $ tar –zcvf dir1.tar.gz linux 操作系统 dir1 华软软件学院电子系 P24 网络通信命令(1) ?ping:测试网络连通性 n # ping 192.168.1.1 n ping –c 3 192.168.9.3 c count次数 n ping –s 65507 192.168.9.3 s size数据包大小 ?ifconfig:查看网络设置信息 n -a 显示所有网卡信息 n # ifconfig –a n ifconfig eth0 192.168.9.6 n 在本次会话中改变IP地址,如果要永久生效,则 必须写入配置文件 /etc/network/interfaces linux操作系统 华软软件学院电子系 P25 网络通信命令(2) ?write:向另外一个用户发信息,以Ctrl+D作为结 束,实时通信,必须是在线用户 n $ write sisexlg ?wall:向所有用户广播信息 n $ wall n Happy New Year! linux操作系统 华软软件学院电子系 P26 其它命令 ?echo:在终端输出字符串 n echo通常跟重定向符号一起使用f n echo 210.22.70.3 /etc/resolv.conf ?sort :排序给出的所有文件并合并到标准输出(缺 省FILE时)或一个指定的文件 ?adduser:添加用户 ?userdel:删除用户 n -r:当删除帐号时,连同帐号主目录一起删除 n -f:强制删除 linux操作系统 华软软件学院电子系 P27 第三部分 ?Vim编辑器 ?Gcc编译器 ?Gdb调试器 ?Makefile linux操作系统 华软软件学院电子系 P28 VIM编辑器 ?vi编辑器启动 $ vi filename 三种模式切换方法如图: 命令行模式 i、a、o、r ESC 文本输入模式 linux操作系统 : ESC 末行模式 华软软件学院电子系 P29 VIM编辑器 ?文本插入命令 ? i:插入文本从光标所在位置前开始 ? I:将光标移动到当前行的行首,然后在其前插入文本 ?文本附加命令 ? a:在光标当前位置之后追加新文本 ? A:将光标移动到所在行的行尾,从那里开始插入新文本 ?文本修改命令 ? o:在光标的下面新开一行,并定位到该行的行首,等待输入 ? O:在光标的上面插入一行,并定位到该行的行首,等待输入 linux操作系统 华软软件学院电子系 P30 VIM编辑器 ?文本修改命令——删除 删除单个字符 ? x:删除光标处的字符 ? nx:删除光标所在位置开始向右的n个字符(n是具体的数字 ) ? X:删除光标前面的那个字符 ? nX:删除光标前面向左的n个字符(n是具体的数字) linux操作系统 华软软件学院电子系 P31 VIM编辑器 删除多个字符 ? dd:删除光标所在当前行 ? D或d$:删除从光标所在处开始到行尾的内容 ? d^:删除从光标前一个字符开始到行首的内容 ? dw:删除一个单词 ? dG:删除光标所在行到末尾所有内容 ? :n1,n2d 删除n1到n2行 linux操作系统 华软软件学院电子系 P32 VIM编辑器 ?退出vi 编辑完文件后,准备退出vi返回shell时, 可以在末行模式下,使用如下方法: ? :w newfile 保存文件为newfile,但并不退出 ? :q 退出vi。如果未保存,vi将提示不能退出 ? :wq newfile 保存并退出 ? :q! 强制退出,不保存 ? :x 如果修改过,则保存退出;如果未修改过,则直接退出 ? ZZ 快捷键,保存修改并退出 linux操作系统 华软软件学院电子系 P33 VIM编辑器 ?设置vi 可以通过~/.vimrc文件对vi进行默认的设置 也可在末行模式中设置 ? set nu:显示行号 ? syntax on:语法高亮(编程时适用) ? set undolevels=200:undo最大次数 ? set ignorecase:忽略大小写 ? set autoindent:自动缩进(编程时适用) ? set tabstop=4:设置tab键的宽度 linux操作系统 华软软件学院电子系 P34 GCC编译器 gcc的编译流程分为4个步骤,如下 预编译 gcc -E hello.c hello.i 编译 gcc -S hello.s 汇编 gcc -c hello.o 链接 gcc hello $ gcc -E hello.c -o hello.i $ gcc -S hello.i -o hello.s $ gcc -c hello.s -o hello.o $ gcc hello.o -o hello linux操作系统 华软软件学院电子系 P35 $ chmod 755 hello $ ./hello GCC编译器 ?gcc基本用法和常用选项 gcc命令的基本用法如下: $ gcc [options] [filename] 前面介绍的4个步骤,我们可以一次全部执行,如下: $ gcc hello.c -o hello 当没有指定-o选项时,默认生成的可执行文件为a.out $ gcc hello.c $ ./a.out linux操作系统 华软软件学院电子系 P36 GCC编译器 gcc命令的的常用参数如下: ? -c:只激活预处理、编译、汇编,只编译成obj文件,不链接 ? -S:只激活预处理、编译,把文件编译成汇编代码 ? -E:只激活预处理,不生成文件,不编译 ? -o:指定目标名称,当不指定时则默认为a.out ? -g:指定编译器在编译时产生调试信息(参考gdb一节) ? -Wall:显示附加的警告消息 linux操作系统 华软软件学院电子系 P37 GDB调试器 ?gdb简介 gdb能在程序运行时,观察程序的内部结构和内存堆栈情况 gdb主要功能如下: ? 监视程序中变量的值 ? 设置程序断点 ? 逐行执行代码 linux操作系统 华软软件学院电子系 P38 GDB调试器 gdb调试时常用的命令如下: 命令 file kill list next step run 说明 装入想要调试的可执行文件 终止正在调试的程序 列出产生执行文件的源码的一部分 执行一行源代码但不进入函数内部 执行一行源代码并且进入函数内部 执行当前被调试的程序 quit watch break 终止gdb 监视一个变量的值而不管它何时被改变 在代码中设置断点,使程序执行到这里时被挂起 make shell linux操作系统 不退出gdb情况下,可以重新产生可执行文件 不离开gdb,执行UNIX shell命令 华软软件学院电子系 P39 Makefile 假设一个工程中包含filea.c、fileb.c、test.c三个文件 如果用gcc编译这个工程,需要 $ gcc -c filea.c –o filea.o $ gcc -c fileb.c –o fileb.o $ gcc -c test.c –o test.o $ gcc filea.o fileb.o test.o –o prog 现在我们使用Makefile对这个工程进行管理,则建立Makefile文件 然后输入命令 $ make linux操作系统 Makefile将自动帮我们进行编译 华软软件学院电子系 P40 Makefile 现在我们简单分析一下这个Makefile文件 prog: filea.o fileb.o test.o gcc filea.o fileb.o test.o -o prog 指定prog程序由3个目标文件filea.o、fileb.o、test.o链接生成 filea.o: filea.c gcc -c filea.c 指定目标文件filea.o由filea.c编译生成 注意:如果filea.c文件在编译之后被修改 则make可以自动重新编译filea.o,最后再生成新的prog linux操作系统 华软软件学院电子系 P41 Makefile Makefile作为一种描述文档一般需要包含如下内容 ? 宏定义 ? 源文件之间的相互依赖关系 ? 可执行的命令 Makefile使用简单的宏指代源文件或编译信息,Linux中称为宏变量 在引用宏时,需要在变量前加$符号,并把变量用()包含起来 $(CFLAGS) 使用宏定义可以使用户脱离冗长乏味的编译选项 linux操作系统 华软软件学院电子系 P42 第四部分 ?进程的概念 ?进程的特性 ?进程的状态及其转换 ?进程的组成 ?Linux中的进程的创建 ?线程 linux操作系统 华软软件学院电子系 P43 进程与程序 ?进程的定义:进程是可并发执行的程序在一个数据 集合的运行过程。它是操作系统动态执行的基本单 元,是系统进行资源分配的独立单位。 ?进程与程序的关联 n 进程是程序的一次执行过程,即一个执行实例 n 程序与进程存在:1:1、1:n的关系 n 进程与程序存在:1:1、1:n的关系 ?进程与程序的区别 n 程序:静态、指令集合、无生命周期、可保存、不是进 程调度和分配资源的单位 n 进程:动态、执行过程、有生命周期、不可保存、是进 程调度和分配资源的单位 n 进程是由程序、数据和进程控制块三部分组成;进程具 有 linux操作系统 华软软件学院电子系 P44 进程的特性 ?进程的特性: n 动态性:进程的实质是程序的一次执行过程,进 程是动态产生,动态消亡的; n 并发性:任何进程都可以同其他进程一起并发执 行; n 独立性:进程是一个能独立运行的基本单位,同 时也是系统分配资源和调度的独立单位; n 异步性:由于进程间的相互制约,使进程具有执 行的间断性,即进程按各自独立的、不可预知的 速度向前推进。 linux操作系统 华软软件学院电子系 P45 进程的基本状态 ?运行态(Running) n 进程占有CPU,并在CPU上运行。在单CPU系统中, 最多只有一个进程处于运行态。 ?就绪态(Ready) n 一个进程已经具备运行条件,但由于无CPU暂时 不能运行的状态(当调度给其CPU时,立即可以 运行)。处于就绪状态的进程可以有多个。队列 的排列次序一般按优先级大小来排列。 ?阻塞态(Blocked) n 指进程因等待某种事件的发生而暂时不能运行的 状态,即使CPU空闲,该进程也不可运行。处于 阻塞状态的进程可以有多个。 linux操作系统 华软软件学院电子系 P46 进程状态之间的转换 进程占有CPU ?进程被调度 获得CPU 运行 ?时间片用完 或被抢占 ?已获得事件 或等待的资源 ?因等待某种事件 或者资源而无法运 行,即使CPU空闲, 该进程也不可运行 等待某 事件或 资源。 具备运行 条件,但 暂无CPU 就绪 阻塞 进程的状态及其转换 linux操作系统 华软软件学院电子系 P47 进程的组成 ?进程的组成 n 程序段:进程所对应的可执行程序; n 数据段:程序运行过程中要用到的数据或工作区; n 进程控制块(PCB):为管理进程设置的一个专 门的数据结构,用于记录进程的外部特征,描述 进程的运动变化过程。 ?进程映像: n 程序是进程的静态部分,可见 n PCB是进程的动态部分,不可见 linux操作系统 华软软件学院电子系 P48 进程控制块PCB ?进程控制块(PCB) n PCB---Process Control Block n 记录了OS控制和管理进程的所需的所有信息, 是进程属性的动态描述(PCB在Linux中对应 task_struct,也称为PD;PCB在Unix中对应 于proc和user结构) ?进程控制块与进程关系: n 每个进程有唯一的PCB。 n 操作系统(OS)根据PCB管理进程。 n 利用PCB实现进程的动态、并发。 n PCB是进程存在的唯一标志。 linux操作系统 华软软件学院电子系 P49 进程控制块PCB ?PCB的内容 n 标识信息:进程标识、用户名 n 说明信息:进程状态、等待原因、进程程序和数 据的存储信息 n 现场信息:记录重要寄存器、时钟等内容,用于 恢复断点 n 管理调度信息:进程优先级、进程队列指针、消 息队列指针、进程使用的资源清单、进程家族关 系、进程当前打开的文件 linux操作系统 华软软件学院电子系 P50 Linux系统中的PCB ?Linux系统中的PCB n 在Linux中,任务和进程是同一概念 n Linux中的PCB即任务数据结构: task_strcut,也称为进程描述符PD ( Processor Descriptor) n 定义在include/linux/sched.h中 linux操作系统 华软软件学院电子系 P51 Linux系统中的PCB ?Linux PCB(task_struct) n 包含进程所有信息 n task_struct数据结构很庞大,但并不复杂,按功能将所 有域划分: u u u u u u u u u u u u 1、进程状态(State) 2、进程调度信息(Scheduling Information) 3、各种标识符(Identifiers) 4、进程通信有关信息(IPC:Inter_Process Communication) 5、时间和定时器信息(Times and Timers) 6、进程链接信息(links) 7、文件系统信息(File System) 8、虚拟内存信息(Virtual Memory) 9、页面管理信息(page) 10、对称多处理器(SMP)信息 11、和处理器相关的环境(上下文)信息(Processor Specific Context) 12、其它信息 华软软件学院电子系 P52 linux操作系统 Linux中与进程相关的命令 PS 功能:对系统中的进程进行监控 [OPTION]参数如下: l:长格式输出 u:按用户名和启动时间顺序来显示进程 j:用任务格式来显示进程 f:用全格式来显示进程 a:显示所有用户的所有进程 x:显示无控制终端的进程 linux操作系统 华软软件学院电子系 P53 Linux中与进程相关的命令 kill 关闭进程:kill 进程号 kill -9 进程号(强行关闭) kill -1 进程号(重启进程) 结束所有进程:killall 查找服务进程号:pgrep 服务名称 关闭进程:pkill 进程名称 linux操作系统 华软软件学院电子系 P54 Linux中与进程相关的命令 top 句法:top [OPTIONS] 功能:实时显示系统中各个进程的资源占用状况 top命令是一个动态显示过程,可以通过用户按键来不断 刷新当前状态。 top命令是Linux下常用的性能分析工具 linux操作系统 华软软件学院电子系 P55 linux进程的创建 ?Linux的进程创建fork()函数 n fork()函数返回值 u = -1:创建失败 u = 0:创建成功,并从子进程返回 u 0:创建成功,并从父进程返回,返回的是子进程PID u fork()函数为系统调用 n fork()函数完成的事务 u 检查现有进程数目 u 分配PCB(task_strcut)及PID u 继承父进程的资源 u 创建进程映像(如静态的程序,动态的PCB)并设置就绪 u 返回:调用进程返回子进程的PID,被调度执行返回0 linux操作系统 华软软件学院电子系 P56 进程的创建 ?fork()函数返回后的处理 n 可依据父进程和子进程返回的值,做相应处理 n 一般程序架构如下: main() { int pid; //子进程的标识符PID while ( (pid=fork()) == -1) ;//直到子进程创建 成功 if (pid == 0) //子进程返回,也称调度返回 { // 插入子进程返回时处理的程序段 } else // 父进程返回,也称调用返回 { // 插入父进程返回时处理的程序段 } } n 小课验证 华软软件学院电子系 linux操作系统 P57 线程 ?线程的定义:有时称轻量级进程,是进 程中的一个执行线路或线索,是一个相 对独立的、可独立调度和指派的执行单 元。 ?资源的拥有者还是进程,线程将原来进 程的两个属性分开处理。 linux操作系统 华软软件学院电子系 P58 线程 线程的性质: ?是进程内的一个相对独立的可执行单元; ?是操作系统中的基本调度单元,在线程中包含调 度所需的信息。 ?一个进程至少有一个线程,可有多个线程,因进 程已不是被调度的单元。 ?线程并不拥有资源,而是共享和使用包含它的进 程所拥有的所有资源。 ?线程在需要时也可创建其他线程。线程有自己的 生命期,也有状态变化。 linux操作系统 华软软件学院电子系 P59 线程和进程的关系 ?单进程、单线程 ?单进程、多线程 ?多进程、一个进程一个线程 ?多进程、一个进程多个线程 linux操作系统 华软软件学院电子系 P60 引入线程的好处(与进程比较) ?创建、撤消一个线程的系统开销小。 ?两个线程的调度切换方便:线程是调度的 基本单位,进程是资源的拥有单位。进程可 以由一个或多个线程组成。在同一进程中, 线程的切换不会引起进程的切换,不同进程 间的线程切换则会引起进程切换。 linux操作系统 华软软件学院电子系 P61 引入线程的好处(与进程比较) ?共享同一地址空间资源:不同进程间的地址 空间是相对独立的,而同一进程的各线程共 享同一地址空间,可访问其隶属的进程资源 。 ?线程通信方便:因为同一进程内的线程共享 内存和文件,因此它们之间可以相互通信, 无须调用内核。 ?占用资源少:线程除了必不可少的一点资料 (私有堆栈和程序计数器)外,自己不拥有系 统资源。 linux操作系统 华软软件学院电子系 P62 预习内容 ?互斥与同步 n 信号量与P、V操作 n 经典进程同步问题 n Linux中的线程 linux操作系统 华软软件学院电子系 P63 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 linux操作系统 华软软件学院电子系 P64 linux操作系统 华软软件学院电子系 P65

