第1章 Linux内核介绍

合集下载

《Linux内核分析及应用》读书笔记思维导图

《Linux内核分析及应用》读书笔记思维导图

对本书的赞誉
第1章 进程与线程
01
1.1 进 程和线程 的概念
02
1.2 Linux对 进程和线 程的实现
03
1.3 进 程的调度
04
1.4 在 应用程序 中管理进 程和线程
05
1.5 处 理进程和 线程的相 关工具
06
1.6 本 章小结
1.1.1 进程 的历史
1.1.2 线程 的不同玩法
1.2.1 Linux中 的进程实现
3.3.1 分段 机制
3.3.2 分页 机制
3.4.1 物理 内存管理
3.4.2 进程 地址空间管 理
3.5.1 物理内存 分配算法
3.5.2 slab分配 器
3.5.3 内核态内 存管理
3.5.4 用户态内 存申请
3.7.1
Memcached 内存管理 机...
3.7.2 Redis内存 管理机制分 析
目录
07 第6章 文件系统
09
第8章 Linux网络层 数据流分析
08 第7章 Linux的进程 隔离技术与Doc...
本书由资深架构师围绕Linux系统进行服务开发经验。本书共8章,主要内容:第1章介绍Linux对进程和线 程的实现原理并分析了Memcached和Nginx工作进程池模型的实现;第2章介绍并发的概念以及Linux中的并发相 关工具;第3章介绍Linux是如何进行内存管理的,分析了Memcached和Redis的内存管理机制。第4章介绍Linux 系统对中断进行的封装和实现原理;第5章介绍I/O的全过程并介绍了某些开源系统中I/O相关调用的实现等;第6 章介绍Linux文件系统的整体架构及核心概念;第7章介绍Linux进程隔离技术以及Docker容器的部分实现;第8 章介绍Linux网络层数据的流转过程。

linux操作系统的结构及详细说明

linux操作系统的结构及详细说明

linux操作系统的结构及详细说明linux的操作系统的结构你了解多少呢?下面由店铺为大家整理了linux操作系统的结构及详细说明的相关知识,希望对大家有帮助!linux操作系统的结构及详细说明:一、 linux内核内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。

系统调用接口:SCI 层提供了某些机制执行从用户空间到内核的函数调用。

这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。

SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。

在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。

1. 内存管理对任何一台计算机而言,其内存以及其它资源都是有限的。

为了让有限的物理内存满足应用程序对内存的大需求量,Linux 采用了称为“虚拟内存”的内存管理方式。

Linux 将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。

Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。

不过内存管理要管理的可不止 4KB 缓冲区。

Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。

这种内存管理模式使用 4KB 缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。

这样就允许该模式根据系统需要来动态调整内存使用。

为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。

由于这个原因,页面可以移出内存并放入磁盘中。

这个过程称为交换,因为页面会被从内存交换到硬盘上。

内存管理的源代码可以在 ./linux/mm 中找到。

2 .进程管理进程实际是某特定应用程序的一个运行实体。

第1章 linux操作系统概述

第1章  linux操作系统概述
内核结构模型分为两大类:
微内核模型:内核中大部分模块都是独
立的进程,并在一定的特权状态下运行, 各模块之间通过消息传递进行通信。这 种机制的系统核心称为微内核。
大内核模型:整个核心模块可分为若干个子模
块,但在核心运行时,它是一个独立的二进制 映象,模块间的通信是直接调用其他模块中的 函数实现的。这种机制的系统核心称为大内核。
操作系统的设计目标
面向用户的设计目标:
1. 使用户方便使用计算机系统并容易学习。 2. 计算机系统对用户可靠、安全和高效。
面向系统设计目标:
1. 使操作系统容易设计,实现。
2. 使系统维护方便、灵活并可靠。
操作系统的功能
资源分配器:管理和分配软硬件资源。 控制器:控制用户程序执行,并对I/O设
资源共享。 加速计算—均分负载。 可靠性和通信。
分布式系统(续)
网络操作系统:
提供文件共享。 提供通信协议。 与网络相连接的各个计算机都是独立运行的。
分布式操作系统:
相互连接的各个计算机几乎没有自主权。 提供控制这个网络的单一操作系统映象。
手持系统
个人数据助理。 移动电话。 存在的问题:
实用程序及应 用软件 用户1 用户2 用户3 用户n
编译器
操作系统 汇编器 文本编辑器 ┅ 数据库系统 (内核) 系统和实用程序
操作系统 计算机硬件
机器指令系统 CPU、内存和 I/O接口
对系统层次框图的说明



