《深入理解Linux内核》读书笔记 第一章 绪论(1) .

转载 2012年03月25日 20:42:54

一、Linux与其它类Unix内核的比较:


单块结构的内核:由几个逻辑上独立的成分构成,单块结构,大多数据商用Unix变体也是单块结构;


编译并静态连接的传统Unix内核:Linux能自动按需动态地装载和卸载部分内核代码(模块),而传统Unix内核仅支持静态连接;


内核线程:Linux以一种十分有限的方式使用内核线程来周期性地执行几个内核函数,而一些Unix内核则本身被组织成一组内核线程;


多线程应用程序支持:Linux定义了自己的轻量级进程版本,并以此来实现对多线程应用程序的支持,而商用Unix则都是基于内核线程来作为多线程应用程序的执行环境;


抢占式内核:Linux2.6提供了“可抢占的内核”的编译选项,当采用这种编译方式来编译内核时,Linux2.6可以随意交错执行处于特权模式的执行流,而一些传统的、通用的Unix,如Solaris则是完全的抢占式内核;


多处理器支持:一些Unix内核变体都利用了多处理器系统,Linux2.6支持不同存储模式的对称多处理,不仅可以使用多处理器,同时每个处理器可以毫无区别地处理任何一个任务;

注:"对称多处理"Symmetrical Multi-Processing)又叫SMP,是指在一个计算机上汇集了一组处理器(CPU),CPU之间共享内存子系统以及总线结构。


文件系统:Linux标准文件系统支持多种不同类型的文件系统,由于采用了面向对象虚拟文件系统技术,外部文件系统可以很容易移植到Linux内核上;

注:虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以 及系统中运行的其他进程看来,都是相同的。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建 立,在系统关闭时消亡


STREAMS:大部分Unix内核均包含STREAMS I/O子系统,作为编写设备驱动程序、终端驱动程序及网络协议的首选接口,但Linux无类似的子系统;



二、硬件依赖性:



Linux试图在硬件无关的源代码与硬件相关的源代码之间保持清晰的界限,为此,Linux为不同的硬件平台作了不同的支持,目前共对23种不同的硬件平台类型作了专门的支持。



三、操作系统基本概念:



当操作系统启动时,内核被装入到RAM中,内核中包含了系统运行所必须的很多核心过程。内核为系统中所有事情提供了主要功能,并决定高层软件的许多特性。


操作系统的两个主要目标:与硬件交互以及为运行在其上的应用程序提供执行环境。


多用户系统:


能并发和独立执行分别属于两个或多个用户的若干应用程序的计算机。

“并发”意味着几个应用程序能同时处于活动状态并竞争各种资源;

“独立”意味着每个应用程序能执行自己的任务,而无需考虑其他用户的应用程序在干些什么;

多用户操作系统必须包含的特点:

l 核实用户身份的认证机制;

l 防止有错误的应用程序妨碍到其它应用程序在系统中运行的保护机制;

l 防止有恶意用户程序干涉或窥视其它用户的活动的保护机制;

l 限制分配给每个用户的资源数的记账机制;

以上保护机制依赖与CPU特权模式相关的硬件保护机制。


用户和组:


所有的用户由一个唯一的用户标识符来标识。

为了实现资料的共享,引入用户组,组由唯一的用户组标识符来标识。

任何类Unix操作系统都有一个特殊的root用户,即超级用户,操作系统不对她使用通常的保护机制,可以访问系统中的任何一个文件,并干涉任何一个正在执行的用户程序活动。


进程:


程序执行的一个实例,一个运行程序的“执行上下文”。

Unix是具有抢占式进程的多处理器操作系统。

Unix操作系统采用进程/内核模式,每个进程都自以为它是系统中唯一的进程,可以独占操作系统所提供的服务。只要进程发出系统调用,硬件就会把特权模式由用户态变成内核态,然后进程以非常有限的目的开始一个内核过程的执行。

内核体系结构:

大部分Unix内核是单块结构:每一个内核层都被集成到整个内核程序中,并代表当前进程在内核态下运行。


微内核操作系统只需要内核有一个很小的函数集,通常包括几个同步原语、一个简单的调度程序和进程间的通信机制。


微内核操作系统一般比单块内核的效率低,因此操作系统不同层次之间显式的消息传递要花费一定的代价。


微内核操作系统迫使系统程序员采用模块化方法,因为任何操作系统层都是一个相对独立的程序,这种程序必须通过定义明确而清晰的软件接口,以实现与其他层的交互,同时时方便移植。


微内核操作系统比单块内核更充分的利用了RAM


Linux内核提供了模块。模块是一个目标文件,其代码可以在运行时链接到内核,或从内核上解除链接。这种目标代码通常由一组函数组成,用来实现文件系统、驱动程序或其它内核上层功能。


四、Unix文件系统概述:


文件:


Unix文件是以字节序列组成的信息载体,内核不解释文件的内容。


文件或目录名由除了“/”和“\0”之外的任意ASCII字符序列组成,通常不能超过255个字符。


当标识文件名时,“.”和“..”分别用来标识当前工作目录和父目录。


硬链接和软链接:


包含在目录中的文件名就是一个文件的硬链接,或简称链接。


