西南交大操作系统实验总报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.操作系统实验报告

指导教师:胡晓鹏

.

实验报告一

实验名称: Linux 操作系统下的C语言编程

实验目的: 1.认识 Linux 系统,熟悉Linux 操作系统的基本操作;

2.了解 vi 命令的基本用法,能够使用vi 命令对文件进行基础的操作与编辑;

3.能够在 Linux 环境下编写 C语言程序,生成 .out 文件,并成功执行;

4.体会 Linux 环境下编程与Windows 环境下编程的异同,加深对Linux 操作系统的理解。

实验内容:熟悉 Linux 环境,编写简单 C 语言程序。

实验结果:

.

实验结论:在 Linux 操作系统下的编程环境不同于Windows ,编译器进行命令编译。操

作环境简洁,大多以键盘操作。

实验报告二

实验名称:基于进程与线程的并发

实验目的:

1.了解进程与线程工作原理,掌握并发机制,学会编写简单的并发程序。

2.充分理解并掌握基于进程与线程的并发。

实验内容:在 Linux 环境进行基于进程与线程编写实验程序。

试验核心代码:

int main()

{ pthread_t tid[N];

pid_t pid;

pid=fork();

if(pid<0)

{ printf("fail to fork\n");

exit(1);

}

else if(pid==0)

{ printf("the child process:\n");

}

else

{sleep(10);

printf("the parent process:\n");

}

void *res;

int err[3];

err[0]=pthread_create(&tid[0],NULL,fn1,NULL);

err[1]=pthread_create(&tid[1],NULL,fn2,NULL);

err[2]=pthread_create(&tid[2],NULL,fn3,NULL);

int i;

for(i=0;i

if(err[i]= pthread_join(tid[i],&res)!=0) { printf("cannot join the thread %d\n",i);

exit(1);

}

}

return 0;

}

void *fn1(void *arg)

{

printf("the first thread is done\n");

return (void *)1;

}

void *fn2(void *arg)

{

printf("the second thread is done\n"); //sleep(1);

return (void *)1;

}

void *fn3(void *arg)

{

printf("the third thread is done\n");

//sleep(2); return

(void *)1;

}

实验结果:

实验结论:进程与线程之间的关系为线程离不开进程,线程在多任务系统的作用使计算机

高校工作,同时下创建进程是应尽量避免进程的出现。掌握线程pthread_join()中的阻塞原理。

实验报告三

实验题目:进程间的通信

实验目的:学习在 linux环境进程间的信息传递和接收,理解进程间的信号通信,并能编写简单代码实现进程间的通信。

实验代码:

#include

#include

#include

#include

#include

static int alarm_fired=0;

void ouch(int sig)

{ alarm_fired=1;

}

int main()

{ pid_t pid;

pid=fork();

if(pid==-1)

{ printf("fork failed\n");

exit(1);

}

else if(pid==0)

{ kill(getpid(),SIGALRM); exit(0);

}

signal(SIGALRM,ouch);

alarm(5);

pause();

.

if(alarm_fired==1)

printf("receive a signal %d\n",SIGALRM);

exit(0);

}

实验结果 :

实验结论:进程能进行信息通信,如果进程间有必要,能够实现很好的进程异步处理。

实验报告四

实验题目:进程间的通信 - 共享内存

实验目的:理解进程间共享内存机制,学会分析共享内存之间的通信方式并进行内存共享实践,编写简单程序实现内存简单共享。

实验代码 :

核心代码:

/**************************************************************/

//定义数据结构体

struct shared_use_st

{

int written_by_you;

char some_text[TEXT_SZ];

};

/* 写入 *********************************************************/

/* 创建共享内存 */

shmid=shmget((key_t)1234,sizeof(struct shared_use_st),0666|IPC_CREAT);

if(shmid==-1)

{

fprintf(stderr,"shmget failed\n");

exit(EXIT_FAILURE);

}

/* 映射共享内存*/

shared_memory=shmat(shmid,(void *)0,0);

if(shared_memory==(void *)-1)

{

fprintf(stderr,"shmat failed\n");

exit(EXIT_FAILURE);

}

相关文档
最新文档