应用软件工程师岗位培训课程(常用操作系统).ppt
《应用软件工程师岗位培训课程(常用操作系统).ppt》由会员分享,可在线阅读,更多相关《应用软件工程师岗位培训课程(常用操作系统).ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常用操作系统常用操作系统钱青海钱青海windows版本及开发工具简介版本及开发工具简介 进程进程 线程线程 线程的建立与退出线程的建立与退出 线程调度线程调度 线程同步线程同步 动态连接库动态连接库 与其它操作系统区别与其它操作系统区别 2windows版本版本Windows1.0Windows是由微软在1983年11月(在Lisa之后,Macintosh之前)宣布,并在两年后(1985年11月)发行。在此后的两年中,紧随着Microsoft Windows早期版本1.0之后,又推出了几种改进版本,以支持国际商业市场,并提供新型视讯显示器和打印机的驱动程序。Windows2.0Windows版
2、本2.0是在1987年11月正式在市场上推出的。该版本对使用者接口做了一些改进。这些改进中最有效的是使用了可重迭式窗口,而Windows 1.0中使用的是并排式窗口。Windows 2.0还增强了键盘和鼠标接口,特别是加入了菜单和对话框。Windows3.xMicrosoft Windows版本3.1是1992年4月发布的,其中包括的几个重要特性是TrueType字体技术(给Windows带来可缩放的轮廓字体)、多媒体(声音和音乐)、对象连结和嵌入(OLE:Object Linking and Embedding)和通用对话框。跟OS/2一样,Windows 3.1只能在保护模式下运作,并且要
3、求至少配置了1MB内存的286或386处理器。Window NT在1993年7月发表的Windows NT是第一个支持Intel 386、486和Pentium微处理器32位保护模式的Windows版本。Windows NT提供32位平坦寻址,并使用32位的指令集。(本章后面我会谈到一些寻址空间的问题)。Windows NT还可以移植到非Intel处理器上,并在几种使用RISC芯片的工作站上执行。3windows版本版本Windows95/98Windows 95是在1995年8月发布的。和Windows NT一样,Windows 95也支持Intel 386或更高等级处理器的32位,但是Wi
4、ndows 95具有需要较少硬件资源的优点。Windows 98在1998年6月发布,具有保护模式。虽然它缺少Windows NT中的某些功能,诸如高安全性和对RISC机器的可移植性等许多加强功能,包括执行效能的提高、更好的硬件支持以及与因特网和全球信息网(WWW)更紧密的结合。Windows ME 2000年9月微软公司发行32位图形操作系统Windows ME,该操作系统是在Windows 95和Windows 98的基础上开发的。Window2000Windows 2000有四个版本:Professional、Server、Advanced Server和Datacenter Serve
5、r。所有版本的Windows 2000都有共同的一些新特征:NTFS5,新的NTFS文件系统;EFS,允许对磁盘上的所有文件进行加密;WDM,增强对硬件的支持。WindowXP2001年10月微软发布了Windows XP,它包括了简化了的Windows 2000的用户安全特性,并整合了防火墙,以用来确保长期以来一直困扰微软的安全问题。WINDOWS 2003 2003年1月发布的Windows2003大量继承了Windows XP的友好操作性和Windows 2000 sever的网络特性,是一个同时适合个人用户和服务器使用的操作系统。Windows 2003完全延续了Windows XP安
6、装时方便、快捷、高效的特点,几乎不需要多少人工参与就可以自动完成硬件的检测、安装、配置等工作。虽然在名称上,Windows 2003又延续了Windows家族的习惯命名法则,但从其提供的各种内置服务以及重新设计的内核程序来说,Windows 2003与Windows 2000/XP有着本质的区别。4windows开发工具开发工具常见的常见的Windows应用程序开发语言和工具应用程序开发语言和工具:Microsoft Visual C+Microsoft Visual Basic Microsoft Visual J+Borland Delphi 5windows版本及开发工具简介版本及开发工
7、具简介 进程进程 线程线程 线程的建立与退出线程的建立与退出 线程调度线程调度 线程同步线程同步 动态连接库动态连接库 与其它操作系统区别与其它操作系统区别 6进程进程进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:操作系统用来管理进程的内核对象。地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。7进程句柄和优先级进程句柄和优先级进程的实例句柄加载到进程地址空间的每个可执行文件或DLL文件均被赋予一个独一无二的实例句柄。对于加载资源的函数调用来说,通常都需要该句柄的值。
8、表示进程句柄的两种数据类型:HMODULE与HINSTANCE进程的优先级进程的优先级 8创建进程创建进程创建进程的几种方式:调用ShellExecute函数调用WinExec函数调用Createprocess函数函数原型:HINSTANCE ShellExecute(HWND hwnd,LPCTSTR lpOperation,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd);UINT WinExec(LPCSTR lpCmdLine,UINT uCmdShow);BOOL CreateProcess(L
9、PCTSTR lpApplicationName,LPTSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCTSTR lpCurrentDirectory,LPSTARTUPINFO lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);9终止进程终止进
10、程终止进程运行常用的四种方式:主线程的进入点函数返回进程中的一个线程调用ExitProcess函数一个进程中的线程调用TerminateProcess函数(应该避免使用这种方法)程中的所有线程自行终止运行(这种情况非常少)。10终止进程终止进程思考调用和不调用ExitProcess函数程序输出结果的不同:class CSamplepublic:CSample()printf(“Constructorn);CSample()printf(“Destructorn);CSample g_SampleObj;void main()CSample SampleObj;ExitProcess(0);不调
11、用ExitProcess函数的输出结果:ConstructorConstructorDestructorDestructor调用ExitProcess函数的输出结果:ConstructorConstructor11进程间通信方式进程间通信方式文件映射文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文
12、件中数据的共享。应用程序有三种方法来使多个进程共享一个文件映射对象:继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄;命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。第二个进程可通过这个名字打开此文件映射对象。另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。第二个进程复制该句柄就取得对该文件映射对象的访问权限。12进程间通信方式进程间通信方式共享内存共享内存Win32 API中共享内存(Shar
13、ed Memory)实际就是文件映射的一种特殊情况。进程在创建文件映射对象时用0 xFFFFFFFF来代替文件句柄(HANDLE),就表示了对应的文件映射对象是从操作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。匿名管道匿名管道 匿名管道(Anonymous Pipe)是在父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写端点句柄,然后实现通信。父进程还可以建立两个或更多个继承匿名管道读和写
14、句柄的子进程。这些子进程可以使用管道直接通信,不需要通过父进程。匿名管道是单机上实现子进程标准I/O重定向的有效方法,它不能在网上使用,也不能用于两个不相关的进程之间。13进程间通信方式进程间通信方式命名管道命名管道 命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。命名管道提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,但它不适合同时和多
15、个进程通信。邮件槽邮件槽 邮件槽(Mailslots)提供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。进来的消息一直放在邮件槽中,直到服务器进程读取它为止。一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信。14进程间通信方式进程间通信方式剪贴板剪贴板 剪贴板(Clipped Board)实质是Win32 API中一组用来传输数据的函数和消息,为Windows应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)粘贴的机制为不同应用程序之间共享不同
16、格式数据提供了一条捷径。当用户在应用程序中执行剪切或复制操作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择适合自己的格式。动态数据交换动态数据交换 动态数据交换(DDE)是使用共享内存在应用程序之间进行数据交换的一种进程间通信形式。应用程序可以使用DDE进行一次性数据传输,也可以当出现新数据时,通过发送更新值在应用程序间动态交换数据。对象连接与嵌入对象连接与嵌入 应用程序利用对象连接与嵌入(OLE)技术管理复合文档(由多种数据格式组成的文档),OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务。15进程间通信方式
17、进程间通信方式动态连接库动态连接库 Win32动态连接库(DLL)中的全局数据可以被调用DLL的所有进程共享,这就又给进程间通信开辟了一条新的途径,当然访问时要注意同步问题。远程过程调用远程过程调用 Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。RPC既可以在单机不同进程间使用也可以在网络中使用。NetBios函数函数 Win32 API提供NetBios函数用于处理低级网络控制,这主要是为IBM NetBios系统编写与Windows的接口。除非那些有特殊低级网络功能要求的应用程序,其它应用程序最好不要使用
18、NetBios函数来进行进程间通信。16进程间通信方式进程间通信方式SocketsWindows Sockets规范是一套Windows下的网络编程接口。它不仅支持TCP/IP协议,而且还支持其它协议(如IPX),使程序员可以充分利用Windows的消息机制进行编程。WM_COPYDATA消息消息 WM_COPYDATA是一种非常强大的消息。当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息,这样收发双方就实现了数据共享。17常用的进程
19、相关函数常用的进程相关函数GetExitCodeProcess 检索进程退出码GetGuiResources 确定有多少用户或图形设备接口(GUI)对象在使用中SetPriorityClass 设置进程的基准优先级GetPriorityClass 获得进程的基准优先级SetProcessAffinityMask 确定进程选择那个CPUGetProcessAffinityMask 设置为进程所选择的CPUSetProcessPriorityBoost 允许或禁止来自动态地改变进程优先级的WindowsGetProcessPriorityBoost 读取优先级增加状态SetProcessShutD
20、ownParameters 在系统关闭过程中GetProcessShutDownParameters 读取关闭参数SetProcessWorkingSetSize 设置进程占用的最小和最大物理存储器GetProcessWorkingSetSize 读取工作区TerminateProcess 缓和地终止进程ExitProcess 突然终止进程GetProcessVersion 确定进程期望的Windows版本GetProcessTimes 获取进程的CPU占用率GetStartUpInfo 获取作为传送到CreateProcess的启动结构18windows版本及开发工具简介版本及开发工具简介
21、进程进程 线程线程 线程的建立与退出线程的建立与退出 线程调度线程调度 线程同步线程同步 动态连接库动态连接库 与其它操作系统区别与其它操作系统区别 19线程线程线程是由两个部分组成的:线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。20线程的创建线程的创建 创建线程的三种方法:创建线程的三种方法:激活一个新进程调用Win32 API函数CreateThread调用C运行库函数_beginthread/_beginthreadex函数原型:函数原型:HANDLE CreateThread
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用软件 工程师 岗位培训 课程 常用 操作系统
限制150内