软链接又称为符号链接,是短文件,这些文件包含有另一个文件的任意一个路径名。


文件类型:


Unix文件可以是下列类型之一:

l 普通文件

l 目录

l 符号链接

l 面向块的设备文件

l 面向字符的设备文件

l 管道和命令管道

l 套接字(Socket)


文件描述符与索引节点:


文件内容不包含任何控制信息。

文件系统处理文件需要的所有信息包含在一个名为索引节点的数据结构中。

索引节点至少提供以下属性:

l 文件类型

l 与文件相关的硬链接个数

l 以字节为单位的文件长度

l 设备标识符(包含文件的设备的标识符)

l 在文件系统中识别文件的索引节点号

l 文件拥有者的UID

l 文件的用户组ID

l 几个时间戳,表示索引节点状态改变的时间、最后访问时间及最后修改时间

l 访问权限和文件模式

l



文件操作的系统调用:


当用户访问一个变通文件或目录文件的内容时,实际是访问硬件设备上的一些数据,因此,文件系统是硬盘分区物理组织的用户级视图。而由于处于用户态的进程不能直接与低层硬件交互,因此,所有实际的文件操作都必须在内核态下进行。

当几个进程同时打开一个文件时,文件系统给每个文件分配一个单独的打开文件对象以及单独的文件描述符。在这种情况下,Unix文件系统对进程在同一文件上发出的I/O操作之间不提供任何形式的同步机制。

对普通Unix文件,可以顺序访问,也可随机访问,而对设备文件和命名管道文件,通常只能顺序访问。

原文地址:http://blog.csdn.net/crazyingbird/article/details/7172704

《深入理解linux内核》读书笔记 -- 第一章 绪论

0.1991年,Linus Torvalds开发出最初的linux。 1.Linux最吸引人的一个优点就在于它不是商业操作系统,它的源代码在GNU公共许可证GPL(General Public Lic...
  • yegen0606
  • yegen0606
  • 2017年04月04日 01:15
  • 353

来着豆瓣经典点评《深入理解linux内核>>

曾几何时,我们为调试成功第一段汇编小程序而欢欣鼓舞,为写完C语言小程序通宵达旦,为自己的数据结构解决了一个实际问题而踌躇满志。再后来我们学习了计算机组成原理或者高级点的计算机系统结构,学习过操作系统的...
  • sinat_16790541
  • sinat_16790541
  • 2014年12月28日 15:50
  • 1287

深入理解Java虚拟机 - 读书笔记

第1章 走近Java 第2章 Java内存区域与内存溢出异常 第3章 垃圾回收器与内存分配策略 第4章 虚拟机性能监控与故障处理工具...
  • xiaolongtuan
  • xiaolongtuan
  • 2016年08月01日 22:41
  • 604

关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等

成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标。根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍、Java 程序员的 2...
  • sanchuyayun
  • sanchuyayun
  • 2014年07月31日 11:17
  • 1516

深入理解JAVA虚拟机--读书笔记

1.jvm 内存结构 1)程序计数器 较小的内存区域,可以看作是当前线程所执行的字节码的行号指示器;每条线程独立; 2)java虚拟机栈 描述java方法执行的内存模型,即每个方法在执行的同时都会创建...
  • dada360778512
  • dada360778512
  • 2014年04月27日 21:40
  • 2955

《深入理解java虚拟机》学习-第一章-走进java

第一章:走进Java 1.java能够得到广泛认可的原因(优点) ① 摆脱硬件平台束缚,“一次编写,到处运行”; ② 提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题; ...
  • baidu_30809315
  • baidu_30809315
  • 2017年08月06日 11:54
  • 95

深入理解Linux内核(一)

Linux与其他商用Unix内核竞争的优势: 1、单块结构的内核:它是一个庞大、复杂的自我完善(do-it-yourself)程序,由几个逻辑上独立的成分构成,在这一点上,它是相当传统的,大多数商用U...
  • wang_fangzhou
  • wang_fangzhou
  • 2014年01月21日 16:13
  • 709

深入理解Linux内核架构

2.1 进程优先级 粗略分,实时进程和非实时进程。 实时进程:(1)硬实时进程,必须在可保证的时间范围内得到处理。 (2)软实时,仍然需要尽快处理,晚一点...
  • ljf_forlinux
  • ljf_forlinux
  • 2016年12月30日 21:44
  • 1168

深入理解linux内核读书笔记(第三章)

1.  进程是程序执行时的一个实例。 2. 从内核的角度看,进程是系统进行资源分配的实体。 3. linux 通过轻量级进程来支持多线程应用,每一个轻量级进程对应一个线程。    线程之间共享地址空间...
  • learnboy007
  • learnboy007
  • 2015年06月17日 16:14
  • 400

深入理解Android内核设计思想——读书笔记

Android系统 Android的分层 什么是基于OS的系统 Android系统映像 Android系统反编译 操作系统基础 计算机体系结构 什么是操作系统 进程间通信的经典实现 同步机制的经典实现...
  • u012984054
  • u012984054
  • 2016年03月03日 23:36
  • 1923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《深入理解Linux内核》读书笔记 第一章 绪论(1) .
举报原因:
原因补充:

(最多只允许输入30个字)