[Linux环境下C编程指南]读书笔记1

2009-12-08 11:10:00|  分类: Linux基础 |  标签: |字号大中小 订阅

1.存储管理

Linux采用页式存储管理机制,每个页面的大小随处理机芯片而异。例如,Intel386处理机页面大小可为4KB和2MB两种,而Alpha处理机页面大小可为8KB、16KB、32KB和64KB。页面大小的选择对地址变换算法和页表结构会有一定的影响,如Alpha的虚地址和物理地址的有效长度随页面尺寸的变化而变化,这种变化必将在地址变换和页表项中有所反映。

在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,为了建立虚拟空间和物理空间之间的映射,每个进程还保留一张页表,用于将本进程空间中的虚地址变换成物理地址。页表还对物理页的访问权限作出了规定,定义了哪些页可读写,哪些页是只读页,在进行虚实变换时,Linux将根据页表中规定的访问权限来判定进程对物理地址的访问是否合法,从而达到存储保护的目的。

Linux存储空间分配遵循的是不到有实际需要的时候决不分配物理空间的原则。当一个程序加载执行时,Linux只为它分配了虚空间,只有访问某一虚地址而发生了缺页中断时,才为它分配物理空间,这样就可能出现某些程序运行完成后,其中的一些页从来就没有装进过内存。这种存储分配策略带来的好处是显而易见的,因为它最大限度地利用了物理存储器。

尽管Linux对物理存储器资源的使用十分谨慎,但还是经常出现物理存储器资源短缺的情况。Linux有一个名为kswapd的进程专门负责页面的换出,当系统中的空闲页面小于一定的数目时,kswapd将按照一定的淘汰算法选出某些页面,或者直接丢弃(页面未作修改),或者将其写回硬盘(页面已被修改)。这种换出方式不同于较旧版本Unix的换出方式,它是将一个进程的所有页全部写回硬盘。相比之下,Linux的效率更高。

2.进程管理

在Linux中,进程是资源分配的基本单位,所有资源都是以进程为对象来进行分配的。在一个进程的生命期内,它会用到许多系统资源,会用CPU运行其指令,用存储器存储其指令和数据,它也会打开和使用文件系统中的文件,直接或间接用到系统中的物理设备,因此,Linux设计了一系列的数据结构,它们能准确地描述进程的状态和其资源使用情况,以便能公平有效地使用系统资源。Linux的调度算法能确保不出现某些进程过度占用系统资源而导致另一些进程无休止地等待的情况。

进程的创建是一个十分复杂的过程,通常的做法需为子进程重新分配物理空间,并把父进程空间的内容全盘复制到子进程空间中,其开销非常大。为了降低进程创建的开销,Linux采用Copy on write技术,即不拷贝父进程的空间,而是拷贝父进程的页表,使父进程和子进程共享物理空间,并将这个共享空间的访问权限置为只读。当父进程和子进程的某一方进行写操作时,Linux检测到一个非法操作,这时才将要写的页进行复制 。这一做法免除了只读页的复制,从而降低了开销。

Linux目前尚未提供用户级线程,但提供了核心级线程,核心线程的创建是在进程创建的基础上稍做修改,使创建的子进程与父进程共享虚存空间。从这一意义上讲,核心线程更像一个共享进程组。

3.文件系统

Linux最重要的特征之一就是支持多个不同的文件系统,前面我们已经看到,Linux目前支持的文件系统多达十余种,随着时间的推移,这一数目还在不断增加。在Linux中,一个分离的文件系统不是通过设备标识(如驱动器号或驱动器名)来访问,而是把它合到一个单一的目录树结构中,通过目录来访问,这一点与Unix十分相似。Linux用安装命令将一个新的文件系统安装到系统单一目录树的某一目录下,一旦安装成功,该目录下的所有内容将被新安装的文件系统所覆盖,当文件系统被卸下后,安装目录下的文件将会被重新恢复。

Linux最初的文件系统是Minix。该文件系统对文件限制过多,并且性能低下,如文件名长度不能超过14个字符、文件大小不能超过64MB。为了解决这些问题,Linux的开发者们设计了一个Linux专用的文件系统EXT。EXT对文件的要求放松了许多,但在性能上并没有大的改观,于是就有了后面的EXT2文件系统。EXT2文件系统是一个非常成功的文件系统,它无论是对文件的限制还是在性能方面都大大优于EXT文件系统,所以,EXT2自从推出就一直是Linux最常用的文件系统。

