Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6684095
  • 博文数量: 1159
  • 博客积分: 12444
  • 博客等级: 上将
  • 技术积分: 12570
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 21:34
文章分类

全部博文(1159)

文章存档

2016年(126)

2015年(350)

2014年(56)

2013年(91)

2012年(182)

2011年(193)

2010年(138)

2009年(23)

分类: LINUX

2012-09-02 16:56:31


1 操作系统概述

2 操作系统的用户接口

3 中断和异常

4 系统调用

5 进程管理

6 处理机调度与死锁

7 存储管理

8 文件系统

9 设备管理


1  操作系统概述

1.1  操作系统概念

1.1.1  认识操作系统

1.1.2  操作系统的组成及其定义

1.1.3  操作系统的目标

1.1.4  操作系统的作用

1.1.5  推动操作系统发展的主要动力

1.2  操作系统的发展历史及其基本类型

1.2.1  手工操作阶段

1.2.2  单道批处理系统(simple batch processing System)

1.2.3  多道批处理系统(multiprogramming Batch Processing System)

1.2.4  分时操作系统(Time-Sharing Operating System)

1.2.5  实时操作系统(Real Time Operating System)

1.2.6  通用操作系统(General Operating System)

1.2.7  操作系统的进一步发展

1.2.8  个人计算机上的操作系统

