一直对linux内核很感兴趣,早就想深入的学习下,由于自己目前的水平还比较菜,所以在blog中记录下学习中的心得和体会,一则自己做一个记录,同时也可以督促自己的学习进度;二来可以抛砖引玉,希望和我一样对内核有兴趣的朋友们多多指点,共同进步。
主要是一些概述性的内容,主要包括:
1、Unix和Linux发展的背景和历史,这部分没有什么可说的,作为常识了解吧。
2、操作系统和内核概述
(1)内核主要组件
内核有事也被称为是supervisor或者core之类,典型的内核组件通常包括
(2)MMU和地址空间
对于带有受保护内存管理单元(Protected MMU)的操作系统来说,kernel通常是处在比一般用户程序更高级的状态,kernel具有受保护的内存空间和对硬件的直接访问,这种更高层的状态和受保护的内存空间一起,称为内核空间(Kernel Space);应用程序则运行在用户空间(User space),只能看到系统可用资源的一个子集并无法执行某些系统功能。
在运行内核时,系统在内核空间以内核模式运行,当运行用户应用程序时,系统在用户空间以User Mode运行。
下图为Linux系统体系结构的示意(引自 参考资料1)
(3)中断
几乎所有的体系结构,都提供了中断的概念,当硬件需要和系统通信时,它会发起一个中断从而以异步方式中断内核。
中断是以数字标示的,内核根据中断号来执行指定的中断处理器(interrupt handler)来处理和响应中断。
目前下面的这句话没有理解,等读到后续章节再回过头看吧
To provide synchronization, the kernel can usually disable interrupts either all interrupts or just one specific interrupt number.
在很多操作系统中,包括Linux,中断处理器并不在进程上下文中运行。相反,他们运行在一个特殊的中断上下文环境中,这个context并不与任何进程存在关联。这个特殊的上下文环境仅仅是为了中断处理器更快的响应中断,然后退出。
上下文环境表述了内核的活动范围,我们可以概括的说,在任何一个时刻,内核在做下面三件事其中之一:
在内核空间,进程上下文中,为进程执行
在内核空间,中断上下文中,不与任何进程关联,处理中断
在用户空间,在进程中执行用户代码
参考资料:
1、Linux Kernel Development (2nd Edition) 英文影印版 Robert Love 机械工业出版社
2、Anatomy of the Linux kernel
From http://www.ibm.com/developerworks/linux/library/l-linux-kernel/
[ 第一章 ] Introduction to the Linux Kernel
主要是一些概述性的内容,主要包括:
1、Unix和Linux发展的背景和历史,这部分没有什么可说的,作为常识了解吧。
2、操作系统和内核概述
(1)内核主要组件
内核有事也被称为是supervisor或者core之类,典型的内核组件通常包括
用于中断服务请求的interrupt handlers |
用于为多进程分配处理其时间的调度器scheduler |
用于管理进程地址空间的memory management system |
以及提供进程间通信等的系统服务 |
(2)MMU和地址空间
对于带有受保护内存管理单元(Protected MMU)的操作系统来说,kernel通常是处在比一般用户程序更高级的状态,kernel具有受保护的内存空间和对硬件的直接访问,这种更高层的状态和受保护的内存空间一起,称为内核空间(Kernel Space);应用程序则运行在用户空间(User space),只能看到系统可用资源的一个子集并无法执行某些系统功能。
在运行内核时,系统在内核空间以内核模式运行,当运行用户应用程序时,系统在用户空间以User Mode运行。
下图为Linux系统体系结构的示意(引自 参考资料1)
(3)中断
几乎所有的体系结构,都提供了中断的概念,当硬件需要和系统通信时,它会发起一个中断从而以异步方式中断内核。
中断是以数字标示的,内核根据中断号来执行指定的中断处理器(interrupt handler)来处理和响应中断。
目前下面的这句话没有理解,等读到后续章节再回过头看吧
To provide synchronization, the kernel can usually disable interrupts either all interrupts or just one specific interrupt number.
在很多操作系统中,包括Linux,中断处理器并不在进程上下文中运行。相反,他们运行在一个特殊的中断上下文环境中,这个context并不与任何进程存在关联。这个特殊的上下文环境仅仅是为了中断处理器更快的响应中断,然后退出。
上下文环境表述了内核的活动范围,我们可以概括的说,在任何一个时刻,内核在做下面三件事其中之一:
在内核空间,进程上下文中,为进程执行
在内核空间,中断上下文中,不与任何进程关联,处理中断
在用户空间,在进程中执行用户代码
参考资料:
1、Linux Kernel Development (2nd Edition) 英文影印版 Robert Love 机械工业出版社
2、Anatomy of the Linux kernel
From http://www.ibm.com/developerworks/linux/library/l-linux-kernel/