深入理解Linux内核 Chapter1知识点

本文为深入理解Linux内核一章总结的重要知识点
详细内容见:http://blog.csdn.net/feather_wch/article/details/50668247

1-Linux操作系统的特点?

八种

2-Linux操作系统相对于其他Unix-like操作系统的优势?

七种

3-什么是操作系统

通俗讲,操作系统就是一系列基础的程序的集合。

4-什么是kernel

在这些程序集中最重要的就是kernel(内核)

5-操作系统一定涉及的两个主要内容
  1. 与硬件设备打交道
  2. 为应用程序提供可执行的环境
6-Multiuser Systems(多用户操作系统)必须具备的特性
  1. 验证机制来确认用户信息
  2. 应对会阻塞其他应用程序运行的臭虫(buggy)用户程序的保护机制。
  3. 应对那些干扰或者破坏他人程序的恶毒用户进程的保护机制
  4. 计数机制用于限制每个用户使用的资源数目
7-什么是进程?进程和程序的区别?

进程:“an instance(实例) of a program in execution” or “execution context” of a running program. (程序处于执行时的实例 或者是 正在运行程序的执行上下文)

区别:several processes can execute the same program concurrently, while the same process can execute several programs sequentially.(多个进程可以同时执行同一个程序。同一个进程顺序执行数个程序)

8-Linux采用modules的优点?
  1. modularized approach
  2. Platform independence
  3. Frugal(花费少的) main memory usage
  4. No performance penalty
9-Linux hard link和symbolic link的区别?
10-Linux文件类型有哪些?

七种

11-什么是文件系统

文件系统就是硬盘区域的物理组织在用户层面的概念。当用户访问文件内容时,实际上是在访问存在硬件块设备上存储的数据。

12-Linux memory menagement中最主要的部分

virtual memory, Random access memory usage,Kernel Memory Allocator, Process virtual address space handling, Caching, Device Drivers

13-virtual memory是什么?

vm是硬件MMU和应用程序内存请求(memory request)之间的逻辑层。

14-vm的优点和目标有哪些?
  • Several processes can be executed concurrently.多个进程可以同时执行
  • It is possible to run applications whose memory needs are larger than the available physical memory.(可以执行需求的空间比当前可获得物理空间要大的应用程序)
  • Processes can execute a program whose code is only partially loaded in memory.(进城可以执行仅仅部分代码加载到内存中的程序)
  • Each process is allowed to access a subset of the available physical memory.(每个进程可以访问可获得的物理内存的子集)
  • Processes can share a single memory image of a library or program.(进程可以分享库或者程序的单一的内存镜像)
  • Programs can be relocatable that is, they can be placed anywhere in physical memory.(程序可以被重定位,可以被放到物理内存任何一个地方)
  • Programmers can write machine-independent code, because they do not need to be concerned about physical memory organization.(程序员可以编写机器独立的代码,因为他们不需要关心物理内存组织)
15-Random access memory usage?
  1. 一部分用于存储kernel image,剩下部分用于三方面
  2. To satisfy kernel requests for buffers, descriptors, and other dynamic kernel data structures
  3. To satisfy process requests for generic memory areas and for memory mapping of files
  4. To get better performance from disks and other buffered devices by means of caches
16-好的KMA需要有哪些特性?
  • It must be fast. Actually, this is the most crucial attribute, because it is invoked by all kernel subsystems (including the interrupt handlers).必须非常快,这是最重要的属性,因为所有的内核子系统都要调用他,包括中断处理函数。
  • It should minimize the amount of wasted memory.(需要最小化浪费的内存)
  • It should try to reduce the memory fragmentation problem.(需要减少内存碎片问题)
  • It should be able to cooperate with the other memory management subsystems to borrow and release page frames from them.(能和其他内存管理子系统协调工作来租借和释放page frames)
17-Process virtual address space handling: demand paging?

所有的Unix-like操作系统都采用了demand paging的memory allocation strategy策略。a page frame仅仅当进程访问其虚拟内存地址从而产生异常的时候,才分配给这个进程。

