《软件开发技术基础》由会员分享,可在线阅读,更多相关《软件开发技术基础(40页珍藏版)》请在金锄头文库上搜索。
1、软件开发技术基础第3章 操作系统及程序设计讲授教师:卫颜俊讲授教师:卫颜俊 主 要 内 容l操作系统及其功能l进程管理应用程序设计 l内存管理应用程序设计 l设备与文件管理应用程序设计 l人机接口管理应用程序设计 学时安排l6个学时讲授(36/6)l2个学时实验(12/6) 本章序l计算机系统l硬件系统l主机、显示器、打印机、键盘和鼠标等 l软件系统 l操作系统、浏览器、办公软件、杀毒软件、多媒体软件、软件开发工具和数据库软件等lWindows Server 2003是一种操作系统 本章目标l大学计算机基础 为先修课程l回答了:操作系统在计算机中起的作用和它能干什么 l未回答:如何干、又如何在
2、操作系统下编写程序 l 本课本章l不对操作系统的原理作深入的介绍,但以它的几项重要功能为主线,以C+为工具,揭示了一部分操作系统“内幕”,使读者对操作系统的工作原理有进一步的了解,同时对程序设计语言的应用有所加强 31 操作系统及其功能操作系统及其功能 l操作系统的发展l手工操作、批处理、多道程序系统和分时操作系统等四个阶段,其中分时操作系统为目前最为流行l实用的操作系统lWindows XlDOSlLinux 311 操作系统的定义操作系统的定义 l定义l一组控制和管理计算机软、硬件资源,为用户提供便捷使用计算机的程序的集合 l作用 l管理计算机和使用计算机 l特征 l并发性、共享性、虚拟性
3、和不确定性 l计算机系统组成l硬件、操作系统、其他系统软件、应用软件和用户接口 312 操作系统的功能操作系统的功能lCPU与进程管理l对处理器的时间进行合理分配、对处理器的运行实施有效的管理l存储器管理l对存储器进行分配、保护和扩充l设备管理l根据确定的设备分配原则对设备进行分配,使设备与主机能够并行工作,为用户提供良好的设备使用界面l文件管理l有效地管理文件的存储空间,合理地组织和管理文件系统,为文件访问和文件保护提供更有效的方法及手段l用户接口l用户操作计算机的界面,或称为用户界面,通过用户接口,用户只需进行简单操作,就能实现复杂的应用处理 用户接口类型l命令接口,用户通过交互命令方式直
4、接或间接地对计算机进行操作, DOS:是纯命令行输入方式,Windows:鼠标操作方式l程序接口,供用户以程序方式进行操作,或API(Application Programming Interface),用户通过API函数可以调用系统提供的例行程序,实现既定的操作。 DOS:中断服务功能,Windows:Windows API函数313 DOS与Windows操作使用方法简介 lDOS常用命令:HELP DIR CLS CD RD COPY lWindows 最常用的功能是:桌面、浏览器、资源管理器、我的电脑、网上邻居、控制面板(Control)、任务管理器(taskmgr)、Word、Exc
5、el、VC+,记事本(Notepad),写字板(write) 314 DOS与Windows操作系统程序接口简介 lDOS单用户单任务的磁盘操作系统 功能体现在系统提供的DOS和BIOS层上,借助于高级语言和汇编语言,并通过调用中断服务程序,可以完成大部分编程工作。 lWindows一种多用户多任务、图形化的新型操作系统 Windows NT体系结构 登录进程和会话管理器 事件日志、调度服务、SQL ServerWin32 MS-DOS程序和Win32程序进程线程管理、I/O和内存管理 线程调度、中断和异常处理 将内核、设备驱动程序和执行体分离以适应不同的平台 将I/O函数调用转换为I/O请求
6、 窗口和绘制 窗口 消息 lWindows程序是以事件为驱动、消息机制为基础 l消息定义:由用户操作而向应用程序发出的信息,也包括操作系统内部产生的消息。l消息类型:windows消息,命令消息和控件通知 WM_LBUTTONDOWN 、WM_PAINTl消息结构:消息号和参数组成typedef struct tagMSG HWND hwnd;窗口句柄,为NULL,则可检索所有驻留在消息队列中的消息 UINT message;消息值,由windows.h头文件中的宏定义来标识 WPARAM wParam;包含有关消息的附加信息,不同消息其值有所不同 LPARAM lParam; DWORD t
7、ime; 指定消息送至队列的时间 POINT pt;指定消息发送时屏幕光标的位置, 其数据类型POINT也是一个结构体MSG;Windows数据类型 Windows程序框架 lWinMain框架结构例3-1l对话框框架程序例3-2l文档视图框架程序 例3-3例3-1 WinMain框架结构l要求:l显示一个窗口l在窗口中显示一段文字l步骤:l打开VC+l新键工程类型为“Win32 Application” l添加C+源程序例3-1 WinMain框架结构(2)l用到的主要数据结构:lUINT 无符号整数 等价于 unsigned intlHINSTANCE 实例句柄等价于 unsigned o
8、nglPSTR 字符指针等价于 char *lTCHAR 字符等价于 charlHWND窗口句柄等价于 unsigned longlMSG 消息结构lWINAPI CDECLlLRESULT 消息返回值等价于longlCALLBACK PASCALlWPARAM 消息参数 等价于UINTlLPARAM 消息参数 等价于longlPAINTSTRUCT 窗口绘制信息结构lHDC设备环境句柄等价于unsigned longlWNDCLASS 窗口结构体 例3-1 WinMain框架结构(3)ltypedef struct _WNDCLASS l UINT style; l WNDPROC lpfn
9、WndProc; l int cbClsExtra; l int cbWndExtra; l HANDLE hInstance; l HICON hIcon; l HCURSOR hCursor; l HBRUSH hbrBackground; l LPCTSTR lpszMenuName; l LPCTSTR lpszClassName; l WNDCLASS; 例3-2对话框框架程序l步骤 l打开VC+ l工程类型为“MFC AppWizard(exe) ”l程序类型为“Dialog based ”l改变窗口标题l改变静态控件标题例3-3文档视图框架程序 l步骤 l打开VC+ l工程类型为
10、“MFC AppWizard(exe) ”l程序类型为“Single document ”l改变窗口标题l在视图类的OnDraw函数中添加代码:“pDC-TextOut(100,100,MFC文档/视图演示程序);” 32 进程管理应用程序设计进程管理应用程序设计 lCPU与进程管理的相关概念 lWindows操作系统的进程和线程管理 l进程和线程的应用 321 CPU与进程管理与进程管理 l主要任务l对处理器的时间进行合理分配、对处理器的运行实施有效的管理 l程序的概念 l一个静态概念,代表有严格时间顺序的可执行指令序列,输入、处理和输出三部分组成指令序列特征 l并发性、共享性、虚拟性和不确
11、定性 l进程的概念 l程序的一次执行。系统进行资源调度和分配的独立单位 321 CPU与进程管理与进程管理(2) l进程与程序的主要区别l进程是动态的,而程序是静态的 l进程的特点 l动态性、并发性、独立性、异步性、结构性和制约性 l进程的状态 l就绪状态、运行状态和停止状态 321 CPU与进程管理与进程管理(3) l进程数据结构l进程描述信息l进程标识符(process ID),唯一,通常是一个整数;进程名,通常基于可执行文件名(不唯一);用户标识符(user ID);进程组关系(process group) l进程控制信息l当前状态;优先级(priority);代码执行入口地址;程序的外
12、存地址;运行统计信息(执行时间、页面调度);进程间同步和通信;阻塞原因 l资源占用信息l虚拟地址空间的现状、打开文件列表 lCPU现场保护结构 l寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针 321 CPU与进程管理与进程管理(4) l多个进程并发执行 l同步和互斥 l协调点 321 CPU与进程管理与进程管理(5) lWindows进程的建立 l函数CreateProcess l使一个程序运行l使用C的spawnlp函数l使用Win API 函数ShellExecutel 例3-4 编程启动两个子进程 l_spawnlp函数格式l“process.h” lint _spawnl
13、p( int mode, const char *cmdname, const char *arg0, const char *arg1, . const char *argn, NULL );l其中mode表示运行方式,lcmdname为进程名,larg0,argn为若干个进程参数,lNULL为终止符。l返回值:l-1 Errorl其他:进程返回码 例3-5编程显示当前系统所有进程lPROCESSENTRY32 结构体格式typedef struct tagPROCESSENTRY32 DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; /进
14、程编号 DWORD th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; char szExeFileMAX_PATH; /进程执行文件名 PROCESSENTRY32; 例3-5编程显示当前系统所有进程(2)lCreateToolhelp32Snapshot函数格式HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, /TH32CS_SNAPPROCES
15、S , TH32CS_SNAPTHREAD DWORD th32ProcessID /进程标识好,当前进程为0); 例3-5编程显示当前系统所有进程(3)lProcess32First函数格式BOOL WINAPI Process32First( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ); 例3-5编程显示当前系统所有进程(4)lProcess32Next函数格式BOOL WINAPI Process32Next( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ); 例3-5编程显示当前系统所有进程(5)lTermin
16、ateProcess函数格式BOOL TerminateProcess( HANDLE hProcess, / 进程句柄 UINT uExitCode / 进程退出码); 322 线程及其应用线程及其应用 l线程的概念 l指令序列 l程序运行的基本单位,不过它是作为CPU调度单位,它只拥有必不可少的资源 l线程的优点 l减小并发执行的时间和空间开销 l线程的状态l就绪、阻塞(等待)和执行 322 线程及其应用线程及其应用(2) l线程与进程的区别 l线程是比进程更小的单位,从运行角度来讲,同类线程的数据和代码区是共享的,这有利于线程的快速调度和切换,而进程之间的数据和代码区是独立的。 Wind
17、ows操作系统下的线程状态转操作系统下的线程状态转换换 例3-6编写一个动态显示时钟时间的线程 lCTime类 时间lCString类字符串lCreateThread 函数格式HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, / 线程安全属性 DWORD dwStackSize, / 初始线程栈大小 LPTHREAD_START_ROUTINE lpStartAddress, /线程函数 LPVOID lpParameter, / 参数 DWORD dwCreationFlags, / 标志 LPDWORD lpThr
18、eadId / 保存线程号);返回线程句柄 例3-6编写一个动态显示时钟时间的线程(2) lTerminateThread 函数格式BOOL TerminateThread( HANDLE hThread, / 线程句柄 DWORD dwExitCode / 退出码);成功返回非0 例3-6编写一个动态显示时钟时间的线程(3) l步骤l建立对话框程序l在对话框中拖入一个静态文本控件(时间标题)l一个编辑文本控件(时间)l四个按钮(启动、停止、确定、取消)l增加按钮消息函数l添加全局变量和函数代码DWORD ThreadID;/定义线程编号变量HANDLE hThread;/定义线程句柄变量void ThreadProc()/线程函数l添加按钮消息代码OnStart() OnStop() Thank You !By Yan-jun Wei