Linux操作系统入门与进阶

4星 · 超过85%的资源 需积分: 50 144 下载量 45 浏览量 更新于2024-08-02 2 收藏 9.03MB PDF 举报
"Linux操作系统.pdf" 本文档详细介绍了Linux操作系统的基础知识,从Linux的起源、发展,到其核心特性,以及如何使用和管理Linux系统。它涵盖了Linux的多个关键主题,包括Linux的图形环境、命令行操作、安装过程、C/C++编程、常用工具软件、系统管理、网络服务配置如WWW、FTP和Email服务器,以及数据库服务器PostgreSQL的配置。文档旨在提供全面的学习材料,适合初学者和有一定基础的用户。 Linux操作系统是开源的,它的出现打破了Unix系统和Windows系统的市场垄断。Unix在企业环境中广泛使用,而Windows则在个人电脑市场占据主导。Linux的诞生,尤其是其免费和开源的特性,使得更多人能够接触和使用类似Unix的功能强大的操作系统。 Linux的发展始于1991年,由Linus Torvalds基于Andy Tanenbaum的Minix系统构建。随着时间的推移,Linux逐渐演化成为一个庞大的项目,吸引了全球开发者社区的贡献,形成了多种不同的Linux发行版,如Ubuntu、Fedora、Debian等,满足了不同用户和组织的需求。 在第一章“Linux简介”中,读者可以了解到Linux是如何从一个学生项目成长为全球性的操作系统平台的。Linux的开源本质使其不断进化,适应各种新需求,同时也鼓励用户参与改进和定制。 第二章“图形环境”讲解了Linux下的图形用户界面(GUI),如GNOME和KDE桌面环境,以及如何通过X Window System进行图形化操作。 第三章“命令与Shell环境”介绍了Linux命令行的基本操作,如bash shell的使用,以及常用命令如ls、cd、cp、mv等的用法,这是理解和管理Linux系统的基础。 第四章“Linux的安装”涵盖了安装Linux发行版的过程,包括分区、选择安装类型等关键步骤。 第五章“C/C++编程”教导读者如何在Linux环境下进行程序开发,包括编译器的使用、调试工具和基本的编程技巧。 第六章“常用工具软件”涉及各种实用的Linux命令行工具,如文本编辑器Vim、Emacs,以及系统管理工具如apt和yum。 第七章“系统管理”涵盖系统更新、用户管理、网络配置、进程监控等方面,对于系统管理员来说至关重要。 第八至第十章分别介绍了如何配置和管理WWW、FTP和Email服务器,这些都是Linux在企业环境中常扮演的角色。 第十一章“PostgreSQL数据库服务器配置”讲述了如何在Linux上安装和管理关系型数据库系统,这对于数据存储和处理的应用非常有用。 附录部分提供了实验题目,帮助读者通过实践来巩固所学知识。 这份文档是学习和理解Linux操作系统的一份宝贵资料,不仅包含了理论知识,还提供了实际操作的指导,对希望深入Linux世界的读者来说是一本理想的教材。
2012-01-06 上传
自己动手写操作系统在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯路。全书共分7章。 第1章 马上动手写一个最小的“操作系统”1 1.1 准备工作1 1.2 10分钟完成的操作系统1 1.3 Boot Sector3 1.4 代码解释3 1.5 水面下的冰山5 1.6 回顾6 第2章 搭建你的工作环境7 2.1 虚拟计算机(Virtual PC)7 2.1.1 Virtual PC初体验8 2.1.2 创建你的第一个Virtual PC9 2.1.3 虚拟软盘研究12 2.1.4 虚拟软盘实战14 2.2 编译器(NASM & GCC)18 2.3 安装虚拟Linux19 2.4 在虚拟Linux上访问Windows文件夹26 2.5 安装虚拟PCDOS26 2.6 其他要素29 2.7 Bochs29 2.7.1 Bochs vs. Virtual PC vs. VMware30 2.7.2 Bochs的使用方法31 2.7.3 用Bochs进行调试33 2.7.4 在Linux上开发34 2.8 总结与回顾36 第3章 保护模式(Protect Mode)37 3.1 认识保护模式37 3.1.1 GDT(Global Des criptor Table) 42 3.1.2 实模式到保护模式,不一般的jmp45 3.1.3 描述符属性47 3.2 保护模式进阶50 3.2.1 海阔凭鱼跃50 3.2.2 LDT(Local Des criptor Table)58 3.2.3 特权级62 3.3 页式存储82 3.3.1 分页机制概述83 3.3.2 编写代码启动分页机制84 3.3.3 PDE和PTE85 3.3.4 cr388 3.3.5 回头看代码88 3.3.6 克勤克俭用内存90 3.3.7 进一步体会分页机制100 3.4 中断和异常107 3.4.1 中断和异常机制109 3.4.2 外部中断111 3.4.3 编程操作8259A113 3.4.4 建立IDT116 3.4.5 实现一个中断117 3.4.6 时钟中断试验119 3.4.7 几点额外说明121 3.5 保护模式下的I/O122 3.5.1 IOPL122 3.5.2 I/O许可位图(I/O Permission Bitmap)123 3.6 保护模式小结123 第4章 让操作系统走进保护模式125 4.1 突破512字节的限制125 4.1.1 FAT12126 4.1.2 DOS可以识别的引导盘131 4.1.3 一个最简单的Loader132 4.1.4 加载Loader入内存133 4.1.5 向Loader交出控制权142 4.1.6 整理boot.asm142 4.2 保护模式下的“操作系统”144 第5章 内核雏形146 5.1 用NASM在Linux下写Hello World146 5.2 再进一步,汇编和C同步使用148 5.3 ELF(Executable and Linkable Format)150 5.4 从Loader到内核155 5.4.1 用Loader加载ELF155 5.4.2 跳入保护模式161 5.4.3 重新放置内核170 5.4.4 向内核交出控制权175 5.4.5 操作系统的调试方法176 5.5 扩充内核184 5.5.1 切换堆栈和GDT184 5.5.2 整理我们的文件夹191 5.5.3 Makefile191 5.5.4 添加中断处理200 5.5.5 两点说明218 5.6 小结219 第6章 进程221 6.1 迟到的进程221 6.2 概述222 6.2.1 进程介绍222 6.2.2 未雨绸缪——形成进程的必要考虑222 6.2.3 参考的代码224 6.3 最简单的进程224 6.3.1 简单进程的关键技术预测225 6.3.2 第一步——ring0→ring1227 6.3.3 第二步——丰富中断处理程序243 6.3.4 进程体设计技巧254 6.4 多进程256 6.4.1 添加一个进程体256 6.4.2 相关的变量和宏257 6.4.3 进程表初始化代码扩充258 6.4.4 LDT260 6.4.5 修改中断处理程序261 6.4.6 添加一个任务的步骤总结263 6.4.7 号外:Minix的中断处理265 6.4.8 代码回顾与整理269 6.5 系统调用280 6.5.1 实现一个简单的系统调用280 6.5.2 get_ticks的应用286 6.6 进程调度292 6.6.1 避免对称——进程的节奏感292 6.6.2 优先级调度总结300 第7章 输入/输出系统302 7.1 键盘302 7.1.1 从中断开始——键盘初体验302 7.1.2 AT、PS/2键盘304 7.1.3 键盘敲击的过程304 7.1.4 解析扫描码309 7.2 显示器325 7.2.1 初识TTY325 7.2.2 基本概念326 7.2.3 寄存器328 7.3 TTY任务332 7.3.1 TTY任务框架的搭建334 7.3.2 多控制台340 7.3.3 完善键盘处理346 7.3.4 TTY任务总结354 7.4 区分任务和用户进程354 7.5 printf357 7.5.1 为进程指定TTY357 7.5.2 printf()的实现358 7.5.3 系统调用write()361 7.5.4 使用printf()363 后记366 参考文献369 附录书中的章节和代码对照表370