为了支持多种文件系统,Linux用一个被称为虚拟文件系统(VFS)的接口层将真正的文件系统同操作系统及系统服务分离开。VFS掩盖了不同文件系统之间的差异,使所有文件系统在操作系统和用户程序看来都是等同的。VFS允许用户同时透明地安装多个不同的文件系统。

4.进程间通信

Linux提供了多种进程间的通信机制,其中,信号和管道是最基本的两种。除此以外,Linux也提供System V的进程间通信机制,包括消息队列、信号灯及共享内存。为了支持不同机器之间的进程通信,Linux还引入了BSD的Socket机制。

2009-12-08 11:10:00|  分类: Linux基础 |  标签: |字号大中小 订阅

1.存储管理

Linux采用页式存储管理机制,每个页面的大小随处理机芯片而异。例如,Intel386处理机页面大小可为4KB和2MB两种,而Alpha处理机页面大小可为8KB、16KB、32KB和64KB。页面大小的选择对地址变换算法和页表结构会有一定的影响,如Alpha的虚地址和物理地址的有效长度随页面尺寸的变化而变化,这种变化必将在地址变换和页表项中有所反映。

在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,为了建立虚拟空间和物理空间之间的映射,每个进程还保留一张页表,用于将本进程空间中的虚地址变换成物理地址。页表还对物理页的访问权限作出了规定,定义了哪些页可读写,哪些页是只读页,在进行虚实变换时,Linux将根据页表中规定的访问权限来判定进程对物理地址的访问是否合法,从而达到存储保护的目的。

Linux存储空间分配遵循的是不到有实际需要的时候决不分配物理空间的原则。当一个程序加载执行时,Linux只为它分配了虚空间,只有访问某一虚地址而发生了缺页中断时,才为它分配物理空间,这样就可能出现某些程序运行完成后,其中的一些页从来就没有装进过内存。这种存储分配策略带来的好处是显而易见的,因为它最大限度地利用了物理存储器。

尽管Linux对物理存储器资源的使用十分谨慎,但还是经常出现物理存储器资源短缺的情况。Linux有一个名为kswapd的进程专门负责页面的换出,当系统中的空闲页面小于一定的数目时,kswapd将按照一定的淘汰算法选出某些页面,或者直接丢弃(页面未作修改),或者将其写回硬盘(页面已被修改)。这种换出方式不同于较旧版本Unix的换出方式,它是将一个进程的所有页全部写回硬盘。相比之下,Linux的效率更高。

2.进程管理

在Linux中,进程是资源分配的基本单位,所有资源都是以进程为对象来进行分配的。在一个进程的生命期内,它会用到许多系统资源,会用CPU运行其指令,用存储器存储其指令和数据,它也会打开和使用文件系统中的文件,直接或间接用到系统中的物理设备,因此,Linux设计了一系列的数据结构,它们能准确地描述进程的状态和其资源使用情况,以便能公平有效地使用系统资源。Linux的调度算法能确保不出现某些进程过度占用系统资源而导致另一些进程无休止地等待的情况。

进程的创建是一个十分复杂的过程,通常的做法需为子进程重新分配物理空间,并把父进程空间的内容全盘复制到子进程空间中,其开销非常大。为了降低进程创建的开销,Linux采用Copy on write技术,即不拷贝父进程的空间,而是拷贝父进程的页表,使父进程和子进程共享物理空间,并将这个共享空间的访问权限置为只读。当父进程和子进程的某一方进行写操作时,Linux检测到一个非法操作,这时才将要写的页进行复制 。这一做法免除了只读页的复制,从而降低了开销。

Linux目前尚未提供用户级线程,但提供了核心级线程,核心线程的创建是在进程创建的基础上稍做修改,使创建的子进程与父进程共享虚存空间。从这一意义上讲,核心线程更像一个共享进程组。

3.文件系统

Linux最重要的特征之一就是支持多个不同的文件系统,前面我们已经看到,Linux目前支持的文件系统多达十余种,随着时间的推移,这一数目还在不断增加。在Linux中,一个分离的文件系统不是通过设备标识(如驱动器号或驱动器名)来访问,而是把它合到一个单一的目录树结构中,通过目录来访问,这一点与Unix十分相似。Linux用安装命令将一个新的文件系统安装到系统单一目录树的某一目录下,一旦安装成功,该目录下的所有内容将被新安装的文件系统所覆盖,当文件系统被卸下后,安装目录下的文件将会被重新恢复。

Linux最初的文件系统是Minix。该文件系统对文件限制过多,并且性能低下,如文件名长度不能超过14个字符、文件大小不能超过64MB。为了解决这些问题,Linux的开发者们设计了一个Linux专用的文件系统EXT。EXT对文件的要求放松了许多,但在性能上并没有大的改观,于是就有了后面的EXT2文件系统。EXT2文件系统是一个非常成功的文件系统,它无论是对文件的限制还是在性能方面都大大优于EXT文件系统,所以,EXT2自从推出就一直是Linux最常用的文件系统。

