下载此文档

操作系统实验二实验报告.docx


文档分类:高等教育 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
操作系统实验报告
——实验二:线程和管道通信实验
一、实验目的
通过 Linux 系统中线程和管道通信机制的实验,加深对于线程控制和管道通信概念的理解,观察和体验并发进(线)程间的通信和协作的效果,练****利用无名管道进行进(线)程间通信的编程和调试技术。
二、实验说明
1) 与线程创建、执行有关的系统调用说明
线程是在共享内存中并发执行的多道执行路径,它们共享一个进程的资源,如进程程序段、文件描述符和信号等,但有各自的执行路径和堆栈。线程的创建无需像进程那样重新申请系统资源,线程在上下文切换时也无需像进程那样更换内存映像。多线程的并发执行即避免了多进程并发的上下文切换的开销又可以提高并发处理的效率。
pthread 库中最基本的调用。
系统调用语法:
#include <>
Int pthread_create(pthread_t *thread,pthread_attr_t *attr,
void *(*start_routine)(void *) Void *arg);
pthread_create 函数创建一个新的线程。pthread_create 在 thread 中保存新线程的标识符。Attr 决定了线程应用那种线程属性。使用默认可给定参数 NULL; (*start_routine) 是一个指向新线程中要执行的函数的指针 arg 是新线程函数携带的参数。 Pthread_create 执行成功会返回0并在 thread 中保存线程标识符。执行失败则返回一个非0的出错代码
系统调用语法:
#include <>
void pthread_exit(void *retval);
pthread_exit 函数使用函数 pthread_cleanup_push 调用任何用于该线程的清除处理函数,然后中止当前进程的执行,返回 retval。 Retval 可以由父线程或其他线程通过 pthread_join 来检索。一个线程也可以简单地通过从其初始化函数返回来终止。
系统调用语法:
#include <>
int pthread_join(pthread_t th, void **thread_return);
int pthread_detach(pthread_t th);
函数 pthread_join 用于挂起当前线程,直到 th 指定的线程终止运行为止。
2) 管道通信机制
管道 pipe 是进程间通信最基本的一种机制。在内存中建立的管道称为无名管道, 在磁盘上建立的管道称为有名管道。无名管道随着进程的撤消而消失,有名管道则可以长久保存,shell 命令符| 建立的就是无名管道,而 shell 命令 mkfifo 建立的是有名管道。两个进程可以通过管道一个在管道一端向管道发送其输出,,即它的数据流是单方向的. 因此使用一个管道一般的规则是读管道数据的进程关闭管道写入端,而写管道进程关闭其读出端。管道既可以采用同步方式工作也可以采用异步方式工作。
三、实验内容

操作系统实验二实验报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息