操作系统实验:多进程与多线程模型实现

需积分: 0 0 下载量 71 浏览量 更新于2024-08-04 收藏 130KB DOCX 举报
"操作系统原理实验 实验六 多进程和多线程模型" 在这个名为"14348134吴侃lab61"的操作系统原理实验中,实验者吴侃探讨了多进程和多线程模型的概念,并在实验中进行了实际的实现。这个实验发生在2016年4月26日至2016年4月28日,针对2014级计算机系一班的学生进行。 实验的核心内容包括: 1. **多进程模型**:吴侃已经在之前的实验中实现了多进程模型,允许创建多达16个进程。在此过程中,他创建了进程控制块(PCB),用于存储每个进程的状态和寄存器值。在发生时钟中断时,系统会保存当前进程的状态并切换到另一个进程,通过iret指令恢复新的进程上下文。 2. **多线程模型**:实验的重点在于实现多线程。线程是进程中执行的独立单元,具有自己的程序计数器、栈和局部变量。吴侃通过`thread_create`函数创建线程,并使用`thread_join`函数来等待线程结束。线程模型的实现提升了并发执行的能力,使得同一进程内的不同任务可以并行运行。 3. **进程优先级**:在PCB中添加了优先级字段,通过计数器机制决定何时进行进程切换。当计数器的值超过进程的优先级,就会选择优先级更高的进程执行。 4. **修正的fork()函数**:在之前的实验中,吴侃已经实现了fork()函数,用于创建子进程。在这个实验中,他更正了fork()函数的返回值,确保其正确返回新创建的子进程ID。 5. **进程通信**:尽管已经在前一个实验中实现,但在这里再次提及。进程通信是进程间交换信息的方式,如使用管道、信号量或共享内存等机制。 实验是在特定环境下进行的,包括ArchLinux 4.5.1作为物理机操作系统,以及使用qemu-system-i386和Bochs作为虚拟机进行调试。开发工具包括Vim编辑器、NASM汇编器、g++编译器、GNU ld链接器、Make构建工具,以及Bochs x86 Emulator和VMware Workstation 12 Pro虚拟机软件。 实验的目标是理解和实践多进程和多线程模型,以及测试系统调用的可用性。通过这些实践,学生能够深入理解操作系统的调度、并发执行、进程间通信以及资源管理等核心概念。