硬件:CPU、内存、I/O接口。CPU中的指令系统是软 硬件的接口。 操作系统:控制和协调硬件资源执行多个应用程序 的程序。由于操作系统处在软硬件中心位置,故此 也称为核心或内核。 实用程序:由计算机系统提供的用以解决用户计算 问题的一组系统软件和应用软件。例如系统软件有: 编译器、汇编器、文本编辑器等等。应用软件有: 数据库系统,视频游戏以及税收系统等等。 用户:使用计算机的对象,包括人、机器以及与该 计算机相连接的其他计算机。

01Linux操作系统简介

01Linux操作系统简介

第二节 操作系统概述:常见操作系统介绍
1)UNIX
起源:AT&T(Ken Thmopson、Dennis Ritchie、 J.F.Ossanna和R.Morris)为了玩游戏,在一台 废弃的DEC PDP-7的小型机上首先开发了一套简 化的MULTICS操作系统,简称为UNIX 。
版本:作为商业化软件,它有各种版本 两派的商业产品有: BSD——SUN SunOS、DEC Ultrix、SGI IRIX、UCB 4.4BSD; SVR3——HP UP-UX、SCO/MS SCO Xenix、SCO SCO UNIX、IBM AIX、Unisys Unisys UNIX等; SVR4——USL(AT&T的子公司) System V、Novell UnixWare、Cray UNICOS、Dell Dell UNIX SVR4等; SV+BSD——SUN Solaris、Apple A/UX等。 1990 Windows NT推出,两派合作。
2、内核版本和发行版本
1)Linux的内核版本严格控制在由Linus领导的开源 (Opening source code)社区的手里 内核的版本:X.YY.ZZ X:主版本号,表示这个版本是第几次重大修订的版本。 YY:次版本号,表示在在主板本下的第几次修订, 奇数表示不稳定版本,偶数表示稳定版本。 ZZ: 修订版本号,是在在X.YY版本下的第几次小的修 订版本。 例如当前最新的版本是2.6.14
2) 发行版本


发行版本,指的是由软件发行公司,把一定 的Linux内核版本、应用程序和相应的系统管 理软件和安装程序,组装成一个发行套件。 发行版本号码,由发行商自己决定,一般与内 核版本的数字不一样。

第1章第1讲 linux简介PPT课件

第1章第1讲 linux简介PPT课件
文件结构和实用工具。
1. Linux内核
2. Linux Shell 3. Linux文件结构
文件结构是文件存放在磁盘等存储设备 上的组织方法
4. Linux实用工具 一般来将,实用工具可分三类: (1)编辑器:用于编辑文件。 (2)过滤器:用于接收数据并过滤数据。 (3)交互程序:允许用户发送信息或接收
所谓GNU(General Public License, ) ,是Stallman在1984年提出的一个计划 ,它的思想是“源代码共享,思想共享”, 。
1.1.2 Linux的特点 1. 自由与开放 2. 配置要求低廉 3. 功能强大而稳定 4. 独立工作
1.1.3 Linux操作系统的架构 Linux一般有四个主要部分:内核、Shell、
1984:GNU与FSF计划的成立 GNU:Stallman建立一个自由开放的UNIX系统 GPL:通用公共许可证 获取软件源代码 复制 修改 再发行 回馈 不能修改授权 不能单纯销售
GPL好处: 软件安全性好 软件执行性能好 软件除错时间短 贡献的源代码永远存在
Torvalds在Minix基础上编写与unix兼容的操作 系统
来自其他用户的信息
切换X Window与命令模式 Ctrl+Alt+F1~F7 开始执行命令 ls –al date cal bc
为方便学习与使用课件内容, 课件可以在下载后自由调整
Learning Is To Achieve A Certain Goal And Work Hard, Is A Process To Overcome Various Difficulties For A Goal
第一章 linux入门及安装
1.1 Linux入门 1.1.1 什么是Linux Linux是一套免费使用和自由传播的类Unix

