应用软件工程师岗位培训课程(常用操作系统).ppt

上传人:max****ui 文档编号:8449531 上传时间:2020-03-29 格式:PPT 页数:56 大小:2.08MB
返回 下载 相关 举报
应用软件工程师岗位培训课程(常用操作系统).ppt_第1页
第1页 / 共56页
应用软件工程师岗位培训课程(常用操作系统).ppt_第2页
第2页 / 共56页
应用软件工程师岗位培训课程(常用操作系统).ppt_第3页
第3页 / 共56页
点击查看更多>>
资源描述
常用操作系统 钱青海 2 windows版本及开发工具简介进程线程线程的建立与退出线程调度线程同步动态连接库与其它操作系统区别 3 windows版本 Windows1 0Windows是由微软在1983年11月 在Lisa之后 Macintosh之前 宣布 并在两年后 1985年11月 发行 在此后的两年中 紧随着MicrosoftWindows早期版本1 0之后 又推出了几种改进版本 以支持国际商业市场 并提供新型视讯显示器和打印机的驱动程序 Windows2 0Windows版本2 0是在1987年11月正式在市场上推出的 该版本对使用者接口做了一些改进 这些改进中最有效的是使用了可重迭式窗口 而Windows1 0中使用的是并排式窗口 Windows2 0还增强了键盘和鼠标接口 特别是加入了菜单和对话框 Windows3 xMicrosoftWindows版本3 1是1992年4月发布的 其中包括的几个重要特性是TrueType字体技术 给Windows带来可缩放的轮廓字体 多媒体 声音和音乐 对象连结和嵌入 OLE ObjectLinkingandEmbedding 和通用对话框 跟OS 2一样 Windows3 1只能在保护模式下运作 并且要求至少配置了1MB内存的286或386处理器 WindowNT在1993年7月发表的WindowsNT是第一个支持Intel386 486和Pentium微处理器32位保护模式的Windows版本 WindowsNT提供32位平坦寻址 并使用32位的指令集 本章后面我会谈到一些寻址空间的问题 WindowsNT还可以移植到非Intel处理器上 并在几种使用RISC芯片的工作站上执行 4 windows版本 Windows95 98Windows95是在1995年8月发布的 和WindowsNT一样 Windows95也支持Intel386或更高等级处理器的32位 但是Windows95具有需要较少硬件资源的优点 Windows98在1998年6月发布 具有保护模式 虽然它缺少WindowsNT中的某些功能 诸如高安全性和对RISC机器的可移植性等许多加强功能 包括执行效能的提高 更好的硬件支持以及与因特网和全球信息网 WWW 更紧密的结合 WindowsME2000年9月微软公司发行32位图形操作系统WindowsME 该操作系统是在Windows95和Windows98的基础上开发的 Window2000Windows2000有四个版本 Professional Server AdvancedServer和DatacenterServer 所有版本的Windows2000都有共同的一些新特征 NTFS5 新的NTFS文件系统 EFS 允许对磁盘上的所有文件进行加密 WDM 增强对硬件的支持 WindowXP2001年10月微软发布了WindowsXP 它包括了简化了的Windows2000的用户安全特性 并整合了防火墙 以用来确保长期以来一直困扰微软的安全问题 WINDOWS20032003年1月发布的Windows2003大量继承了WindowsXP的友好操作性和Windows2000sever的网络特性 是一个同时适合个人用户和服务器使用的操作系统 Windows2003完全延续了WindowsXP安装时方便 快捷 高效的特点 几乎不需要多少人工参与就可以自动完成硬件的检测 安装 配置等工作 虽然在名称上 Windows2003又延续了Windows家族的习惯命名法则 但从其提供的各种内置服务以及重新设计的内核程序来说 Windows2003与Windows2000 XP有着本质的区别 5 windows开发工具 常见的Windows应用程序开发语言和工具 MicrosoftVisualC MicrosoftVisualBasicMicrosoftVisualJ BorlandDelphi 6 windows版本及开发工具简介进程线程线程的建立与退出线程调度线程同步动态连接库与其它操作系统区别 7 进程 进程通常被定义为一个正在运行的程序的实例 它由两个部分组成 操作系统用来管理进程的内核对象 地址空间 它包含所有可执行模块或DLL模块的代码和数据 它还包含动态内存分配的空间 如线程堆栈和堆分配空间 每个进程至少拥有一个线程 来执行进程的地址空间中的代码 8 进程句柄和优先级 进程的实例句柄加载到进程地址空间的每个可执行文件或DLL文件均被赋予一个独一无二的实例句柄 对于加载资源的函数调用来说 通常都需要该句柄的值 表示进程句柄的两种数据类型 HMODULE与HINSTANCE 进程的优先级 9 创建进程 创建进程的几种方式 调用ShellExecute函数调用WinExec函数调用Createprocess函数函数原型 HINSTANCEShellExecute HWNDhwnd LPCTSTRlpOperation LPCTSTRlpFile LPCTSTRlpParameters LPCTSTRlpDirectory INTnShowCmd UINTWinExec LPCSTRlpCmdLine UINTuCmdShow BOOLCreateProcess LPCTSTRlpApplicationName LPTSTRlpCommandLine LPSECURITY ATTRIBUTESlpProcessAttributes LPSECURITY ATTRIBUTESlpThreadAttributes BOOLbInheritHandles DWORDdwCreationFlags LPVOIDlpEnvironment LPCTSTRlpCurrentDirectory LPSTARTUPINFOlpStartupInfo LPPROCESS INFORMATIONlpProcessInformation 10 终止进程 终止进程运行常用的四种方式 主线程的进入点函数返回进程中的一个线程调用ExitProcess函数一个进程中的线程调用TerminateProcess函数 应该避免使用这种方法 程中的所有线程自行终止运行 这种情况非常少 11 终止进程 思考调用和不调用ExitProcess函数程序输出结果的不同 classCSample public CSample printf Constructor n CSample printf Destructor n CSampleg SampleObj voidmain CSampleSampleObj ExitProcess 0 不调用ExitProcess函数的输出结果 ConstructorConstructorDestructorDestructor调用ExitProcess函数的输出结果 ConstructorConstructor 12 进程间通信方式 文件映射文件映射 Memory MappedFiles 能使进程把文件内容当作进程地址区间一块内存那样来对待 因此 进程不必使用文件I O操作 只需简单的指针操作就可读取和修改文件的内容 Win32API允许多个进程访问同一文件映射对象 各个进程在它自己的地址空间里接收内存的指针 通过使用这些指针 不同进程就可以读或修改文件的内容 实现了对文件中数据的共享 应用程序有三种方法来使多个进程共享一个文件映射对象 继承 第一个进程建立文件映射对象 它的子进程继承该对象的句柄 命名文件映射 第一个进程在建立文件映射对象时可以给该对象指定一个名字 可与文件名不同 第二个进程可通过这个名字打开此文件映射对象 另外 第一个进程也可以通过一些其它IPC机制 有名管道 邮件槽等 把名字传给第二个进程 句柄复制 第一个进程建立文件映射对象 然后通过其它IPC机制 有名管道 邮件槽等 把对象句柄传递给第二个进程 第二个进程复制该句柄就取得对该文件映射对象的访问权限 13 进程间通信方式 共享内存Win32API中共享内存 SharedMemory 实际就是文件映射的一种特殊情况 进程在创建文件映射对象时用0 xFFFFFFFF来代替文件句柄 HANDLE 就表示了对应的文件映射对象是从操作系统页面文件访问内存 其它进程打开该文件映射对象就可以访问该内存块 由于共享内存是用文件映射实现的 所以它也有较好的安全性 也只能运行于同一计算机上的进程之间 匿名管道匿名管道 AnonymousPipe 是在父进程和子进程之间 或同一父进程的两个子进程之间传输数据的无名字的单向管道 通常由父进程创建管道 然后由要通信的子进程继承通道的读端点句柄或写端点句柄 然后实现通信 父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程 这些子进程可以使用管道直接通信 不需要通过父进程 匿名管道是单机上实现子进程标准I O重定向的有效方法 它不能在网上使用 也不能用于两个不相关的进程之间 14 进程间通信方式 命名管道命名管道 NamedPipe 是服务器进程和一个或多个客户进程之间通信的单向或双向管道 不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用 服务器建立命名管道时给它指定一个名字 任何进程都可以通过该名字打开管道的另一端 根据给定的权限和服务器进程通信 命名管道提供了相对简单的编程接口 使通过网络传输数据并不比同一计算机上两进程之间通信更困难 但它不适合同时和多个进程通信 邮件槽邮件槽 Mailslots 提供进程间单向通信能力 任何进程都能建立邮件槽成为邮件槽服务器 其它进程 称为邮件槽客户 可以通过邮件槽的名字给邮件槽服务器进程发送消息 进来的消息一直放在邮件槽中 直到服务器进程读取它为止 一个进程既可以是邮件槽服务器也可以是邮件槽客户 因此可建立多个邮件槽实现进程间的双向通信 15 进程间通信方式 剪贴板剪贴板 ClippedBoard 实质是Win32API中一组用来传输数据的函数和消息 为Windows应用程序之间进行数据共享提供了一个中介 Windows已建立的剪切 复制 粘贴的机制为不同应用程序之间共享不同格式数据提供了一条捷径 当用户在应用程序中执行剪切或复制操作时 应用程序把选取的数据用一种或多种格式放在剪贴板上 然后任何其它应用程序都可以从剪贴板上拾取数据 从给定格式中选择适合自己的格式 动态数据交换动态数据交换 DDE 是使用共享内存在应用程序之间进行数据交换的一种进程间通信形式 应用程序可以使用DDE进行一次性数据传输 也可以当出现新数据时 通过发送更新值在应用程序间动态交换数据 对象连接与嵌入应用程序利用对象连接与嵌入 OLE 技术管理复合文档 由多种数据格式组成的文档 OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务 16 进程间通信方式 动态连接库Win32动态连接库 DLL 中的全局数据可以被调用DLL的所有进程共享 这就又给进程间通信开辟了一条新的途径 当然访问时要注意同步问题 远程过程调用Win32API提供的远程过程调用 RPC 使应用程序可以使用远程调用函数 这使在网络上用RPC进行进程通信就像函数调用那样简单 RPC既可以在单机不同进程间使用也可以在网络中使用 NetBios函数Win32API提供NetBios函数用于处理低级网络控制 这主要是为IBMNetBios系统编写与Windows的接口 除非那些有特殊低级网络功能要求的应用程序 其它应用程序最好不要使用NetBios函数来进行进程间通信 17 进程间通信方式 SocketsWindowsSockets规范是一套Windows下的网络编程接口 它不仅支持TCP IP协议 而且还支持其它协议 如IPX 使程序员可以充分利用Windows的消息机制进行编程 WM COPYDATA消息WM COPYDATA是一种非常强大的消息 当一个应用向另一个应用传送数据时 发送方只需使用调用SendMessage函数 参数是目的窗口的句柄 传递数据的起始地址 WM COPYDATA消息 接收方只需像处理其它消息那样处理WM COPYDATA消息 这样收发双方就实现了数据共享 18 常用的进程相关函数 GetExitCodeProcess检索进程退出码GetGuiResources确定有多少用户或图形设备接口 GUI 对象在使用中SetPriorityClass设置进程的基准优先级GetPriorityClass获得进程的基准优先级SetProcessAffinityMask确定进程选择那个CPUGetProcessAffinityMask设置为进程所选择的CPUSetProcessPriorityBoost允许或禁止来自动态地改变进程优先级的WindowsGetProcessPriorityBoost读取优先级增加状态SetProcessShutDownParameters在系统关闭过程中GetProcessShutDownParameters读取关闭参数SetProcessWorkingSetSize设置进程占用的最小和最大物理存储器GetProcessWorkingSetSize读取工作区TerminateProcess缓和地终止进程ExitProcess突然终止进程GetProcessVersion确定进程期望的Windows版本GetProcessTimes获取进程的CPU占用率GetStartUpInfo获取作为传送到CreateProcess的启动结构 19 windows版本及开发工具简介进程线程线程的建立与退出线程调度线程同步动态连接库与其它操作系统区别 20 线程 线程是由两个部分组成的 线程的内核对象 操作系统用它来对线程实施管理 内核对象也是系统用来存放线程统计信息的地方 线程堆栈 它用于维护线程在执行代码时需要的所有函数参数和局部变量 21 线程的创建 创建线程的三种方法 激活一个新进程调用Win32API函数CreateThread调用C运行库函数 beginthread beginthreadex函数原型 HANDLECreateThread SEC ATTRSSecurityAttributes ULONGStackSize SEC THREAD STARTStartFunction PVOIDThreadParameter ULONGCreationFlags PULONGThreadId uintptr t beginthread void cdecl start address void unsignedstack size void arglist uintptr t beginthreadex void security unsignedstack size unsigned stdcall start address void void arglist unsignedinitflag unsigned thrdaddr 22 线程的终止 若要终止线程的运行 可以使用下面的方法 线程函数返回 最好使用这种方法 通过调用ExitThread 或 endthread endthreadex 函数 线程将自行撤消 最好不要使用这种方法 同一个进程或另一个进程中的线程调用TerminateThread函数 应该避免使用这种方法 包含线程的进程终止运行 应该避免使用这种方法 23 线程的终止 线程终止运行时发生的操作 线程拥有的所有用户对象均被释放 在Windows中 大多数对象是由包含创建这些对象的线程的进程拥有的 但是一个线程拥有两个用户对象 即窗口和挂钩 当线程终止运行时 系统会自动撤消任何窗口 并且卸载线程创建的或安装的任何挂钩 其他对象只有在拥有线程的进程终止运行时才被撤消 线程的退出代码从STILL ACTIVE改为传递给ExitThread或TerminateThread的代码 线程内核对象的状态变为已通知 如果线程是进程中最后一个活动线程 系统也将进程视为已经终止运行 线程内核对象的使用计数递减1 24 线程的优先级 线程的优先级获取线程的优先级intGetThreadPriority HANDLEhThread 设置线程的优先级BOOLSetThreadPriority HANDLEhThread intnPriority 25 线程的优先级 进程优先级类和线程相对优先级的映射 26 线程调度 线程调度的方法 暂停和恢复线程的运行调用SuspendThread函数暂停一个线程的执行DWORDSuspendThread HANDLEhThread 调用ResumeThread函数恢复一个线程的执行DWORDResumeThread HANDLEhThread 睡眠方式调用Sleep函数告诉系统本线程不想在某个时间段被调度VOIDSleep DWORDdwMilliseconds 转换到另一个线程调用SwitchToThread的函数使另一个线程得到调度BOOLSwitchToThread VOID 27 线程同步 线程可以使自己进入等待状态 直到一个对象变为已通知状态 可处于已通知状态或未通知状态的内核对象 进程文件修改通知线程事件作业可等待定时器文件信标控制台输入互斥对象 28 线程同步 常用等待函数 等待一个内核对象变为已通知状态函数 DWORDWaitForSingleObject HANDLEhHandle DWORDdwMilliseconds 等待多个内核对象变为已通知状态函数 DWORDWaitForMultipleObjects DWORDnCount CONSTHANDLE lpHandles BOOLbWaitAll DWORDdwMilliseconds 29 事件内核对象 创建事件内核对象 HANDLECreateEvent LPSECURITY ATTRIBUTESlpEventAttributes BOOLbManualReset BOOLbInitialState LPCTSTRlpName 打开事件内核对象 HANDLEOpenEvent DWORDdwDesiredAccess BOOLbInheritHandle LPCTSTRlpName 将事件改为已通知状态 BOOLSetEvent HANDLEhEvent 将事件改为未通知状态 BOOLResetEvent HANDLEhEvent 30 示例 31 人工重置事件 32 自动重置事件 33 信标内核对象 信标内核对象的创建HANDLECreateSemaphore LPSECURITY ATTRIBUTESlpSemaphoreAttribute LONGlInitialCount LONGlMaximumCount LPCTSTRlpName 打开信标内核对象HANDLEOpenSemaphore DWORDdwDesiredAccess BOOLbInheritHandle LPCTSTRlpName 释放信标资源 BOOLReleaseSemaphore HANDLEhSemaphore LONGlReleaseCount LPLONGlpPreviousCount 34 信标内核对象使用示例 35 互斥对象内核对象 互斥对象的创建HANDLECreateMutex LPSECURITY ATTRIBUTESlpMutexAttributes BOOLbInitialOwner LPCTSTRlpName 打开互斥对象HANDLEOpenMutex DWORDdwDesiredAccess BOOLbInheritHandle LPCTSTRlpName 释放互斥对象BOOLReleaseMutex HANDLEhMutex 36 内核对象与线程同步之间的相互关系 37 windows版本及开发工具简介进程线程线程的建立与退出线程调度线程同步动态连接库与其它操作系统区别 38 库 什么是库 库的分类静态链接库动态链接库 39 动态连接库 为什么使用DLL扩展了应用程序的特性 可以用许多种编程语言来编写 简化了软件项目的管理有助于节省内存有助于资源的共享有助于应用程序的本地化有助于解决平台差异可以用于一些特殊的目的 40 动态连接库 动态链接库的入口 出口点 41 动态链接库 导出和导入DLL函数和数据在库的 def文件的EXPROTS部分中填写出导出项目的名称使用工具相关的方法 比如VisualC 所使用的 declspec dllexport 关键字 42 动态链接库 动态链接库的调用隐式调用让应用程序的源代码只引用DLL中包含的符号 这样 当应用程序启动运行时 加载程序就能够隐含加载 和链接 需要的DLL 显式调用在应用程序运行时让应用程序显式加载需要的DLL并且显式链接到需要的输出符号 显式加载 HMODULELoadLibrary LPCTSTRlpFileName 显式卸载 BOOLFreeLibrary HMODULEhModule 显式链接到一个输出符号 FARPROCGetProcAddress HMODULEhModule LPCSTRlpProcName 43 线程调用LoadLibrary时执行的操作步骤 44 线程调用FreeLibrary时执行的操作步骤 45 常用的线程相关函数 AttachThreadInput选用线程的处理另外的线程允许的输入 其中 要设置的权能集中在每一个另外的窗口和共享输入状态CreateRemoteThread在另一个进程中 创建线程CreateThread在当前进程中创建线程ExitThread退出当前线程TerminateThread没有适当地清除情况下 终止线程GetCurrentTherad得到当前线程句柄GetCurrentThreadId得到当前线程IDGetExitCodeThread得到线程的退出代码SetTheradPriority设置线程优先级GetThreadPriority读取线程优先级SetThreadPriorityBoost使能或不使该线程的动态优先级增加GetThreadPriorityBoost读取该线程动态优先级增加的状态GetThreadTimes确定被创建 破坏的线程以及使用了多少进程时间SuspendThread挂起线程ResumeThread恢复线程 每个命令必须调用SuspendThread一次 SetThreadAffinityMask确定线程在那个进程中运行SetThreadIdealProcessor设置线程所选择运行的处理机SwitchToThread使处理机放弃另外的线程 没有选择哪个线程 46 windows版本及开发工具简介进程线程线程的建立与退出线程调度线程同步动态连接库与其它操作系统区别 47 目前常见操作系统有LINUXUNIXvxworkswindows 48 嵌入式系统 嵌入式系统嵌入式系统是以嵌入式计算机为技术核心 面向用户 面向产品 面向应用 软硬件可裁减的 适用于对功能 可靠性 成本 体积 功耗等综合性能有严格要求的专用计算机系统 嵌入式系统的特点 高可靠性实时性和具体应用有机地结合在一起软件代码要求高质量 高可靠性一般都固化在只读存储器中或间存中 49 嵌入式操作系统 嵌入式操作系统嵌入式操作系统EOS EmbeddedOperatingSystem 是一种用途广泛的系统软件 过去它主要应用于工业控制和国防系统领域 EOS负责嵌人系统的全部软 硬件资源的分配 调度工作 控制协调并发活动 它必须体现其所在系统的特征 能够通过装卸某些模块来达到系统所要求的功能 嵌入式操作系统特有功能可装卸性强实时性统一的接口操作方便 简单 提供友好的图形GUI提供强大的网络功能强稳定性 弱交互性固化代码更好的硬件适应性 50 常用嵌入式操作系统 常用嵌入式操作系统PALMOSWindowsCELinuxVxWorks 51 常用嵌入式操作系统 PALMOS优点操作系统的节能功能合理的内存管理数据是以数据库 database 的格式来存储的外围硬件十分丰富 52 常用嵌入式操作系统 WindowsCE优点具有灵活的电源管理功能 包括睡眠 唤醒摸式高效率的操作系统特性拥有良好的通信能力支持嵌套中断更好的线程响应能力拥有256个优先级别支持近1500个Win32API 53 常用嵌入式操作系统 Linux优点精简的内核 性能高 稳定 多任务适用于不同的CPU 支持多种体系结构能够提供完善的嵌人式GUI以及嵌入式X Wifld WS 提供完整的开发工具和SDK 同时提供PC上的开发版本用户可定制 可提供图形化的定制和配置工具常用嵌入式芯片的驱动集 支持大量的周边硬件设备 驱动丰富针对嵌人式的存储方案 提供实时版本和完善的嵌入式解决方案完善的中文支持 强大的技术支持 完整的文档开放源码 丰富的软件资源 广泛的软件开发者的支持 价格低廉 结构灵活 适用面广 54 常用嵌入式操作系统 LinuxOS与WindowsCE的比较Linux是开放源代码的 不存在黑箱技术 遍布全球的众多Linux爱好者都是Linux开发者的强大技术支持者 而WindowsCE是非开放性OS 使第三方很难实现产品的定制 Linux的源代码随处可得 注释丰富 文档齐全 易干解决各种问题 Linux的内核小 效率高 而WindowsCE在这方面是笨拙的 占用过多的RAM 应用程序庞大 Linux是开放源代码的OS 在价格上极具竞争力 适合中国国情 WindowsCE的版权费用是厂家不得不考虑的因素 Linux不仅支持X86芯片 还是一个跨平台的系统 到目前为止 它可以支持20 30种CPU 很多CPU 包括家电业的芯片 厂商都开始做Linux的平台移植工作 而且移植的速度远远超过Java的开发环境 如果今天采用Linux环境开发产品 那么将来更换CPU时就不会遇到更换平台的困扰 Linux内核的结构在网络方面是非常完整的 它提供了对包括十兆位 百兆位及千兆位的以太网 还有无线网络 Tokenring 令牌环 和光纤甚至卫星的支持Linux在内核结构的设计中考虑适应系统的可裁减性的要求 windowsCE在内核结构的设计中并未考虑适应系统的高度可裁减性的要求 55 常用嵌入式操作系统 VxWorks优点支持广泛的工业标准具备一个高效的微内核具有可伸缩性 56 结束
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!