太原理工大学《操作系统B》实验报告
- 格式:pdf
- 大小:714.63 KB
- 文档页数:27
《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。
在这个实验中,我们使用C++编写程序来创建和管理进程。
通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。
首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。
然后,使用等待函数来等待子进程的结束,并获取其返回值。
在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。
2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。
在这个实验中,我们研究了动态内存分配和释放的机制。
使用 C++中的 new 和 delete 操作符来分配和释放内存。
通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。
同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。
通过模拟内存访问过程,理解了页表的作用和地址转换的过程。
3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。
在这个实验中,我们对文件的创建、读写和删除进行了操作。
使用 C++的文件流操作来实现对文件的读写。
通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。
此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。
4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。
一、实验目的1. 理解进程的概念及其在操作系统中的作用。
2. 掌握进程的创建、调度、同步和通信机制。
3. 学习使用进程管理工具进行进程操作。
4. 提高对操作系统进程管理的理解和应用能力。
二、实验环境1. 操作系统:Windows 102. 软件环境:Visual Studio 20193. 实验工具:C++语言、进程管理工具(如Task Manager)三、实验内容1. 进程的创建与销毁2. 进程的调度策略3. 进程的同步与互斥4. 进程的通信机制四、实验步骤1. 进程的创建与销毁(1)创建进程使用C++语言编写一个简单的程序,创建一个新的进程。
程序如下:```cpp#include <iostream>#include <windows.h>int main() {// 创建进程STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi, sizeof(pi));// 创建进程if (!CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {std::cout << "创建进程失败" << std::endl;return 1;}std::cout << "进程创建成功" << std::endl;// 等待进程结束WaitForSingleObject(pi.hProcess, INFINITE);// 销毁进程CloseHandle(pi.hProcess);CloseHandle(pi.hThread);return 0;}```(2)销毁进程在上面的程序中,通过调用`WaitForSingleObject(pi.hProcess, INFINITE)`函数等待进程结束,然后使用`CloseHandle(pi.hProcess)`和`CloseHandle(pi.hThread)`函数销毁进程。
《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。
二、实验环境本次实验在计算机实验室进行,使用的操作系统为 Windows 10 和Linux(Ubuntu 发行版)。
实验所使用的计算机配置为:Intel Core i5 处理器,8GB 内存,500GB 硬盘。
三、实验内容1、进程管理在 Windows 系统中,通过任务管理器观察进程的状态、优先级、CPU 使用率等信息,并进行进程的结束和优先级调整操作。
在 Linux 系统中,使用命令行工具(如 ps、kill 等)实现相同的功能。
2、内存管理使用 Windows 系统的性能监视器和资源监视器,查看内存的使用情况,包括物理内存、虚拟内存的占用和分配情况。
在 Linux 系统中,通过命令(如 free、vmstat 等)获取类似的内存信息,并分析内存的使用效率。
3、文件系统管理在 Windows 系统中,对文件和文件夹进行创建、复制、移动、删除等操作,了解文件的属性设置和权限管理。
在 Linux 系统中,使用命令(如 mkdir、cp、mv、rm 等)完成相同的任务,并熟悉文件的所有者、所属组和权限设置。
4、设备管理在 Windows 系统中,查看设备管理器中的硬件设备信息,安装和卸载设备驱动程序。
在 Linux 系统中,使用命令(如 lspci、lsusb 等)查看硬件设备,并通过安装内核模块来支持特定设备。
四、实验步骤1、进程管理实验(1)打开 Windows 系统的任务管理器,切换到“进程”选项卡,可以看到当前系统中正在运行的进程列表。
(2)选择一个进程,右键点击可以查看其属性,包括进程 ID、CPU 使用率、内存使用情况等。
(3)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。
操作系统课程实验报告一、实验目的操作系统是计算机系统中最核心的软件之一,它负责管理计算机的硬件资源和软件资源,为用户提供一个方便、高效、安全的工作环境。
本实验的目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握操作系统的常用命令和操作方法,提高解决实际问题的能力。
二、实验环境操作系统:Windows 10开发工具:Visual Studio Code三、实验内容1、进程管理观察进程的创建、终止和状态转换。
使用任务管理器查看系统中的进程信息,包括进程 ID、CPU 使用率、内存占用等。
通过编程实现创建和终止进程的功能。
2、内存管理了解内存的分配和回收机制。
使用 Windows 系统提供的性能监视器查看内存的使用情况。
编程实现简单的内存分配和释放算法。
3、文件系统管理熟悉文件和目录的操作,如创建、删除、复制、移动等。
研究文件的属性,如文件名、文件大小、创建时间等。
通过编程实现文件的读写操作。
4、设备管理认识设备的驱动程序和设备管理策略。
查看系统中的设备信息,如磁盘驱动器、打印机等。
模拟设备的中断处理过程。
四、实验步骤1、进程管理实验打开任务管理器,观察当前系统中正在运行的进程。
可以看到进程的名称、进程 ID、CPU 使用率、内存占用等信息。
使用 C++语言编写一个简单的程序,创建一个新的进程。
在程序中,使用`CreateProcess`函数来创建新进程,并设置进程的属性和参数。
编写另一个程序,用于终止指定的进程。
通过获取进程 ID,然后使用`TerminateProcess`函数来终止进程。
2、内存管理实验打开 Windows 性能监视器,选择“内存”选项卡,可以查看内存的使用情况,包括物理内存、虚拟内存、页面文件等的使用量和使用率。
编写一个 C 程序,使用动态内存分配函数(如`malloc`和`free`)来分配和释放内存。
在程序中,不断分配和释放一定大小的内存块,观察内存的使用情况和性能变化。
中南大学《操作系统》实验报告姓名:孙福星专业班级:软件 1006班学号:3902100610完成日期:2011.11.22进程调度与内存管理一、实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。
当就续进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。
实验模拟实现处理机调度,以加深了解处理机调度的工作,并体会优先级和时间片轮转调度算法的具体实施方法。
帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。
二、实验要求1、可随机输入若干进程,并按优先权排序;2、从就绪队首选进程运行:优先权-1/要求运行时间-1要求运行时间=0时,撤销该进程3、重新排序,进行下轮调度。
4、可随时增加进程;5、规定道数,设置后备队列和挂起状态。
若内存中进程少于规定道数,可自动从后备队列调度一作业进入。
被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。
6、每次调度后,显示各进程状态。
7、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表;表目内容:起址、长度、状态(未分/空表目)8、结合以上实验,PCB增加为:{PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针}9、采用最先适应算法分配主存空间;10、进程完成后,回收主存,并与相邻空闲分区合并。
11、采用图形界面;三、实验内容选择一个调度算法,实现处理机调度。
1、设计一个按优先权调度算法实现处理机调度的程序;2、设计按时间片轮转实现处理机调度的程序。
3、主存储器空间的分配和回收。
在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。
四、实验原理该模拟系统采用java语言实现,要实现的功能有新建进程、进程调度、挂起进程、解挂进程、删除进程,道数和时间片大小可以由用户自己调整,有两种调度策略:按优先权调度和按时间片轮转调度。
每个进程可能有5种状态:新建(new)、就绪(ready)、运行(running)、阻塞(waiting)、挂起(suspend)。
本科实验报告课程名称:系统分析与设计实验项目:《系统分析与设计》实验实验地点:行逸楼B114专业班级:软件学号:学生姓名:指导教师:孟东霞2015年11月4日一、实验目的通过《系统分析与设计》实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规,为后继的学习打下良好的基础。
二、实验要求学生以个人为单位完成,自选题目,班题目不重复,使用UML进行系统分析与设计,并完成实验报告。
实验报告以纸质版(A4)在课程结束后二上提交(12)。
三、实验主要设备:台式或笔记本计算机四、实验容1 选题及项目背景美食评价系统背景:互联网时代下网络评论越来越随意,希望可以规化的进行。
2 定义美食评价系统为用户提供美食指导和参考。
任人都可注册为会员,个人资料包括姓名,性别,收藏的餐厅以及口味爱好。
会员可以收藏餐馆,浏览餐馆信息以及其他会员的评价。
餐厅必须向管理人员提出注册并审核通过后才能显示。
管理人员需到工商局和餐厅具体审查后才能通过。
会员可以提供来自餐馆提供的小票在次日来对用餐进行评价,一小票仅可提供一次评价。
餐馆则提供当日用餐小票记录给管理人员,用以核对用户提供的小票是否正确,然后系统则会审核评价有无不良信息,审核通过发布在餐厅信息上,并根据会员评价次数对给会员评星(1-5)。
个人信息和餐馆信息可被所有人访问,管理员信息只能管理员访问。
3 参考资料1.GB8567-88 《计算机软件产品文件编制规》2.GB/T11457-1995 《软件工程术语》3.GB 1526—89 信息处理--数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定4.GB8566-88 《软件开发规》4 系统分析与设计4.1需求分析4.1.1识别参与者用户,餐厅,管理人员4.1.2 对需求进行捕获与描述1用例名称:注册个人用户执行者:用户目的:完成一次注册个人用户的完整过程。
课程名称:嵌入式系统B 实验项目:嵌入式系统B 实验地点:明向实验楼308 专业班级:班学号:201 学生姓名:指导教师:2016 年11 月 6 日实验一嵌入式虚拟开发环境的搭建以及内核编译一、实验目的和要求1.熟悉ARM虚拟平台Skyeye的搭建2.熟悉交叉编译开发环境的搭建3.熟悉编译ARM-Linux4.熟悉在Skyeye平台上仿真ARM-Linux5.拓展:尝试移植其他版本的Linux,并且在Skyeye上运行二、实验内容和原理本实验是通过在PC机上搭建嵌入式开发环境虚拟环境(Skyeye),熟悉嵌入式交叉编译开发环境以及ARM-Linux系统移植的主要步骤。
实验虚拟平台SMDK2410CPU三星S3C2410(ARM920T),核心频率为62.400MHz,I-Cache 16K,D-Cache 16K内存32MB,内存频率62.400MHz实验软件介绍SkyEye是一个开源软件(OpenSource Software)项目,中文名字是“天目”,SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定“仿真”和“模拟”的意思基本相同);可在SkyEye上运行u CLinux以及u C/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。
SkyEye是一个指令级模拟器,可以模拟多种嵌入式开发板,可支持多种CPU 指令集,在SkyEye上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye调试操作系统和系统软件。
由于SkyEye的目标不是验证硬件逻辑,而是协助开发,调试和学习系统软件,所以在实现上SkyEye 与真实的硬件环境相比还是有一定差别的。
编译ARM-Linux内核,熟悉ARM-Linux的移植过程。
编译成功后,同学们需要将ARM内核在SkyEye的ARM硬件模拟环境运行测试。
“下一步”(11)选择虚拟硬盘容量,若硬盘空间较大可适当增加其值,然后点击“下一步”,根据提示完成操作,并返回虚拟机主界面(12)在虚拟机主界面点击如图所示的图标,编辑虚拟机设置(13)选择系统安装文件(ISO)的位置(14)在虚拟机主界面启动虚拟机六、实验结果与分析完成了安装 VMware Workstation,并汉化,在 VMware Workstation当中创建一个新的虚拟机,指定安装包的路径,安装定制 Redhat Enterprise Linux 5.0。
七、讨论、心得本实验通过对 Linux 操作系统的定制安装,建立对 Linux操作系统的初步认识,为后续实验的进行提供基础平台,掌握了 Linux操作系统的虚拟机定制安装,熟悉了Linux文件目录的结构,在实验中遇到了一些问题,但是通过网上搜索和同学帮助最终还是完成了。
对应的实验结果如下(截图):1.在运行了1.sh这个脚本之后,会执行脚本中的命令。
2.在运行之后,输入的内容会被2.sh脚本读入并以命令的形式输出struct sockaddr_in client_addr;bzero(&client_addr,sizeof(client_addr)); //把一段内存区的内容全部设置为0 client_addr.sin_family = AF_INET; //internet协议族client_addr.sin_addr.s_addr = htons(INADDR_ANY);//INADDR_ANY表示自动获取本机地址client_addr.sin_port = htons(0); //0表示让系统自动分配一个空闲端口 //创建用于internet的流协议(TCP)socket,用client_socket代表客户机socket int client_socket = socket(AF_INET,SOCK_STREAM,0);if( client_socket < 0){printf("Create Socket Failed!/n");exit(1);}//把客户机的socket和客户机的socket地址结构联系起来if( bind(client_socket,(struct sockaddr*)&client_addr,sizeof(client_addr))){printf("Client Bind Port Failed!/n");exit(1);}//设置一个socket地址结构server_addr,代表服务器的internet地址, 端口struct sockaddr_in server_addr;bzero(&server_addr,sizeof(server_addr));server_addr.sin_family = AF_INET;if(inet_aton(server_IP,&server_addr.sin_addr) == 0) //服务器的IP地址来自程序的参数{printf("Server IP Address Error!/n");exit(1);}server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);socklen_t server_addr_length = sizeof(server_addr);//向服务器发起连接,连接成功后client_socket代表了客户机和服务器的一个socket连接if(connect(client_socket,(struct sockaddr*)&server_addr, server_addr_length) < 0){printf("Can Not Connect To %s!/n",server_IP);exit(1);}char buffer[BUFFER_SIZE];bzero(buffer,BUFFER_SIZE);//从服务器接收数据到buffer中int length = recv(client_socket,buffer,BUFFER_SIZE,0);if(length < 0){printf("Recieve Data From Server %s Failed!/n", server_IP);exit(1);}printf("From Server %s :/t%s",server_IP,buffer);bzero(buffer,BUFFER_SIZE);sprintf(buffer,"Hello, World! From Client Thread NUM :/t%d/n",(int)thread_num);//向服务器发送buffer中的数据send(client_socket,buffer,BUFFER_SIZE,0);//关闭socketclose(client_socket);pthread_exit(NULL);}int main(int argc, char **argv){if (argc != 2){printf("Usage: ./%s ServerIPAddress/n",argv[0]);exit(1);}server_IP = argv[1];pthread_t child_thread;pthread_attr_t child_thread_attr;pthread_attr_init(&child_thread_attr);pthread_attr_setdetachstate(&child_thread_attr,PTHREAD_CREATE_DETACHED);int i=0;for(i=0; i<10000; i++){if( pthread_create(&child_thread,&child_thread_attr,talk_to_server,(void *)i) < 0 )printf("pthread_create Failed : %s/n",strerror(errno));}return 0;}2.线程并发服务器端#include <netinet/in.h> // for sockaddr_in#include <sys/types.h> // for socket#include <sys/socket.h> // for socket#include <stdio.h> // for printf#include <stdlib.h> // for exit#include <string.h> // for bzero#include <pthread.h>#include <sys/errno.h> // for errno#define HELLO_WORLD_SERVER_PORT 6666#define LENGTH_OF_LISTEN_QUEUE 20#define BUFFER_SIZE 1024#define THREAD_MAX 5void * talk_to_client(void *data){int new_server_socket = (int)data;char buffer[BUFFER_SIZE];bzero(buffer, BUFFER_SIZE);strcpy(buffer,"Hello,World! 从服务器来!");strcat(buffer,"/n"); //C语言字符串连接//发送buffer中的字符串到new_server_socket,实际是给客户端send(new_server_socket,buffer,BUFFER_SIZE,0);bzero(buffer,BUFFER_SIZE);//接收客户端发送来的信息到buffer中int length = recv(new_server_socket,buffer,BUFFER_SIZE,0);if (length < 0){printf("Server Recieve Data Failed!/n");exit(1);}printf("/nSocket Num: %d /t %s",new_server_socket, buffer);//关闭与客户端的连接close(new_server_socket);pthread_exit(NULL);}int main(int argc, char **argv){//设置一个socket地址结构server_addr,代表服务器internet地址, 端口struct sockaddr_in server_addr;bzero(&server_addr,sizeof(server_addr)); //把一段内存区的内容全部设置为0 server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htons(INADDR_ANY);server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT);//创建用于internet的流协议(TCP)socket,用server_socket代表服务器socket int server_socket = socket(AF_INET,SOCK_STREAM,0);if( server_socket < 0){printf("Create Socket Failed!");exit(1);}//把socket和socket地址结构联系起来if( bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr))) {printf("Server Bind Port : %d Failed!", HELLO_WORLD_SERVER_PORT);exit(1);}//server_socket用于监听if ( listen(server_socket, LENGTH_OF_LISTEN_QUEUE) ){printf("Server Listen Failed!");exit(1);}int i;while(1) //服务器端要一直运行{//定义客户端的socket地址结构client_addrstruct sockaddr_in client_addr;socklen_t length = sizeof(client_addr);//接受一个到server_socket代表的socket的一个连接//如果没有连接请求,就等待到有连接请求--这是accept函数的特性//accept函数返回一个新的socket,这个socket(new_server_socket)用于同连接到的客户的通信//new_server_socket代表了服务器和客户端之间的一个通信通道//accept函数把连接到的客户端信息填写到客户端的socket地址结构client_addr中int new_server_socket = accept(server_socket,(struct sockaddr*)&client_addr,&length);if ( new_server_socket < 0){printf("Server Accept Failed!/n");break;}pthread_t child_thread;pthread_attr_t child_thread_attr;pthread_attr_init(&child_thread_attr);pthread_attr_setdetachstate(&child_thread_attr,PTHREAD_CREATE_DET ACHED);if( pthread_create(&child_thread,&child_thread_attr,talk_to_clien t, (void *)new_server_socket) < 0 )printf("pthread_create Failed : %s/n",strerror(errno));}//关闭监听用的socketclose(server_socket);return 0;}上图就是一个通过多线程来完成数据的传输,由于写的是死循环,所以一直继续运行下去,Ctrl+C可退出服务1.搭建Samba服务器(1)配置Samba服务 netstat(查看网络状态) ping(测试网络连通性) ifconfig(查看或配置网卡信息) setup(系统重启后网卡才能生效)(2)安装Samba软件包(在挂载的光盘的Sever目录中)先安装samba-common-3.0.25b-0.e15.4.i386.rpm# rpm - ivh samba-common-3.0.25b-0.e15.4.i386.rpm再安装samba-client-3.0.25b-0.e15.4.i386.rpm#rpm -ivh samba-client-3.0.25b-0.e15.4.i386.rpm最后安装samba-3.0.25b-0.e15.4.i386.rpm# rpm -ivh samba-3.0.25b-0.e15.4.i386.rpm(3)添加Samba用户创建一个admin系统用户# useradd admin # passwd admin修改samba用户密码# smbpasswd - a admin重启samba服务器# service smb restart2.搭建TFTP服务器(1)安装TFTP服务器# rpm –ivh xinetd-2.3.14-10.el5.i386.rpm# rpm -ivh tftp-server-0.42-3.1.i386.rpm# rpm –ivh tftp-0.42-3.1.i386.rpm(2)建立tftp的主工作目录# mkdir /tftpboot(3)修改tftp配置文件# vi /etc/xinetd.d/tftpservice tftp {disable socket_type protocol wait server user server server_args ……} 修改tftp配置文件= no = dgram = udp = yes = root = /usr/sbin/in.tftpd = -s / tftpboot // 此时即可启动tftp服务器(4)重启TFTP服务器# /etc/init.d/xinetd restart3.安装NFS服务器# rpm -ivh nfs-utils-1.0.9-24.e15.i386.rpm配置NFS# vi /etc/exports 加入允许被其它计算机访问的目录和访问权限启动NFS服务器:# /etc/init.d/nfs start使用mount 命令挂载NFS 服务器上的共享目录# mount -t nfs servername:/shared_dir /localdir4.搭建Linux交叉开发环境(1)安装交叉编译工具# tar xvzf arm-linux-xxxx.tgz -C /(2)安装完交叉编译器后,为了方便使用需要修改环境变量:# export PATH=/usr/local/arm//xxxx/bin:$PATH(3)在Windows/linux中编写源程序(4)在Linux中编译程序:# arm-linux-gcc hello.c –o hello1.连接好开发板2.在虚拟机中写好程序,利用arm-linux交叉编译器gcc编译生成可3.通过TFTP将可执行文件复制到开发板上4.在开发板中运行可执行文件。
《操作系统》课程实验报告一、实验目的本次《操作系统》课程实验的主要目的是通过实际操作和观察,深入理解操作系统的工作原理、进程管理、内存管理、文件系统等核心概念,并掌握相关的操作技能和分析方法。
二、实验环境1、操作系统:Windows 10 专业版2、开发工具:Visual Studio Code3、编程语言:C/C++三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新进程,并观察进程的创建过程和资源分配情况。
同时,实现进程的正常终止和异常终止,并分析其对系统的影响。
2、进程同步与互斥使用信号量、互斥锁等机制实现进程之间的同步与互斥。
通过模拟多个进程对共享资源的访问,观察并解决可能出现的竞争条件和死锁问题。
(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法和最坏适应算法。
观察在不同的内存请求序列下,内存的分配和回收情况,并分析算法的性能和优缺点。
2、虚拟内存管理研究虚拟内存的工作原理,通过设置页面大小、页表结构等参数,观察页面的换入换出过程,以及对系统性能的影响。
(三)文件系统实验1、文件操作实现文件的创建、打开、读取、写入、关闭等基本操作。
观察文件在磁盘上的存储方式和文件系统的目录结构。
2、文件系统性能优化研究文件系统的缓存机制、磁盘调度算法等,通过对大量文件的读写操作,评估不同优化策略对文件系统性能的提升效果。
四、实验步骤(一)进程管理实验步骤1、进程创建与终止(1)使用 C/C++语言编写程序,调用系统函数创建新进程。
(2)在子进程中执行特定的任务,父进程等待子进程结束,并获取子进程的返回值。
(3)通过设置异常情况,模拟子进程的异常终止,观察父进程的处理方式。
2、进程同步与互斥(1)定义共享资源和相关的信号量或互斥锁。
(2)创建多个进程,模拟对共享资源的并发访问。
(3)在访问共享资源的关键代码段使用同步机制,确保进程之间的正确协作。
(4)观察并分析在不同的并发情况下,系统的运行结果和资源竞争情况。