为了支持多种文件系统,Linux用一个被称为虚拟文件系统(VFS)的接口层将真正的文件系统同操作系统及系统服务分离开。VFS掩盖了不同文件系统之间的差异,使所有文件系统在操作系统和用户程序看来都是等同的。VFS允许用户同时透明地安装多个不同的文件系统。

4.进程间通信

Linux提供了多种进程间的通信机制,其中,信号和管道是最基本的两种。除此以外,Linux也提供System V的进程间通信机制,包括消息队列、信号灯及共享内存。为了支持不同机器之间的进程通信,Linux还引入了BSD的Socket机制。


相关内容

  • Keygoe系统版本发布说明书(for Linux)
  • Keygoe 系统版本发布说明书 V3.1.2 修订记录 版权声明 本文档的版权归深圳市东进通讯技术股份有限公司所有,受中华人民共和 国法律的保护.东进公司有权在未经申明的情况下对文档的内容做必要的 改动,且不另行通知,更改的内容将会补充到本文档中. 本文档力求准确说明Keygoe 系统,但由于产品 ...

  • Android程序开发学习笔记(手电筒软件设计)
  • Android 开发简介 简介 黑莓和 iPhone 都提供了受欢迎的.高容量的移动平台,但是却分别针对两个不同的消费群体.黑莓是企业业务用户的不二选择.但是,作为一种消费设备,它在易用性和 "新奇特性" 方面难以和 iPhone 抗衡.Android 则是一个年轻的.有待开发的 ...

  • 我的大学计算机生活
  • 我是2005届的学生,毕业快一年了,对自己的大学生活做简要的回顾,并说明一下自己认为的学习计算机比较重要的课程,并推荐一些好书. 我从大一下学期开始学习计算机,刚开始学习VB(学校的公选课) ,认真学习了两个月之后,发现学习VB 主要是拖放一些按钮控件,没有一点挑战性,学会后,也不能构成自己的核心竞 ...

  • 通信建设工程预算定额
  • 预览 收藏 举报 通信建设工程预算定额 文档信息 大小:3.58MB  所需金币:80 金币不足怎么办? 下载量:48次 浏览量:1471次 贡献者:上千个黎明 贡献时间:2012/3/20 18:20:14 文档标签: 通信定额 操作系统 更多 0 3.0 评分: 欢迎点评 已有2位用户参与评分 ...

  • 出色通信工程(电子)汪是这样炼成的
  • 我们当中,很多通信专业的同学,在读书的时候不知道该做啥,在毕业了以后也不知道该干嘛,职业规划和能力提高都不知道怎么下手,我们来看一下李宇同学是怎么处理这些问题的. 通信工程狗在大学要学啥 先简单介绍一下,作者本科时候985学校的通信工程,到现在工作满4年,在武汉一私企,14K月薪. 这水平在很多北上 ...

  • 给计算机系学生的建议
  • <给计算机系学生的建议>收集整理:卿 虽然大概一两年前我还在夸夸其谈桌面应用程序是将来的潮流,大学生们现在还是偶尔向我请教职业发展的问题.所以我把我的建议写下来.以供学生们阅读,嘲笑,忽略. 大多数锐气十足的学生从来不向前辈征求意见.在计算机科学领域,这样做是正确的.因为前辈们很可能说些 ...

  • 什么是编程,如何零基础自学编程
  • 什么是编程,如何零基础自学编程 什么是编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程.下面是重点,是零基础者需要知道的. 编程分为硬件编程和软件编程. 先由硬件编程讲起(零基础者必须了解,了解有助于认识编程,)中央处理器又叫cpu,(这里用大白话讲述) ...

  • 大学生必学的软件综合
  • (一) 这里我推荐大家十个必学的计算机软件,希望大家在大学空余时间多多学习: 1.windows XP/Vista/7+ 系统 2.windows 优化大师.超级兔子.360 安全设置等 3.杀毒软件的安装和使用 4.IE.Firefox 等网页浏览器 5.Foxmail.Outlook 电子邮箱客 ...

  • SciTE研究 - 中文小组
  • http://groups.google.com/group/scite-cn SciTE研究 - 中文小组 2008-08-28 10:24 初学者入门教程 360pskdocImg_0_xyz 简单介绍 360pskdocImg_1_xyzSciTE(Scintilla Text Editor) ...