Linux内核.ppt

Linux内核.ppt
行交互操作的一种接口。
❖ LINUX文件系统: Linux文件系统是文件存放在磁盘等存储设
备上的组织方法。Linux能支持多种目前浒的文件系统,如EXT2、EXT3、 FAT、VFAT、ISO9660、NFS、SMB等。
❖ LINUX应用系统:标准的Linux系统都有一整套称为应
用程序的程序集,包括文本编辑器、编程语言、X Window、 办公套件、Internet工具、数据库等。
❖GNU 软件和派生工作均适用 GNU 通用公共许 可证,即 GPL(General Public License )
❖Linux的开发使用了众多的GUN工具
<>
GPL-开源软件的法律
❖GPL 允许软件作者拥有软件版权 ❖但GPL规定授予其他任何人以合法复
制、发行和修改软件的权利。
<>
2. Linux系统的主要特点
内核模块的能力
所有模块全部运行在内核态,直接调用函数,无需消息传递 支持多称多处理SMP机制
讲究效率的单模块操作系统
进程管理
内存管理
设备管理
文件管理
模块之间可以互相调用的单模块结构 <>
讲究效率的单模块操作系统
❖模块之间直接调用函数,除了函数调用 的开销外,没有额外开销。 ❖庞大的操作系统有数以千计的函数 ❖复杂的调用关系势必导致操作系统维护 的困难
个平台使它仍然能按其自身的方式运行的能力。Linux是一种可 移植的操作系统,能够在从微型计算机到大型计算机的任何环境 中和任何平台上运行。
3. LINUX的组成
❖ LINUX的内核:内核是系统的核心,是运行程序和管理
像磁盘和打印机等硬件设备的核心程序。
❖ LINUX SHELL: Shell是系统的用户界面,提供了用户与内核进

Linux操作系统案例教程电子教案 第1章 linux 简介

1)多用户方面 Linux:同时允许多个用户、多个桌面 WinNT/2k/2003:同时只能允许一个用户、一个桌面 (2)GUI界面方面 Linux:GUI界面采用x-windows且与内核是相互独立 WinNT/2k/2003:GUI与内核是集成在一起的 (3)共享资源相互访问 Linux:NFS、Samba实现Linux及Windows主机之间相 互访问 Win NT/2k/2003:利用网上邻居实现相互访问
Linux 简介
嵌入式系统: 3、嵌入式系统:凡是带有微处理器的非计算机 系统都可以称为嵌入式系统。 系统都可以称为嵌入式系统。 集群计算机:利用高速的计算机网络, 4、 集群计算机:利用高速的计算机网络,将 多台计算机连接起来, 多台计算机连接起来,并加入相应的集群软 件所形成的具有超强可靠性和计算能力的计 算机。 算机。 视频制作领域:著名的影片《泰坦尼克号》 5 视频制作领域:著名的影片《泰坦尼克号》 就是由200多台装有Linux 200多台装有Linux系统的机器协作完 就是由200多台装有Linux系统的机器协作完 成其特技效果的。 成其特技效果的。
Linux 简介
1-2-2 Linux的优点(二)
良好的兼容性,开发功能强:因为Linux完全符合IEEE的 POSIX的标准,和现今的Unix、System V、BSD等三大主 流的Unix系统几乎完全兼容。 强大的可移植性:目前各种类型的计算机都可以运行Linux, 迄今为止,是支持最多硬件平台的操作系统。Linux支持其 他系统,可以同时挂上许多系统的磁盘。 丰富的图形用户界面:Linux有漂亮的X视窗系统,这是 Linux相当被看好的东西。 高度的稳定性:Linux继承了Unix的优良特性,可以连续运 行,感染病毒的几率较小。

Linux操作系统应用编程课件(完整版)


