第13,14次课 第五章 Linux下的C编程 Linux应用程序开发 教学课件.ppt

第13,14次课 第五章 Linux下的C编程 Linux应用程序开发 教学课件.ppt

  1. 1、本文档共131页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13,14次课 第五章 Linux下的C编程 Linux应用程序开发 教学课件

本章概要 Linux的体系结构及系统调用 Linux中的多进程编程 多模块软件的编译和链接 源代码调试 库的开发、调试和使用 RCS和CVS的版本控制 1.什么是操作系统和系统调用 操作系统是从硬件抽象出来的虚拟机,在该虚拟机上用户可以运行应用程序。 系统调用是Unix/Linux操作系统向用户的应用程序提供的和操作系统内核之间的功能接口。其主要目的是使得用户可以使用操作系统提供的有关设备管理、输入/输入系统、文件系统和进程控制、通信以及存储管理等方面的功能。 LINUX通过shell和X Window为用户提供的交互界面。 类似地,LINUX通过各种系统调用为应用系统、为进程提供了编程界面。 Unix/Linux系统体系结构 Unix/Linux系统中的几个基本概念 (1) Unix/Linux运行模式(运行态): 一种计算机硬件要运行Unix/Linux系统,至少需要提供两种运行模式:高优先级的核心模式和低优先级的用户模式。 Unix只需要两层即可以了:核心运行在高优先级,称之为核心态;其它外围软件包括shell,编辑程序,Xwindow等等都是在低优先级运行,称之为用户态。 每种运行态都应该有自己的堆栈。在Linux中,分为用户栈和核心栈。用户栈包括在用户态执行时函数调用的参数、局部变量和其它数据结构。 (2)地址空间: 采用特权模式进行保护的根本目的是对地址空间的保护,用户进程不应该能够访问所有的地址空间:只有通过系统调用这种受严格限制的接口,进程才能进入核心态并访问到受保护的那一部分地址空间的数据,这一部分通常是留给操作系统使用。 Unix/Linux中通过虚存管理机制很好的实现了这种保护。虚拟地址空间分为两个部分:用户空间和系统空间。在用户模式下只能访问用户空间而在核心模式下可以访问系统空间和用户空间。 (3)上下文: 用户级上下文:正文、数据、用户栈以及共享存储区; 寄存器上下文:程序寄存器(IP),即CPU将执行的下条指令地址,处理机状态寄存器(EFLAGS),栈指针,通用寄存器; 系统级上下文:进程表项(proc结构)和U区,在Linux中这两个部分被合成task_struct,区表及页表(mm_struct , vm_area_struct, pgd, pmd, pte等),核心栈等。 进程就是上下文的集合的一个抽象概念。 LINUX的系统调用形式与POSIX兼容,也是一套C语言函数名的集合,如fork()、exit()、read()、write()等,共221个(2.4.0版)。 LINUX系统调用的内部实现方式却与DOS的INT 21H相似,也是经过INT 0X80软中断调用进入后,再根据系统调用号分门别类地服务。 系统调用的功能和分类 操作系统核心在运行期间的活动可以分为两个部分:上半部分(top half)和下半部分(bottom half), 上半部分为应用程序提供系统调用或自陷的服务,是同步服务,由当前执行的进程引起,在当前进程上下文中执行并允许直接访问当前进程的数据结构。 下半部分则是由处理硬件中断的子程序,是属于异步活动,这些子程序的调用和执行与当前进程无关。 系统调用可以看作是一个所有Unix/Linux进程共享的子程序库,但是它是在特权方式下运行,可以存取核心数据结构和它所支持的用户级数据。 系统调用分为两个部分:与文件子系统交互的和进程子系统交互的两个部分。 5.2.1 多进程程序的特点 由于UNIX系统是分时多用户系统, CPU按时间片分配给各个用户使用,实质上应该说CPU按时间片分配给各个进程使用, 每个进程都有自己的运行环境 以使得在CPU做进程切换时不会“忘记”该进程已计算了一半的“半成品”. 以DOS的概念来说, 进程的切换都是一次“DOS中断”处理过程,包括三个层次: (1)用户数据的保存: 包括正文段(TEXT), 数据段(DATA,BSS), 栈段 (STACK), 共享内存段(SHARED MEMORY)的保存. (2)寄存器数据的保存: 包括 PC(program counter,指向下一条要执行的指 令的地址), PSW(processor status word,处理机状态字), SP(stack pointer,栈指针), PCBP(pointer of process control block,进程控 制块指针), FP(frame pointer,指向栈中一个函数的local变量的首地 址), AP(augument pointer,指向栈中函数调用的实参位置), ISP( interrupt stack pointer,中断栈指针), 以及其他的通用寄存器等. (3)系统层次的保存: 包括p

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档