本篇文档是北京工业大学计算机学院提供的操作系统上机实验指导书,旨在帮助学生掌握在Linux环境中进行操作系统相关实验的基本步骤和技能。该指南详细地覆盖了多个关键主题,从实验环境的配置和报告要求开始,逐步深入到实际操作技巧。
首先,实验环境说明强调了实验应在Linux操作系统环境下进行,建议使用GCC编译器,并且推荐在计算中心机房或个人计算机上通过Linux虚拟机(如SunVirtualBox和Fedora13发行版)进行实践,以获得真实的操作体验。对于不具备机房条件的学生,Unix-Center.Net提供了免费的在线Unix环境供他们远程访问。
实验内容包括以下几个部分:
1. **实验一:UNIX/Linux入门** - 学生将熟悉Linux的基本界面和命令行操作,了解操作系统的基本结构和工作原理。
2. **实验二:进程创建与管道通信** - 这部分涉及C/C++编程,通过`fork()`函数创建子进程,以及使用`pipe()`函数实现进程间的管道通信。
3. **实验三:进程启动另一个程序的执行** - 学习如何使用`execve()`系统调用执行新的程序,以及库函数`execl`, `execlp`, `execle`, `execv`, 和 `execvp` 的区别。
4. **实验四:线程管理** - 包括`pthread_create()`创建线程,`pthread_join()`等待线程结束,以及`pthread_exit()`结束线程,同时介绍了互斥锁和信号量的概念。
5. **实验五:线程间的互斥与同步** - 学习如何使用互斥锁(Pthread互斥锁)和POSIX信号量来协调线程间的并发操作,确保数据的一致性。
6. **实验六:进程间通信(IPC)** - 通过消息队列`msgget()`, `msgsnd()`, 和 `msgrcv()`,以及共享内存`shmget()`, `shmat()`, 和 `shmdt()`来增强进程间的通信。
7. **实验七:信号处理** - 探索信号的发送与接收,理解`kill()`和`signal()`这两个核心系统调用的作用。
8. **附录:系统调用和库函数的ManPages** - 提供了一些关键系统调用和库函数的详细手册,便于查阅和学习。
这个实验指导书不仅教授理论知识,还注重实践操作,通过一系列精心设计的实验,帮助学生巩固对操作系统原理的理解,提升他们的编程能力和系统级编程实践经验。无论是初学者还是进阶者,都能从中受益匪浅。