Linux操作系统分析实验指导书(2015).doc

Linux操作系统分析实验指导书(2015).doc

ID:59254213

大小:128.50 KB

页数:32页

时间:2020-09-08

Linux操作系统分析实验指导书(2015).doc_第1页
Linux操作系统分析实验指导书(2015).doc_第2页
Linux操作系统分析实验指导书(2015).doc_第3页
Linux操作系统分析实验指导书(2015).doc_第4页
Linux操作系统分析实验指导书(2015).doc_第5页
资源描述:

《Linux操作系统分析实验指导书(2015).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux操作系统分析实验指导书计算机科学与教育软件学院计算机科学系实验一进程控制与进程互斥:Linux系统下多进程与多线程编程-----------------------2实验二进程通信:Linux系统的进程间通信----管道通信----------------------------------9实验三内存分配与回收:Linux系统下利用链表实现动态内存分配(也可以做课本中的内存管理实例)-----------------------------------------------------------

2、--------------11实验四文件操作算法:Linux系统下文件管理模拟实验--------------------------------18实验五设备驱动:Linux系统下的字符设备驱动程序编程----------------------------22实验一进程控制与进程互斥:Linux系统下多进程与多线程编程一、实验目的1、理解Linux下进程的结构;2、理解Linux下产生新进程的方法(系统调用—fork函数);3、掌握如何启动另一程序的执行;4、理解Linux下线程的结构;5、理解Linux

3、下产生新线程的方法;6、理解Linux系统下多进程与多线程的区别二、实验内容1、利用fork函数创建新进程,并根据fork函数的返回值,判断自己是处于父进程还是子进程中;2、在新创建的子进程中,使用exec类的函数启动另一程序的执行;分析多进程时系统的运行状态和输出结果;3、利用最常用的三个函数pthread_create,pthread_join和pthread_exit编写了一个最简单的多线程程序。理解多线程的运行和输出情况;4、利用信号量机制控制多线程的运行顺序,并实现多线程中数据的共享;5、分析Linu

4、x系统下多进程与多线程中的区别。三、实验指导(一)Linux系统下多进程编程:1、理解Linux下进程的结构Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,一般的CPU,如I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。   堆栈段存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。而数据段则存放程序的全局变量,常数以及动态数据分配的数据空间(

5、比如用malloc之类的函数取得的空间)。系统如果同时运行数个相同的程序,它们之间就不能使用同一个堆栈段和数据段。2、如何使用fork函数在Linux下产生新进程的系统调用就是fork函数,这个函数名是英文中“分叉”的意思。一个进程在运行中,如果使用了fork,就产生了另一个进程,于是进程就“分叉”了,所以这个名字取得很形象。那么调用这个fork函数时发生了什么呢?一个程序调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段

6、和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了。而如果两个进程要共享什么数据的话,就要使用另一套函数(shmget,shmat,shmdt等)来操作。现在,已经是两个进程了,对于父进程,fork函数返回了子程序的进程号,而对于子程序,fork函数则返回零,这样,对于程序,只要判断fork函数的返回值,就知道自己是处于父进程还是子进程中。   但是

7、,如果一个大程序在运行中,它的数据段和堆栈都很大,调用一次fork就要复制一次,那么fork的系统开销不是很大吗?其实,一般CPU都是以“页”为单位分配空间的,像INTEL的CPU,其一页在通常情况下是4K字节大小,而无论是数据段还是堆栈段都是由许多“页”构成的,fork函数复制这两个段,只是“逻辑”上的,并非“物理”上的,也就是说,实际执行fork时,物理空间上两个进程的数据段和堆栈段都还是共享着的,当有一个进程写了某个数据时,利用写时复制技术,该进程的数据被写入另一数据段,这时两个进程之间的数据才有了区别,

8、系统就将有区别的“页”从物理上也分开。系统在空间上的开销就可以达到最小。3、如何启动另一程序的执行在Linux中要使用exec类的函数来启动另一程序的执行,exec类的函数不止一个,但大致相同,在Linux中,它们分别是:execl,execlp,execle,execv,execve和execvp。一个进程一旦调用exec类函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。