1.2.9  网络操作系统(Network Operating System

1.2.10  分布式操作系统

1.2.11  嵌入式操作系统

1.4  操作系统的基本特性

1.4.1  并发(Concurrence)

1.4.2  共享(Sharing)?

1.4.3  虚拟(Virtual)?

1.4.4  异步性(Asynchronism)

1.5  操作系统的主要功能

1.5.1  处理机管理

1.5.2  存储管理

1.5.3  设备管理

1.5.4  文件管理

1.5.5  用户接口

1.6  操作系统的结构设计

1.6.1  模块组合结构

1.6.2  层次结构

1.6.3  虚拟机结构

1.6.4  微内核结构

1.7  计算机硬件简介

1.7.1  计算机的基本硬件元素

1.7.2  与操作系统相关的几种主要寄存器

1.7.3  存储器的访问速度

1.7.4  指令的执行与中断

1.8  算法的描述

1.9  研究操作系统的几种观点

1.9.1  操作系统是计算机资源的管理者

1.9.2  用户界面的观点

1.9.3  进程管理观点

1.10  开放源代码的Unix/Linux操作系统

1.10.1  Unix诞生和发展

1.10.2  Linux诞生

1.10.3  操作系统标准POSIX

1.10.4  GNULinux

1.10.5  Linux的开发模式

1.11  Linux内核

1.11.1  Linux内核的技术特点

1.11.2  Linux内核的位置

1.11.3  Linux内核体系结构

1.12  Linux内核源代码

1.12.1  Linux内核版本

1.12.2  Linux内核源代码的结构

1.13  Linux内核模块编程入门

1.13.1  什么是模块

1.13.2  编写一个简单的模块

1.13.3  应用程序与内核模块的比较

1.14  Linux内核中链表的实现及应用

1.14.1  链表的演化

1.14.2  链表的定义和操作

1.14.3  链表的应用

1.15  基于CentOS的实验环境的搭建

1.15.1  Wine

1.15.2  Source Insight

1.15.3  bochs

1.15  本章总结

 

2  操作系统的用户接口

2.1  脱机命令接口

2.1.1  作业的基本概念

2.1.2  作业的建立

2.2  联机命令接口

2.2.1  联机命令的类型

2.2.2  键盘终端处理程序

2.2.3  命令解释程序

2.2.4  Shell命令语言

2.3  系统调用

2.4  图形用户接口

 

 

3  中断和异常

3.1  中断是什么

3.1.1  中断向量

3.1.2  外设可屏蔽中断

3.1.3  异常及非屏蔽中断

3.1.4  中断描述符表

3.1.5  相关汇编指令

3.2  中断描述符表的初始化

3.2.1  IDT表项的设置

3.2.2  对陷阱门和系统门的初始化

3.2.3  中断门的设置

3.2.4  中断处理程序的形成

3.3  中断处理

3.3.1  中断和异常的硬件处理

3.3.2  中断请求队列的建立

3.3.3  中断处理程序的执行

3.3.4  从中断返回

3.3.5  中断的简单应用

3.4  中断的下半部处理机制

3.4.1  为什么把中断分为两部分来处理

3.4.2  小任务机制

3.4.3  工作队列

3.5  中断应用-时钟中断

3.5.1  时钟硬件

3.5.2  时钟运作机制

3.5.3  Linux时间系统

3.5.5  时钟中断

3.5.5  定时器及应用

3.6  本章小结

 

 

4  系统调用

4.1  系统调用与API、系统命令以及内核函数之关系

4.1.1  系统调用与API

4.1.2  系统调用与系统命令

4.1.3  系统调用与内核函数

4.2  系统调用基本概念

4.2.1  系统调用号

4.2.2  系统调用表

4.2.3  系统调用服务例程和系统调用处理程序

4.2.4  系统调用与过程调用的主要区别

4.3  系统调用实现

4.3.1  初始化系统调用

4.3.2  system_call( )函数

4.3.3  参数传递

4.3.4  跟踪系统调用的执行

4.4  封装例程

4.5  添加新系统调用

4.5.1  添加系统调用的步骤

4.5.2  系统调用的调试

4.6  实例-系统调用日志收集系统

4.6.1  代码结构体系介绍

4.6.2  把代码集成到内核中

4.7  本章小结

 

5  进程管理

5.1  进程的概念

5.1.1  程序和进程

5.1.2  前趋图

5.1.3  程序的顺序执行及其特征

5.1.4  程序的并发执行及其特征

5.1.5  进程的特征、进程的状态及其转换

5.1.6  进程的定义

5.1.7  进程和程序、作业和进程的区别和关系

5.2  进程的描述

5.2.1  进程控制块

5.2.2  进程上下文

5.2.3  进程空间

5.3  Linux系统中的进程控制块

5.3.1  进程状态

5.3.2  进程标识符

5.3.3  进程之间的亲属关系

5.3.4  进程控制块的存放

5.4  Linux系统中进程的组织方式

5.4.1  进程链表

5.4.2  哈希表

5.4.3  就绪队列

5.4.4  等待队列

5.5  进程控制

5.5.1  进程的创建

5.5.2  进程的终止

5.5.3  进程的阻塞与唤醒

5.5.4  进程的挂起与激活

5.6  Linux中与进程相关的系统调用及其应用

5.6.1  fork系统调用

5.6.2  exec系统调用

5.6.3  wait系统调用

5.6.4  exit系统调用

5.6.5  进程的一生

5.6.6  系统调用及应用

5.6.7  进程的层次结构

5.7  进程互斥

5.7.1  临界资源、临界区、互斥

5.7.2  临界区互斥解决方法

5.7.3  信号量和P,V原语

5.7.4  用P,V原语实现进程互斥

5.9  进程同步

5.9.1  同步的概念

5.9.2  私用信号量

5.9.3  用P,V原语操作实现同步

5.10  经典进程的同步问题

5.10.1  生产者—消费者问题

5.10.2  哲学家进餐问题

5.10.3  读者-写者问题

5.11  管程机制

5.11.1  管程的基本概念

5.11.2  利用管程解决生产者-消费者问题

5.12  内核同步措施

5.12.1  原子操作

5.12.2  自旋锁

5.12.3  信号量

5.14  内核多任务并发实例

5.14.1  内核任务及其并发关系

5.14.2  问题描述

5.14.3  实现机制

5.15  进程通信

5.15.1  进程的通信方式

5.15.2  消息缓冲机制

5.15.3  邮箱通信

5.15.4  进程通信的实例——和控制台的通信

5.15.5  进程通信的实例—管道

5.16  线程

5.16.1  线程的概念

5.16.2  线程的适用范围

5.16.3  进程和线程的关系

5.16.4  线程的执行特性

5.16.5  线程的分类

5.16.6  线程间的同步和通信

5.16.7  内核支持线程和用户级线程

5.16.8  线程控制

5.17  本章总结

 

6  处理机调度与死锁      

6.1  处理机调度的基本概念

6.1.1  调度类型——高级、中级和低级调度

6.1.2  调度队列模型

6.1.3  选择调度方式和调度算法的若干准则

6.1.4  可抢先、不可抢先、完全可抢先

6.2  分级调度

6.2.1  作业的状态及其转换

6.2.2  调度的层次

6.2.3  作业与进程的关系

6.3  作业调度

6.3.1  作业调度基本概念

6.3.2  作业调度功能

6.3.2  作业调度目标与性能衡量

6.4  进程调度

6.4.1  进程调度的功能

6.4.2  进程调度的时机

6.4.3  进程上下文切换

6.4.4  进程调度性能评价

6.5  调度算法

6.5.1  先来先服务调度算法(FCFS) (First Come First Serve)

6.5.2  短作业(进程)优先调度算法(Shortest Process NextSPN)

6.5.3  最短剩余时间优先(Shortest Remaining TimeSRT)策略

6.5.3  最高响应比优先法(Highest Response Ratio NextHRRN)

6.5.4  时间片轮转法(round robin

6.5.5  多级队列法

6.5.5  多级反馈队列(Feedback,FB)调度算法

6.5.6  高优先权优先调度算法

6.5.7  多处理器的调度算法

6.5.6  性能比较

6.6  实时调度

6.6.1  实时系统的特点

6.6.2  实现实时调度的基本条件

6.6.3  实时调度算法的分类

6.6.4  常用的几种实时调度算法

4.6.3  时限调度算法与频率单调调度算法

6.7  多处理机系统中的调度

6.7.1  多处理器系统的类型

6.7.2  进程分配方式

6.7.3  进程(线程)调度方式

6.8  死锁

6.8.1  死锁的概念

6.8.2  死锁的防止

6.8.3  死锁的避免

6.8.4  死锁的检测与解除

6.9  Linux进程调度

6.9.1  基本原理

6.9.2  时间片

6.9.3  Linux进程调度时机

6.9.4  进程调度的依据

6.9.5  调度函数schedule( )的实现

6.9.6  Linux2.6调度程序的改进

 

7  存储管理      

7.1  存储器管理引言

7.1.1  存储器的层次

7.1.2  用户程序的主要处理阶段

7.1.3  重定位

7.2  内存寻址

7.2.1  Intel X86 CPU寻址的演变

7.2.2  80X86寄存器简介

7.2.3  物理地址、虚拟地址及线性地址

7.3  Linux中的汇编语言

7.3.1  AT&TIntel汇编语言的比较

7.3.2  AT&T汇编语言的相关知识

7.4  存储管理的功能

7.4.1  虚拟存储器

7.4.2  地址变换

7.4.3  内外存数据传输的控制

7.4.4  内存的分配与回收

7.4.5  内存信息的共享与保护

7.5  连续分配管理方式

7.5.1  单一连续分配方式

7.5.2  分区管理基本原理

7.5.3  分区的分配与回收

7.5.4  有关分区管理其他问题的讨论

7.6  覆盖与交换技术

7.6.1  覆盖(overlay)

7.6.2  交换(swapping)

7.8  分页管理方式

7.8.1  页面与页表

5.4.1  页式管理的基本原理

5.4.2  静态页面管理

7.8.2  地址变换机构

7.8.3  两级和多级页表

5.4.5  存储保护

5.4.6  页式管理的优缺点(动态页式管理)

7.9  分段管理方式

7.9.1  分段存储管理方式的引入

5.5.1  段式管理的基本思想

7.9.2  分段存储管理的基本概念

7.9.2  分段系统的基本原理

7.9.2  分页和分段的主要区别

7.9.3  信息共享——段的共享与保护

7.9.4  段式管理的优缺点

7.10  段页式管理方式

7.10.1  段页式管理的基本思想

7.10.3  段式与页式存储管理的比较

5.5.5  段页式管理的实现思想

7.11  虚拟存储器的基本概念(虚拟内存管理)

7.11.1  虚拟存储器的引入

7.11.2  局部性原理和抖动问题

7.11.3  虚拟存储器的实现方法

7.11.4  虚拟存储器的特征

7.12  请求分页存储管理(动态页式管理)方式

7.12.1  动态页式管理

7.12.2  请求分页的基本思想(虚拟分页)

7.12.4  硬件支持及缺页处理

7.12.5  内存分配策略和分配算法

7.12.6  调页策略

7.12.7  页的共享和保护

7.12.7  页式管理的优缺点

7.13  请求页式管理中的页面置换算法

7.13.1  最佳(Optimal)置换算法(理想型淘汰算法)(向后看)

7.13.2  先进先出(FIFO)置换算法

7.13.3  最近最久未使用(LRU)置换算法(向前看)

7.13.4  Clock置换算法

7.13.5  随机淘汰算法

7.14  请求分段存储管理方式

7.14.1  请求分段中的硬件支持

7.14.2  段式管理的地址变换

7.14.2  分段的共享与保护

7.14.3  段式管理的优缺点

2.2 段机制

221 地址转换及保护

222 Linux中的段

2.3 分页机制

231页与页表

232线性地址到物理地址的转换

233 分页举例

234 页面高速缓存

24  Linux中的分页机制

26 Linux系统地址映射举例

4.1 Linux的内存管理概述

4.1.1 虚拟内存、内核空间和用户空间

4.1.2 虚拟内存实现机制间的关系

4.2 进程的用户空间管理

4.2.1 进程用户空间的描述

4.2.2 进程用户空间的创建

4.2.3 虚存映射

4.2.4 进程的虚存区举例

4.2.5 与用户空间相关的系统调用

4.3 请页机制

4.3.1 缺页异常处理程序

4.3.2 请求调页

4.3.3 写时复制

4.4 物理内存分配与回收

4.4.2伙伴算法

4.4.3物理页面的分配

4.4.4物理页面的回收

4.4.5 Slab分配机制

4.4.6 内核空间非连续内存区的分配

4.4.7物理内存分配举例

4.5 交换机制

4.5.1 交换的基本原理

4.5.2页面交换守护进程kswapd

4.6内存管理实例

4.6.2代码体系结构介绍

4.6.3 一步一步

4.6.4 程序代码

 

 

8 文件系统 

8.1  文件系统概述

8.1.1  文件、记录和数据项

8.1.2  文件类型、文件系统及其功能

8.1.3  文件操作

8.2  文件的逻辑结构与存取方法

8.2.1  文件逻辑结构的类型

8.2.2  顺序文件

8.2.3  索引文件

8.2.4  索引顺序文件

8.2.5  直接文件和哈希文件

8.2.6  存取方法

8.3  文件的物理结构与存储设备

8.3.1  文件的物理结构

8.3.2  存储设备

8.4  文件目录管理——目录结构

8.4.1  文件的组成

8.4.1  文件控制块、索引结点、文件目录

8.4.2  目录结构:文件目录的组织

7.5.4  目录管理

8.4.3  目录查询技术

8.4.4  文件的使用

8.5  文件共享、文件保护

7.5.3  便于共享的文件目录

?文件的链接

5. 文件保护

?文件的存取控制

7.6   文件存取控制

6.6.2  利用符号链实现文件共享

6.6.3  磁盘容错技术

6.7 数据一致性控制

6.7.1 事务

6.7.2  检查点

6.7.3 并发控制

6.7.4 重复数据的数据一致性问题

8.6  文件存储空间的管理

8.6.1  空闲空间表法(FST

8.6.2  空闲块链接法

8.6.3  位示图法(Bit Map)

8.6.4  空闲块成组链接法

8.6  文件系统实现

8.6.1  文件系统的层次模型

8.6.2  目录实现

8.6.3  文件实现

8.7  磁盘组织与管理

8.7.1  磁盘的结构

8.7.2  磁盘调度算法(见I/O部分)

8.7.3  磁盘的管理

6.3  外存分配方式

6.3.1 连续分配

6.3.2 链接分配

6.3.3 索引分配

81  Linux文件系统基础

8.1.1 Linux文件结构

8.1.2 文件类型

8.1.3 存取权限和文件模式

8.1.4  Linux文件系统

8.2  虚拟文件系统

8.2.1虚拟文件系统的引入

8.2.2  VFS中对象的演绎

+++++++++++++++++++++++++++

8.2.3 VFS的超级块

8.2.4  VFS的索引节点

8.2.4 目录项对象

8.2.5  与进程相关的文件结构

8.2.6主要数据结构间的关系

8.3  文件系统的注册、安装与卸载

8.3.1  文件系统的注册和注销

8.3.2  文件系统的安装

8.3.3  文件系统的卸载

8.4 文件的打开与读写

8.4.1文件打开

8.4.2文件读写

8.6编写一个文件系统

8.6.1  Linux文件系统的实现要素

8.6.2  什么是Romfs文件系统

8.6.3 Romfs文件系统布局与文件结构

8.6.4具体实现的对象

 

9  设备管理      

9.1 设备管理概述

9.1.1  I/O设备

9.1.2  I/O管理目标

9.1.3  I/O管理功能

9.1.4  I/O应用接口

9.1.5  I/O控制方式

9.2 输入/输出硬件组织

9.2.1 输入/输出设备的分类

9.2.2 设备控制器

9.2.3 通道

9.3 输入/输出软件组织

9.3.1 输入/输出软件的层次结构

9.3.2 中断处理程序

9.3.3 设备驱动程序

9.3.4 与设备无关的I/O软件

9.3.5 用户层的I/O软件

9.4  I/O调度概念

9.5  高速缓存与缓冲区

9.5.1 缓冲技术的引入

9.5.2 单缓冲

9.5.3 双缓冲

9.5.4 缓冲池(Buffer Pool

9.6  设备的分配与回收

9.6.1 设备分配所用的数据结构

9.6.2 设备分配与回收

9.5  假脱机技术(SPOOLing)

9.6  出错处理

5.6 Linux设备管理

5.6.1 Linux设备管理基础

5.6.2 Linux设备驱动程序

5.6.3 Linux的中断处理

5.7 设备驱动程序的设计

5.7.1设备驱动程序的统一模型与其性能的一般指南

5.7.2 LinuxPCI设备驱动程序的设计

1设备管理概述

设备的分类和标识

5.1   I/O   

5.1.1 I/O设备

5.1.2 设备控制器

5.1.3 I/O通道

5.1.4 总线系统

5.2   I/O控制方式

5.2.1 程序I/O方式

5.2.2 中断驱动I/O控制方式

4 中断处理

?中断的一般处理过程

?系统调用的实施

5.2.3 直接存储器访问DMA I/O控制方式

5.2.4  I/O通道控制方式

5.5      

5.5.1 设备驱动程序的功能和特点

5.5.2 设备驱动程序的处理过程

3 输入输出管理

?处理I/O请求的步骤

?设备驱动程序的功能

5.6  磁盘存储器管理

5.6.1 磁盘性能简述

5.6.2  磁盘调度

5.6.3 磁盘高速缓存(Disk Cache)

5.6.4 提高磁盘I/O速度的其它方法

5.6.5 廉价磁盘冗余阵列

8.2数据的传送控制方式

8.6 设备驱动程序(1)

87 驱动调度技术(1)

8.7.1 存储设备的物理结构

87.2循环排序(1)

8.7.3 优化分布(1)

8.7.4 交替地址

8.7.7提高磁盘I/O速度的方法

8.7.3 设备独立性(1)

8.7 虚拟设备

8.7.1 问题的提出

8.7.2 斯普林系统的设计和实现(1)

9.1  概述

9.2 设备驱动程序框架

9. 3  I/O空间的管理

9.3.1 I/O端口和I/O内存

9.3.2 I/O资源管理

9.3.3 访问I/O端口空间

9.3.4访问I/O内存资源

§6.2 LinuxI/O控制

一.查询等待方式

二.中断方式

§6.1 设备管理概述

. Linux设备的分类

. 设备驱动程序

三.设备的识别

四.设备文件

9.4 字符设备驱动程序

一.字符设备管理

9.4.1.字符设备的数据结构

9.4.2 分配和释放设备号

9.4.3字符设备驱动的组成

9.4.4  加载和卸载函数

9.4.5 实现file_operaions中定义的函数

9.5 块驱动程序

二.块设备管理

9.5.1 块驱动程序的注册

9.5.2 块设备请求

8.5  本章总结

 





阅读(1639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~