第八部分:案例研究

第八部分 案例研究

第21章 Linux 系统

Linux 系统的主要组成部分:

  • 内核:内核负责维护操作系统的重要抽象,包括虚拟内存和进程;
  • 系统库:定义了洗淘标准函数,由此应用程序能够和内核进行交互;
  • 系统应用:指那些可独立执行的,特定管理任务的程序。

Linux内核模块:Linux内核呢鞥根据需要装载或卸载任意内核代码段,内核模块允许Linux系统有一个很小的标准内核构成,而不必包括额外的驱动程序。任何用户需要的设备驱动程序可以在系统启动时被显式地装入,或者系统按需自动装入或卸载。

Linux环境下模块支持:

  1. 模块管理(module management):允许模块被加载到内存,并能与啮合的其他模块进行通信。
  2. 驱动程序注册(driver registeration):允许模块告诉内核的其他模块模块一个新的驱动程序已经可以使用;
  3. 冲突解决机制(conflict resolution mechanism):允许不同设备驱动程序保留硬件资源,并且保护这些资源防止被其他驱动程序无意地使用;

21.4进程管理

进程是操作系统内服务请求活动的基本环境。

fork()和exec()进程模式:Unix进程管理的基本原理是把创建进程与运行一个新程序这两个截然不同的操作分开。一个新进程由系统调用fork()产生,而新的一个程序通过调用exec()来运行,这是两个完全不同的函数。由fork()创建的新进程不需要运行新程序,新创建的子进程仅仅是继续执行与父进程同样的程序。同样一个新程序运行不需要创建新的进程。任何进程可以随时调用exec()。当前运行的程序立即被终止,新的程序作为已经存在的进程内容开始执行。

linux下进程属性:

  1. 进程特性
    • 进程ID(PID):每一个进程都有一个唯一的标识符。
    • 认证(Credential):每个进程必须有一个相关的用户ID和一个或多个用户组ID,这些ID决定进程访问系统资源和文件权限。
    • 特性(Personality):每个进程都有相应的特征标识符,她能对特定的语义系统调用程序做稍稍修改,以于其他UNIX风格相兼容;
  2. 进程环境:进程环境由父进程继承而来,由两个以上null结束的向量组成:参数向量和环境向量
  3. 进程上下文:树程序运行在某一时刻的一种状态,是不断改变的。进程上下文包括:
    • 调度上下文:调度器挂起和重启进程所需要的信息,同时包括了调度优先级和等待传给进程信号信息。进程上下文 的关键部分是进程的内核栈:内核存储器的一个独立的区域,有内核模式代码专业。进程运行时可能用到的系统调用和中断 都将使用此栈;
    • 审计:内核保留了最近被进程所使用的资源的相关信息,并且记录了进程在其生存期内所使用全部资源情况;
    • 文件表:文件表是一个指向内核文件结构的指针数组。当调用文件I/O时,进程根据索引访问此表;
    • 文件系统上下文
    • 信号处理程序表:unix 系统能将一部信号传递给进程以像一个不同的外部事件。信号处理程序表在进程地址空间内定义当特殊信号到达时所要调用的程序;
    • 虚拟内存上下文

进程与线程:

Linux的fork()系统调用提供复制进程的传统功能,并采用clone()系统调用提供创建线程的能力。但linux并不区分就能成和线程。统称为任务。当调用clone(0,他被传递一组标志,以决定父进程与子进程任务之间的发生多少共享。

21.5 调度

调度室操作系统通过分配CPU时间给不同任务的工作。

进程调度:(1)进程中的公平抢占调度算法;(2)为实时任务所设计的绝对优先级(抢占式,局域优先级)

内核同步:linux提供自旋锁或信号量来在内核中加锁。其次,通过在临界区禁止出现中断的方法(中断控制硬件);

Linux 内核实现了一种同步结构体系;允许临界区在它们整个持续期间运行而不需要禁止中断。为实现其,linux将中断服务子程序分为两部分:上半部和下半部。上半部:是一种普通的中断服务程序,运行时禁止递归中断,更高优先级的中断可以中断程序,但是具有同样或较低优先级的中断就诶有这种功能。服务程序的下半部在运行时所有中断都有效,通过一个微型调度程序保证下半部的中断服务程序不会被部门自己中断。

21.6 内存管理

linux中,内存管理分为:(1)处理分配和释放物理内存:分页、分页组和小内存块;(2)处理虚拟内存,就是内存被映射到正在运行的进程的地址空间上。
Linux内核中基本的物理内存管理器是页面分配程序(page allocator).分配程序运用伙伴系统(buddy system)跟踪可用的物理页面。

虚拟内存:linux虚拟内存系统负责维护队每个进程都可见的地址空间,它根据需要创建虚拟内存的页面,并管理从磁盘装入页面或者按照要求将页面交换到磁盘上

执行与装入用户程序:linux内核执行用户程序是通过exec()系统调用来启动的。该调用命令内核在当前进程中运行新的程序,用新程序的初始上下文完全覆盖进程当前执行的上下文。

  1. 程序映射到内存:linux中,二进制装入程序并不把二进制文件装入到物理内存,而是把二进制文件的页面装入到虚拟内存区域。只有当程序需要访问到某一页面时,页面错误才会导致页面装入到物理内存;
  2. 静态链接和动态链接

21.7 文件系统

linux内核通过将所有单个文件类型的实现细节隐藏到软件框架虚拟文件系统(VFS)下,来处理所有这些类型的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值