18-使用设备驱动(device drivers)的优点:
  • Device-specific code can be encapsulated in a specific module.(设备特定代码可以被封装到特定的模块中)
  • Vendors can add new devices without knowing the kernel source code; only the interface specifications must be known.(生产商可以不知道内核源代码就增加新的设备,仅仅需要知道接口规范)
  • The kernel deals with all devices in a uniform way and accesses them through the same interface.(内核用统一的方法处理所有的设备,并且通过一样的接口来调用他们)
  • It is possible to write a device driver as a module that can be dynamically loaded in the kernel without requiring the system to be rebooted. It is also possible to dynamically unload a module that is no longer needed, therefore minimizing the size of the kernel image stored in RAM.(能够编写设备驱动作为模块动态地加载到内核中而不需要系统重启。也能动态卸载。这样能过最小化kernel image的尺寸)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Preface The Audience for This Book Organization of the Material Level of Description Overview of the Book Background Information Conventions in This Book How to Contact Us Safari? Enabled Acknowledgments Chapter 1. Introduction Section 1.1. Linux Versus Other Unix-Like Kernels Section 1.2. Hardware Dependency Section 1.3. Linux Versions Section 1.4. Basic Operating System Concepts Section 1.5. An Overview of the Unix Filesystem Section 1.6. An Overview of Unix Kernels Chapter 2. Memory Addressing Section 2.1. Memory Addresses Section 2.2. Segmentation in Hardware Section 2.3. Segmentation in Linux Section 2.4. Paging in Hardware Section 2.5. Paging in Linux Chapter 3. Processes Section 3.1. Processes, Lightweight Processes, and Threads Section 3.2. Process Descriptor Section 3.3. Process Switch Section 3.4. Creating Processes Section 3.5. Destroying Processes Chapter 4. Interrupts and Exceptions Section 4.1. The Role of Interrupt Signals Section 4.2. Interrupts and Exceptions Section 4.3. Nested Execution of Exception and Interrupt Handlers Section 4.4. Initializing the Interrupt Descriptor Table Section 4.5. Exception Handling Section 4.6. Interrupt Handling Section 4.7. Softirqs and Tasklets Section 4.8. Work Queues Section 4.9. Returning from Interrupts and Exceptions Chapter 5. Kernel Synchronization Section 5.1. How the Kernel Services Requests Section 5.2. Synchronization Primitives Section 5.3. Synchronizing Accesses to Kernel Data Structures Section 5.4. Examples of Race Condition Prevention Chapter 6. Timing Measurements Section 6.1. Clock and Timer Circuits Section 6.2. The Linux Timekeeping Architecture Section 6.3. Updating the Time and Date Section 6.4. Updating System Statistics Section 6.5. Software Timers and Delay Functions Section 6.6. System Calls Related to Timing Measurements Chapter 7. Process Scheduling Section 7.1. Scheduling Policy Section 7.2. The Scheduling Algorithm Section 7.3. Data Structures Used by the Scheduler Section 7.4. Functions Used by the Scheduler Section 7.5. Runqueue Balancing in Multiprocessor Systems Section 7.6. System Calls Related to Scheduling Chapter 8. Memory Management Section 8.1. Page Frame Management Section 8.2. Memory Area Management Section 8.3. Noncontiguous Memory Area Management Chapter 9. Process Address Space Section 9.1. The Processs Address Space Section 9.2. The Memory Descriptor Section 9.3. Memory Regions Section 9.4. Page Fault Exception Handler Section 9.5. Creating and Deleting a Process Address Space Section 9.6. Managing the Heap Chapter 10. System Calls Section 10.1. POSIX APIs and System Calls Section 10.2. System Call Handler and Service Routines Section 10.3. Entering and Exiting a System Call Section 10.4. Parameter Passing Section 10.5. Kernel Wrapper Routines Chapter 11. Signals Section 11.1. The Role of Signals Section 11.2. Generating a Signal Section 11.3. Delivering a Signal Section 11.4. System Calls Related to Signal Handling Chapter 12. The Virtual Filesystem Section 12.1. The Role of the Virtual Filesystem (VFS) Section 12.2. VFS Data Structures Section 12.3. Filesystem Types Section 12.4. Filesystem Handling Section 12.5. Pathname Lookup Section 12.6. Implementations of VFS System Calls Section 12.7. File Locking Chapter 13. I/O Architecture and Device Drivers Section 13.1. I/O Architecture Section 13.2. The Device Driver Model Section 13.3. Device Files Section 13.4. Device Drivers Section 13.5. Character Device Drivers Chapter 14. Block Device Drivers Section 14.1. Block Devices Handling Section 14.2. The Generic Block Layer Section 14.3. The I/O Scheduler Section 14.4. Block Device Drivers Section 14.5. Opening a Block Device File Chapter 15. The Page Cache Section 15.1. The Page Cache Section 15.2. Storing Blocks in the Page Cache Section 15.3. Writing Dirty Pages to Disk Section 15.4. The sync( ), fsync( ), and fdatasync( ) System Calls Chapter 16. Accessing Files Section 16.1. Reading and Writing a File Section 16.2. Memory Mapping Section 16.3. Direct I/O Transfers Section 16.4. Asynchronous I/O Chapter 17. Page Frame Reclaiming Section 17.1. The Page Frame Reclaiming Algorithm Section 17.2. Reverse Mapping Section 17.3. Implementing the PFRA Section 17.4. Swapping Chapter 18. The Ext2 and Ext3 Filesystems Section 18.1. General Characteristics of Ext2 Section 18.2. Ext2 Disk Data Structures Section 18.3. Ext2 Memory Data Structures Section 18.4. Creating the Ext2 Filesystem Section 18.5. Ext2 Methods Section 18.6. Managing Ext2 Disk Space Section 18.7. The Ext3 Filesystem Chapter 19. Process Communication Section 19.1. Pipes Section 19.2. FIFOs Section 19.3. System V IPC Section 19.4. POSIX Message Queues Chapter 20. Program ExZecution Section 20.1. Executable Files Section 20.2. Executable Formats Section 20.3. Execution Domains Section 20.4. The exec Functions Appendix A. System Startup Section A.1. Prehistoric Age: the BIOS Section A.2. Ancient Age: the Boot Loader Section A.3. Middle Ages: the setup( ) Function Section A.4. Renaissance: the startup_32( ) Functions Section A.5. Modern Age: the start_kernel( ) Function Appendix B. Modules Section B.1. To Be (a Module) or Not to Be? Section B.2. Module Implementation Section B.3. Linking and Unlinking Modules Section B.4. Linking Modules on Demand Bibliography Books on Unix Kernels Books on the Linux Kernel Books on PC Architecture and Technical Manuals on Intel Microprocessors Other Online Documentation Sources Research Papers Related to Linux Development About the Authors Colophon Index

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值