西南交大操作系统实验总报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); }