2.Linux操作系统的发行版
Linux操作系统发行版实际就是Linux内核加上外围实用程序 组成的一个大软件包。相对于Linux操作系统的内核版本,发行版 的版本号随发布者的不同而不同,与Linux操作系统内核的版本号 是相对独立的。因此把SUSE、RedHat、Ubuntu、Slackware等直 接称为Linux是不确切的,它们是Linux操作系统的发行版。更确 切地说,应该将它们称为“以Linux为核心的操作系统软件包”。
Shell是Linux操作系统的一种用户界面,它作为操作系统 的“外壳”,为用户提供使用操作系统的接口。Shell主要有以 下两大功能特点。
(1)Shell是一个命令解释器,它拥有自己内建的Shell命令集。 (2)Shell的另一个重要特性是它自身就是一种解释型的程序设 计语言。
当用户成功登录Linux系统后,系统将执行一个Shell程序。 正是Shell进程提供了命令提示符。作为默认值,Shell对普通用 户用“$”作提示符,对超级用户(root)用“#”作提示符。
1.4.4 联机手册
联机手册命令man可向用户提供系统中各种命令、系统调用、 库函数和重要系统文件的详细说明,包括名字、使用语法、功能 描述、应用实例和相关参考文件等。其格式如下:
$ man [拥有哪个级别的帮助。 -k:查看和命令相关的所有帮助。
查看who命令的详细说明示例如下。 $ man who
Linux操作系统 应用编程
本章主要介绍Linux文件系统,包括文件系统的结构、文 件的定义与分类、目录与文件操作命令、文件的权限管理等, 让读者对Linux文件系统有一定的认识和理解,为后文的学习 打下基础。
2.1.1 组织结构
Linux操作系统中所有文件存储在文件系统中,文件被组织 到一棵“目录树”中,其文件系统层次结构(树状目录结构)如 图2.1所示。树根在该层次结构的顶部,树根的下方衍生出子目 录分支。

linux内核简介.ppt

API和系统调用完全不同:
–API只是一个函数定义 –系统调用通过“软中断”向内核发出一个明确
的请求
2020年2月10日
东华大学计算机科学与技术学院 by XinLuo
10
系统调用图解 用户态
内核态
系统调用 1
系统调用 返回
2
trap 0
2020年2月10日
东华大学计算机科学与技术学院 by XinLuo
中断的概念,终端 控制台设备驱动
Shell程序分析输入参 数,确定这是ls命令
什么是shell?
终端解释程序
什么是系统调用?
内核态用户态相关问 题,内存保护
调用系统调用fork生成 一个shell本身的拷贝
调用exec系统调用将ls 的可执行文件装入内存
从系统调用返回
Shell和ls都得以执行
系统调用是怎 么实现的?
3
Linux 基本概念
• 系统调用 • 内存管理 • 进程管理 • 虚拟文件系统(VFS) • 信号机制 • 内核初始化过程
2020年2月10日
东华大学计算机科学与技术学院 by XinLuo
4
➢ 提纲
• 用户态和内核态 • 系统调用意义 • 系统调用方法
2020年2月10日
东华大学计算机科学与技术学院 by XinLuo
Memory manager Signal 。。。
File systems Process management Device drivers Net work
Kernel interface to the hardware
Terminal controllers Terminals
Device controllers Memory controllers

关于linux 内核文件系统的书籍

关于linux 内核文件系统的书籍Linux内核文件系统是Linux操作系统的核心组成部分,它负责管理文件和目录,以及对文件进行读写操作。

本文将介绍关于Linux 内核文件系统的一本经典书籍。

《深入理解Linux内核文件系统》是一本由Maurice J. Bach撰写的经典著作。

该书详细介绍了Linux内核文件系统的原理、设计和实现。

它为读者提供了深入了解Linux文件系统的基础知识和技术细节的机会。

该书分为多个章节,每个章节都涵盖了不同的主题。

第一章介绍了文件系统的基本概念和目标,以及Linux内核文件系统的组织结构。

读者可以了解到文件系统是如何在内核中被组织和管理的。

第二章讲解了Linux内核文件系统的缓存机制。

缓存是文件系统性能优化的重要手段,通过将磁盘上的数据缓存在内存中,可以加快文件的读写速度。

该章节详细介绍了缓存的实现原理和相关算法。

第三章讨论了Linux内核文件系统的目录结构。

目录是文件系统中组织和管理文件的重要方式,了解目录结构对于理解文件系统的操作和管理具有重要意义。

本章介绍了目录的数据结构和相关操作。

第四章介绍了Linux内核文件系统的文件操作。

文件操作是用户与文件系统交互的重要方式,包括文件的创建、读取、写入和删除等。

该章节详细解释了文件操作的实现原理和相关技术。

第五章讲解了Linux内核文件系统的权限管理。

文件系统中的权限控制是保护文件安全和隐私的重要手段,该章节介绍了文件权限的概念、实现和管理。

第六章介绍了Linux内核文件系统的日志机制。

日志是文件系统故障恢复和数据一致性的重要保障,该章节详细讲解了日志的实现原理和使用方法。

第七章讨论了Linux内核文件系统的挂载和卸载机制。

文件系统的挂载和卸载是将文件系统连接到系统中和从系统中断开的过程,该章节介绍了挂载和卸载的实现和管理。

第八章讲解了Linux内核文件系统的磁盘管理。

磁盘是存储文件系统数据的物理设备,了解磁盘管理对于优化文件系统性能和提高数据安全性至关重要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.2.5 进程地址空间
Linux的虚拟地址空间为 ~4G字节。虚拟的 字节空 的虚拟地址空间为0~ 字节 虚拟的4G字节空 字节。 的虚拟地址空间为 间被Linux内核分为内核空间和用户空间两部分。将最高的 内核分为内核空间和用户空间两部分。 间被 内核分为内核空间和用户空间两部分 1G字节(从虚拟地址 字节( ),留给内 字节 从虚拟地址0xC0000000到0xFFFFFFFF),留给内 到 ), 核使用,称为“内核空间” 将较低的3G字节 字节( 核使用,称为“内核空间”。将较低的 字节(从虚拟地址 0x00000000到0xBFFFFFFF),留给用户进程使用,称为“ ),留给用户进程使用 到 ),留给用户进程使用,称为“ 用户空间” 因为每个进程可以通过系统调用进入内核, 用户空间”。因为每个进程可以通过系统调用进入内核,因 内核空间被系统的所有进程共享, 此,Linux内核空间被系统的所有进程共享,实际上对于某个 内核空间被系统的所有进程共享 进程来说,它仍然可以拥有4G字节的虚拟空间 字节的虚拟空间。 进程来说,它仍然可以拥有 字节的虚拟空间。
Linux系统调用 1.1.1 Linux系统调用
所有的操作系统在内核里都有一些内建的函数, 所有的操作系统在内核里都有一些内建的函数,这些函 数完成对硬件的访问和对文件的打开、 关闭等操作。 数完成对硬件的访问和对文件的打开、读、写、关闭等操作。 Linux系统中称这些函数叫做“系统调用”(即systemcall)。 系统中称这些函数叫做“ 系统中称这些函数叫做 系统调用” )。 这些函数实现了将操作从用户空间转换到内核空间, 这些函数实现了将操作从用户空间转换到内核空间,有了这些 接口函数,用户就可以方便地访问硬件。例如, 接口函数,用户就可以方便地访问硬件。例如,在用户空间调 函数, 用open()函数,则会在内核空间调用 函数 则会在内核空间调用sys_open()。一个已经安 。 装的系统所支持的系统都调用可以在/usr/include/bits/syscall.h 装的系统所支持的系统都调用可以在 文件里面看到。 文件里面看到。
1.2.3 进程状态
进程描述符中state字段描述进程当前的状态。它由一组 字段描述进程当前的状态。 进程描述符中 字段描述进程当前的状态 标志组成,其中每个标志描述一种可能的进程状态。 标志组成,其中每个标志描述一种可能的进程状态。下面分别 对这些状态进行描述: 对这些状态进行描述: 可运行状态:进程处于运行(它是系统的当前进程) 可运行状态:进程处于运行(它是系统的当前进程)或 者准备运行状态(它在等待系统将CPU分配给它)。 分配给它)。 者准备运行状态(它在等待系统将 分配给它 等待状态:进程在等待一个事件或者资源。 等待状态:进程在等待一个事件或者资源。Linux将等待 将等待 进程分成两类;可中断的等待状态与不可中断的等待状态。 进程分成两类;可中断的等待状态与不可中断的等待状态。可 中断等待进程可以被信号中断; 中断等待进程可以被信号中断;不可中断等待进程直接在硬件 条件等待,并且任何情况下都不可中断。 条件等待,并且任何情况下都不可中断。 暂停状态:进程被暂停,通常是通过接收一个信号。 暂停状态:进程被暂停,通常是通过接收一个信号。正 在被调试的进程可能处于停止状态。 在被调试的进程可能处于停止状态。 僵死状态:进程的执行被终止,但是, 僵死状态:进程的执行被终止,但是,父进程还没有发 布wait4()或waitpid()系统调用来返回有关死亡进程的信息。 或 系统调用来返回有关死亡进程的信息。 系统调用来返回有关死亡进程的信息
1.2.2 进程描述符
内核对进程的优先级、进程的状态、 内核对进程的优先级、进程的状态、地址空间等采用进程描述 符表示。 内核内, 符表示。在 Linux 内核内,进程是由相当大的一个称为 task_struct 的结构表示。 的结构表示。 state:表示进程的状态,-1代表“不能运行”,0代表“运行” 代表“ 代表“ :表示进程的状态, 代表 不能运行” 代表 运行” 代表“ ,>0代表“停止”。 代表 停止” flags:定义了很多指示符,表明进程是否正在被创建( :定义了很多指示符,表明进程是否正在被创建( PF_STARTING)或退出(PF_EXITING),或是进程当前是否在分 ),或是进程当前是否在分 )或退出( ), 配内存(PF_MEMALLOC)。可执行程序的名称(不包含路径)占 配内存( )。可执行程序的名称(不包含路径) )。可执行程序的名称 用 comm(命令)字段。 (命令)字段。 tasks 字段提供了链接列表的能力。它包含一个 prev 指针(指向 字段提供了链接列表的能力。 指针( 前一个任务) 指针(指向下一个任务)。 前一个任务)和一个 next 指针(指向下一个任务)。
第1 章
Linux内核介绍 Linux内核介绍
在进行系统移植的时候,移植的核心就是内核的移植。 在进行系统移植的时候,移植的核心就是内核的移植。 内核移植的不仅影响到系统的功能, 内核移植的不仅影响到系统的功能,而且还影响到整个系统 的性能。因此,了解Linux内核,有利于开发人员进行系统裁 内核, 的性能。因此,了解 内核 剪和移植。下面主要针对Linux内的五个重要部分系统调用接 剪和移植。下面主要针对 内的五个重要部分系统调用接 进程管理、内存管理、虚拟文件系统和设备驱动程序, 口、进程管理、内存管理、虚拟文件系统和设备驱动程序, 进行介绍。 进行介绍。
1.1.2 用户编程接口
用户编程接口是为用户编程过程提供的各种功能库函 如分配空间、拷贝字符、打开文件等。 数,如分配空间、拷贝字符、打开文件等。Linux用户编程 用户编程 接口( 接口(API)遵循了在 )遵循了在UNIX中最流行的应用编程界面标准 中最流行的应用编程界面标准 ——POSIX标准。它与系统调用之间存在一定的联系和区别 标准。 标准 不同的语言和平台为用户提供了丰富的编程接口, 。不同的语言和平台为用户提供了丰富的编程接口,包括网 络编程接口、图形编程接口、数据库编程接口等, 络编程接口、图形编程接口、数据库编程接口等,但这些不 是系统调用。 是系统调用。
1.3.1 内存管理技术
页表( ):进程在读取指令和存取数据时都 页表(page tables):进程在读取指令和存取数据时都 ): 要访问内存。在一个虚拟内存系统中, 要访问内存。在一个虚拟内存系统中,所有的地址都是虚拟 地址而非物理地址。 地址而非物理地址。操作系统维护虚拟地址和物理地址转换 的信息,处理器通过这组信息将虚拟地址转换为物理地址。 的信息,处理器通过这组信息将虚拟地址转换为物理地址。 虚拟内存和物理内存被分为适当大小的块,叫做页。 虚拟内存和物理内存被分为适当大小的块,叫做页。为了将 虚拟地址转换为物理地址,首先, 虚拟地址转换为物理地址,首先,处理器要找到虚拟地址的 页编号和页内偏移量;然后, 页编号和页内偏移量;然后,处理器根据虚拟地址和物理地 址的映射关系将虚拟页编号转换为物理的页;最后, 址的映射关系将虚拟页编号转换为物理的页;最后,根据偏 移量访问物理页的确定偏移位置。 移量访问物理页的确定偏移位置。每个物理页面都有一个 struct page结构,位于 结构, 结构 位于include/linux/mm.h,该结构体包含 , 了管理物理页面时的所有信息。 了管理物理页面时的所有信息。
1.2
进程管理
进程管理包括创建进程、管理进程以及删除进程。 进程管理包括创建进程、管理进程以及删除进程。进 程管理是Linux内核的重要部分,对系统的核心资源进行管 内核的重要部分, 程管理是 内核的重要部分 做好系统移植需要对这部分知识有一定的了解。 理。做好系统移植需要对这Байду номын сангаас分知识有一定的了解。
1.1.3 系统调用与服务例程的对应关系
为了通过系统调用号来调用不同的内核服务例程, 为了通过系统调用号来调用不同的内核服务例程,系 统必须创建并管理好一张系统调用表。 统必须创建并管理好一张系统调用表。该表用于将系统调用 号与内核服务函数的映射。 是用数组sys_call_table来 号与内核服务函数的映射。Linux是用数组 是用数组 来 表示这个表。 表示这个表。在这个表的每个表项中存放着对应内核服务例 程的指针, 程的指针,而该表项的下标就是该内核服务例程的系统调用 规定, 体系中, 号。Linux规定,在I386体系中,处理器的寄存器 用来传 规定 体系中 处理器的寄存器eax用来传 递系统调用号。 递系统调用号。
1.1.4 系统调用过程
通常情况下abc()系统调用对应的服务例程的名字是 系统调用对应的服务例程的名字是 通常情况下 sys_abc()。 。 (1)用户程序中调用库函数 )用户程序中调用库函数abc()。 。 库调用索引和参数后, (2)系统加载 )系统加载libc库调用索引和参数后,执行 库调用索引和参数后 执行int $0x80或者 或者sysenter汇编指令进入系统调用,执行 汇编指令进入系统调用, 或者 汇编指令进入系统调用 执行system_call 函数。 函数。 (3)system_call函数根据传递过来的参数处理所有的 ) 函数根据传递过来的参数处理所有的 系统调用。使用system_call_table[参数 执行系统调用。 参数]执行系统调用 系统调用。使用 参数 执行系统调用。 (4)系统调用返回。 )系统调用返回。 或者sysexit汇编指令两种方式退出系统调 (5)执行 )执行iret或者 或者 汇编指令两种方式退出系统调 并调用resume_userspace进入用户空间。 进入用户空间。 用,并调用 进入用户空间 库中执行, (6)继续在 )继续在libc库中执行,执行完成后返回到用户应 库中执行 用程序中。 用程序中。
1.1.5 系统调用传递的参数
系统调用中输入输出的参数为实际传递的值或者是用 户态进程的地址, 户态进程的地址,或者是指向用户态函数的指针的数据结构 地址。传递的参数放在寄存器eax中 即系统调用号。 地址。传递的参数放在寄存器 中,即系统调用号。寄存 器传递参数的个数满足两个条件: 器传递参数的个数满足两个条件: • 参数的长度不超过寄存器的长度,如果是32位平台不 参数的长度不超过寄存器的长度,如果是 位平台不 超过32位 位平台不超过64位 超过 位,64位平台不超过 位。 位平台不超过 • 不包括eax中的系统调用号 参数的个数不超过6个 中的系统调用号, 不包括 中的系统调用号,参数的个数不超过 个。
相关文档
最新文档