操作系统报告资料

合集下载

操作系统实验实验报告

操作系统实验实验报告

操作系统实验实验报告一、实验目的操作系统是计算机系统中最为关键的核心软件,它管理着计算机的硬件资源和软件资源,为用户提供了一个方便、高效、稳定的工作环境。

本次操作系统实验的目的在于通过实际操作和实践,深入理解操作系统的基本原理和核心概念,掌握操作系统的基本功能和操作方法,提高对操作系统的认识和应用能力。

二、实验环境本次实验使用的操作系统为 Windows 10 专业版,开发工具为Visual Studio 2019,编程语言为 C 和 C++。

实验硬件环境为一台配备Intel Core i7 处理器、16GB 内存、512GB SSD 硬盘的个人计算机。

三、实验内容(一)进程管理实验1、进程创建与终止通过编程实现创建新的进程,并在完成任务后终止进程。

在实验中,我们使用了 Windows API 函数 CreateProcess 和 TerminateProcess 来完成进程的创建和终止操作。

通过观察进程的创建和终止过程,深入理解了进程的生命周期和状态转换。

2、进程同步与互斥为了实现进程之间的同步与互斥,我们使用了信号量、互斥量等同步对象。

通过编写多线程程序,模拟了多个进程对共享资源的访问,实现了对共享资源的互斥访问和同步操作。

在实验中,我们深刻体会到了进程同步与互斥的重要性,以及不正确的同步操作可能导致的死锁等问题。

(二)内存管理实验1、内存分配与释放使用 Windows API 函数 VirtualAlloc 和 VirtualFree 进行内存的分配和释放操作。

通过实验,了解了内存分配的不同方式(如堆分配、栈分配等)以及内存释放的时机和方法,掌握了内存管理的基本原理和操作技巧。

2、内存分页与分段通过编程模拟内存的分页和分段管理机制,了解了内存分页和分段的基本原理和实现方法。

在实验中,我们实现了简单的内存分页和分段算法,对内存的地址转换和页面置换等过程有了更深入的理解。

(三)文件系统实验1、文件操作使用 Windows API 函数 CreateFile、ReadFile、WriteFile 等进行文件的创建、读取和写入操作。

《操作系统》实验报告

《操作系统》实验报告

《操作系统》实验报告一、实验目的操作系统是计算机系统中最为关键的组成部分之一,本次实验的主要目的是深入理解操作系统的基本原理和功能,通过实际操作和观察,熟悉操作系统的核心概念,包括进程管理、内存管理、文件系统和设备管理等,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在以下环境中进行:操作系统:Windows 10开发工具:Visual Studio 2019编程语言:C++三、实验内容1、进程管理实验进程是操作系统中最基本的执行单元。

在这个实验中,我们使用C++编写程序来创建和管理进程。

通过观察进程的创建、执行和结束过程,理解进程的状态转换和资源分配。

首先,我们编写了一个简单的程序,创建了多个子进程,并通过进程标识符(PID)来跟踪它们的运行状态。

然后,使用等待函数来等待子进程的结束,并获取其返回值。

在实验过程中,我们发现进程的创建和销毁需要消耗一定的系统资源,而且进程之间的同步和通信需要谨慎处理,以避免出现死锁和竞争条件等问题。

2、内存管理实验内存管理是操作系统的核心功能之一,它直接影响系统的性能和稳定性。

在这个实验中,我们研究了动态内存分配和释放的机制。

使用 C++中的 new 和 delete 操作符来分配和释放内存。

通过观察内存使用情况和内存泄漏检测工具,了解了内存分配的效率和可能出现的内存泄漏问题。

同时,我们还探讨了内存分页和分段的概念,以及虚拟内存的工作原理。

通过模拟内存访问过程,理解了页表的作用和地址转换的过程。

3、文件系统实验文件系统是操作系统用于管理文件和目录的机制。

在这个实验中,我们对文件的创建、读写和删除进行了操作。

使用 C++的文件流操作来实现对文件的读写。

通过创建不同类型的文件(文本文件和二进制文件),并对其进行读写操作,熟悉了文件的打开模式和读写方式。

此外,还研究了文件的权限设置和目录的管理,了解了如何保护文件的安全性和组织文件的结构。

4、设备管理实验设备管理是操作系统与外部设备进行交互的桥梁。

操作系统实验报告模板

操作系统实验报告模板

操作系统实验报告模板一、实验目的本次操作系统实验的主要目的是通过实际操作和观察,深入理解操作系统的核心概念和功能,包括进程管理、内存管理、文件系统、设备管理等方面。

同时,培养学生的动手能力、问题解决能力和团队合作精神,提高对操作系统原理的掌握程度和实际应用能力。

二、实验环境1、操作系统:_____(具体操作系统名称及版本)2、开发工具:_____(如编译器、调试器等)3、硬件环境:_____(处理器型号、内存大小等)三、实验内容(一)进程管理实验1、进程创建与终止使用系统调用创建多个进程,并观察进程的创建过程和资源分配情况。

实现进程的正常终止和异常终止,观察终止时的系统行为。

2、进程调度研究不同的进程调度算法,如先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)等。

通过编程模拟实现这些调度算法,并比较它们的性能。

3、进程同步与互斥利用信号量、互斥锁等机制实现进程之间的同步与互斥。

编写多进程程序,模拟生产者消费者问题、读者写者问题等经典同步场景。

(二)内存管理实验1、内存分配与回收实现不同的内存分配算法,如首次适应算法、最佳适应算法、最坏适应算法等。

观察内存分配和回收的过程,分析算法的优缺点。

2、虚拟内存了解虚拟内存的概念和实现原理。

通过设置页表、进行页面置换等操作,模拟虚拟内存的管理过程。

(三)文件系统实验1、文件操作实现文件的创建、打开、读写、关闭等基本操作。

研究文件的属性(如权限、大小、创建时间等)的设置和获取。

2、目录管理创建、删除目录,遍历目录结构。

实现文件和目录的重命名、移动等操作。

(四)设备管理实验1、设备驱动程序了解设备驱动程序的结构和工作原理。

编写简单的设备驱动程序,实现对特定设备的控制和数据传输。

2、设备分配与回收研究设备分配的策略,如独占式分配、共享式分配等。

实现设备的分配和回收过程,观察系统的资源利用情况。

四、实验步骤(一)进程管理实验步骤1、进程创建与终止编写程序,使用系统调用创建指定数量的进程。

《操作系统》课内实验报告

《操作系统》课内实验报告

《操作系统》课内实验报告一、实验目的本次《操作系统》课内实验的主要目的是通过实际操作和观察,深入理解操作系统的基本原理和功能,掌握常见操作系统命令的使用,提高对操作系统的实际应用能力和问题解决能力。

二、实验环境本次实验在计算机实验室进行,使用的操作系统为 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)通过“结束任务”按钮可以结束指定的进程,但要注意不要随意结束系统关键进程,以免导致系统不稳定。

操作系统报告三

操作系统报告三

操作系统报告三第一点:操作系统的发展历程操作系统作为计算机系统的核心与基石,其发展历程见证了计算机技术的变迁与进步。

从最早的批处理系统到如今的智能终端操作系统,操作系统在功能、性能、用户体验等方面都取得了翻天覆地的变化。

1.1 批处理系统批处理系统是操作系统发展的起点,诞生于20世纪50年代。

这类系统能够自动处理大量相似的任务,大大提高了计算机的利用率。

代表性的批处理系统有IBM的IMS和DOS等。

1.2 交互式操作系统随着计算机技术的普及,20世纪60年代,交互式操作系统应运而生。

这类操作系统允许用户与计算机进行实时的交互,代表性的系统有IBM的OS/360和Univac的Univac 1100等。

1.3 个人计算机操作系统20世纪80年代,个人计算机的普及催生了个人计算机操作系统的发展。

这一时期的代表产品有微软的Windows系列、苹果的Mac OS和开源的Linux等。

1.4 移动终端操作系统进入21世纪,随着智能手机、平板电脑等移动终端的兴起,移动终端操作系统成为操作系统领域的新宠。

苹果的iOS、谷歌的Android和微软的Windows Phone等都是这一时期的代表性产品。

1.5 云计算与分布式操作系统近年来,云计算技术的兴起使得分布式操作系统再次成为研究的热点。

这类操作系统能够实现大规模分布式计算,提供高效、可靠的服务。

代表性的系统有谷歌的Chrome OS、微软的Azure和开源的Hadoop等。

第二点:操作系统的核心功能无论操作系统如何发展,其核心功能都围绕着以下几个方面展开。

2.1 资源管理操作系统的主要任务之一是管理计算机硬件和软件资源,包括处理器管理、存储器管理、设备管理和文件系统管理等。

通过有效的资源管理,操作系统能够提高计算机系统的性能和利用率。

2.2 进程管理进程是操作系统进行资源分配和调度的基本单位。

操作系统需要负责进程的创建、终止、同步和通信等工作,以确保多个进程能够协调、高效地运行。

操作系统常规检查报告

操作系统常规检查报告

操作系统常规检查报告摘要本文档提供了一次操作系统常规检查的详细报告,包括系统配置、性能评估、安全性检查以及潜在的改进建议。

该检查旨在确保操作系统的稳定性和安全性,以及提高系统整体性能。

系统配置检查硬件配置- CPU:*************************,12核- 内存:32GB DDR4- 硬盘:1TB SSD- 显卡:NVIDIA GeForce RTX 2070软件配置- 操作系统:Windows 10 Pro,版本1909- 更新:已安装最新补丁和更新- 驱动程序:所有硬件驱动都已更新到最新版本性能评估系统资源使用情况- CPU使用率:平均值为30%,峰值为70%- 内存使用率:平均值为50%,峰值为90%- 磁盘使用率:系统盘为60%,数据盘为80% 系统响应时间- 启动时间:平均为40秒- 应用程序响应时间:平均为2秒安全性检查防火墙设置- 防火墙状态:开启- 防火墙规则:已配置适当的安全规则防病毒软件- 病毒库更新:已更新至最新- 扫描状态:最近一次完整扫描为2天前系统账户权限- 管理员账户:密码复杂且定期更换- 普通用户账户:按需分配权限潜在改进建议1. 升级系统至Windows 11 Pro以利用最新技术和功能。

2. 增加内存至64GB以提高系统在高负载情况下的性能。

3. 定期进行磁盘碎片整理以提高磁盘性能。

4. 加强系统安全策略,例如定期进行安全审计和更新安全规则。

结论根据本次操作系统常规检查的结果,系统整体表现良好,但仍有一些潜在的改进空间。

建议根据实际情况逐步实施上述建议,以提高系统性能和安全性。

操作系统报告

操作系统报告

操作系统报告操作系统是计算机硬件和软件之间的一种中介程序,它可以管理和控制计算机系统的各种资源,同时也提供给用户一个友好的界面来使用计算机。

本报告将介绍操作系统的定义、功能、类型以及它对计算机系统的重要性。

操作系统的定义:操作系统是一种软件,它主要负责管理和协调计算机系统的硬件和软件资源,为用户提供一个方便、高效、安全的工作环境。

操作系统的功能:操作系统有多种功能,包括以下几点:1.管理和分配计算机的硬件资源,如处理器、内存、硬盘等;2.提供文件管理,对文件进行创建、读取、写入、删除等操作;3.提供进程管理,控制程序的执行和调度;4.提供用户接口,使用户可以通过图形界面或命令行来操作计算机;5.提供网络管理,控制和管理计算机与其他计算机之间的通信。

操作系统的类型:根据不同的应用场景和需求,操作系统可以分为以下几类:1.批处理操作系统,主要用于大型机上对批处理任务进行自动处理;2.分时操作系统,主要用于小型机和服务器上,允许多个用户同时共享计算机系统资源;3.实时操作系统,用于对时间要求较严格的系统,如飞行控制、工业控制等;4.网络操作系统,用于管理和控制分布式计算机系统。

操作系统的重要性:操作系统是计算机系统中最基础和核心的软件之一,它对计算机的正常运行和资源的有效管理起着重要作用。

操作系统可以提高计算机的效率和性能,保护计算机系统的安全和稳定,方便用户的使用和管理。

它是计算机系统中各个组件之间的桥梁,起着协调和管理的作用,可以实现计算机系统的自动化和智能化。

总结:操作系统是一种重要的中介程序,它管理和控制计算机系统的各种硬件和软件资源,为用户提供方便、高效、安全的使用环境。

不同类型的操作系统适用于不同的应用场景,但它们的目标都是提高计算机系统的性能和效率。

操作系统对计算机系统的重要性不言而喻,它是计算机系统中不可或缺的核心组件。

最后,我们应该学习和理解操作系统的原理和机制,以更好地使用计算机系统。

操作系统报告

操作系统报告

操作系统报告操作系统是计算机科学中至关重要的一个概念,其作用是管理计算机硬件资源和应用程序之间的交互。

本篇文章将探讨操作系统的基本功能、分类、发展历程以及未来趋势。

一、基本功能操作系统的基本功能是管理计算机资源,并为应用程序提供接口。

它负责处理计算机资源的分配和协调,包括CPU、内存、磁盘、网络等。

二、分类目前常见的操作系统包括Windows、Linux、macOS等。

传统意义上,操作系统可以分为批处理系统、分时系统和实时系统。

1. 批处理系统:批处理系统最早出现在计算机发展的早期。

它的主要任务是处理大量的离线任务,例如数据处理和测试。

2. 分时系统:随着计算机技术的进步,分时系统逐渐兴起。

该系统可以同时为多个用户提供服务,以时间分片的方式使用计算机。

3. 实时系统:实时系统是针对实时任务而设计的。

这些任务必须在规定时间内完成,例如航天器的导航和控制。

三、发展历程操作系统始于20世纪60年代,当时计算机只有机器语言。

在1964年,IBM公司推出了第一台操作系统OS/360,标志着操作系统的诞生。

1970年代是操作系统的关键期,Unix和DOS系统先后出现。

Unix成为目前使用最广泛的操作系统之一,而DOS系统对个人计算机(PC)的发展起到了巨大的促进作用。

1980年代开始,图形用户界面(GUI)开始流行,同时操作系统也开始分化。

Windows、macOS和Linux等操作系统逐渐崭露头角。

二十一世纪初,云计算和移动设备的出现带来了新的挑战和机遇。

操作系统的发展必须适应这一新的趋势,为用户提供更加便捷和高效的服务。

四、未来趋势未来的操作系统将借鉴人工智能和大数据技术,不断提高自身的智能化水平。

同时,随着云计算和物联网技术的不断成熟,更多的设备将依赖操作系统提供服务。

因此,操作系统的安全、可靠和稳定性也将成为未来的重点发展方向。

结论操作系统是计算机领域不可或缺的重要组成部分。

通过对其基本功能、分类、发展历程以及未来趋势的分析,我们可以更全面地了解操作系统的重要性和发展方向。

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

操作系统实验报告样本1 操作系统实验报告内容(1)基本信息:完成人姓名、学号、报告日期(2)实验内容(3)实验目的(4)实验题目(5)设计思路和流程图(6)主要数据结构及其说明(7)源程序并附上注释(8)程序运行时的初值和运行结果(9)实验体会:实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验的体会及收获、对做好今后实验提出建设性建议等。

实验报告可以书面或电子文档形式提交。

2操作系统实验报告样本一、实验内容(1)进程的创建编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。

让每一个进程在屏幕上显示一个字符:父进程显示字符“b”;子进程分别显示字符“c”和字符“a”。

试观察纪录屏幕上的显示结果,并分析原因。

(2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。

如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

(3)①编写一段程序,使其现实进程的软中断通信。

要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child Processll is Killed by Parent!Child Processl2 is Killed by Parent!父进程等待两个子进程终止后,输出如下的信息后终止Parent Process is Killed!②在上面的程序中增加语句signal (SIGNAL, SIG-IGN) 和signal (SIGQUIT, SIG-IGN), 观察执行结果,并分析原因。

(4)进程的管道通信编制一段程序,实现进程的管理通信。

使用系统调用pipe()建立一条管道线;两个子进程P1和P2分别向管道中写一句话:Child 1 is sending a message!Child 2 is sending a message!而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。

二、实验目的实验2(1)加深对进程概念的理解,明确进程和程序的区别(2)进一步认识并发执行的实质(3)分析进程竞争资源现象,学习解决进程互斥的方法。

(4)了解Linux系统中进程通信的基本原理。

实验3Linux系统的进程通信机构 (IPC) 允许在任意进程间大批量地交换数据。

本实验的目的是了解和熟悉Linux支持的消息通讯机制及信息量机制。

三、实验题目本实验有六个题目。

第一题:进程的创建系统调用fork()创建两个子进程,当程序运行时,系统中有一个父进程一个子进程和一个孙子进程在活动,使父进程显示‘b',子进程显示‘c',孙子进程显示‘a',来观察进程的执行与并发。

开创建子进a输子进程是否创创建子进子进程是否创b输c输出结束第二题:进程的控制块,grandchild块和son块,parent将上面程序的输出由单个字符改为一句话,使输出在此基础上再设置另一个程序:在该程序中使用系统调用lockf()来给每个程序加锁,lockf(1,1,0)锁定标准输出设备,lockf(1,0,0)解锁标准输出设备,在lockf(1,1,0)与lockf(1,0,0)中间的for循环输出不会被中断,实现进程之间的互斥。

观察运行结果,从运行结果中可以看出加锁的程序中每个块的输出过程不会被打断,而没有加锁的程序中各块输出被其他块给打断了。

未加锁:加锁:开创建子进parent输子进程是否创创建子进子进程是否创son输grandchild输出结束第三题:软中断通信()让父进程捕捉键盘上来的中断signal在调用,()创建两个子进程fork 系统调用信号,当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,输出信息后终止。

Kill(p1,16);Kill(p1,17);分别向p1和p2发出软中断信号16与17,信号由signal(16,stop)与signal(17,stop)捕捉然后输出相应的信息,终止进程。

其中signal(SIGINT,SIG_IGN)能够忽略键信号。

第四题:进程的管道通信使用系统调用pipe(fd);来创建一个管道。

并且对管道加锁,从而形成独占,避免冲突产生。

而父进程用之前的wait()函数等待两个子进程执行后再执行。

两个子进程p1和p2分别向管道各写一句话,父进程先接收子进程p1发来的消息,然后再接收子进程p2 发来的消息。

.第五题:消息的创建,发送和接收使用系统调用msgget( ), megsnd( ), msgrev( )及msgctl()编制一长度为1K的消息发送和接收的程序,为了便于操作和观察结果,用一个程序为“引子”,先后fork( )两个子进程,SERVER和CLIENT,进行通信。

SERVER端建立一个Key为75的消息队列,等待其他进程发来的消息。

当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER 。

SERVER 每接收到一个消息后显示一句“(server)received”。

CLIENT端使用Key为75的消息队列,先后发送类型从10到1的消息,然后退出。

最后的一个消息,既是 SERVER端需要的结束信号。

CLIENT每发送一条消息后显示一句“(client)sent”。

父进程在均退出后结束。

CLIENT和SERVER.第六题:共享存储区的创建,附接和断接用一个程序为“引子”,先后fork( )两个子进程,SERVER 和CLIENT,进行通信。

SERVER端建立一个KEY为75的共享区,并将第一个字节置为-1.作为数据空的标志.等待其他进程发来的消息.当该字节的值发生变化时,表示收到了该消息,进行处理.然后再次把它的值设为-1.如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER.SERVER 每接收到一次数据后显示”(server)received”. CLIENT端建立一个为75的共享区,当共享取得第一个字节为-1时, Server端空闲,可发送请求.CLIENT 随即填入9到0.期间等待Server端再次空闲.进行完这些操作后, CLIENT 退出. CLIENT每发送一次数据后显示”(client)sent”. 父进程在SERVER和CLIENT均退出.后结束四打印的源程序及附上的注释和运行结果1.进程的创建:代码:#include<stdio.h>main(){int p1,p2;if(p1=fork())//获得子进程号,在父进程内。

putchar('b');else//在子进程内{if(p2=fork())//子进程创建成功putchar('c');else putchar('a');//孙子进程执行}}运行结果:分析:从进程执行并发来看,输出abc的排列都是有可能的。

原因:fork()创建进程所需的时间虽然可能多于输出一个字符的时间,但各个进程的时间片的获得却不是一定是顺序的,所以输出abc的排列都是有可能的。

2.进程的控制未加锁代码:#include<stdio.h>main(){int p1,p2,i;if(p1=fork()){for(i=0;i<100;i++)printf(parent %d\n,i);wait(0);//保证在子进程终止前,父进程不会终止exit(0);}else{if(p2=fork()){for(i=0;i<100;i++)printf(son %d\n,i);wait(0);//保证在子进程终止前,父进程不会终止exit(0);}else{for(i=0;i<100;i++)printf(grandchild %d\n,i);exit(0);}}}运行结果:分析:由于函数printf()输出的字符串之间不会被中断,因此,每个字符串内部的字符顺序输出时不变。

但是 , 由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。

这与打印单字符的结果相同。

加锁后代码:#include<stdio.h>#include<unistd.h>main(){int p1,p2,i;if(p1=fork()){lockf(1,1,0);for(i=0;i<100;i++)printf(child %d\n,i);lockf(1,0,0);}else{if(p2=fork()){lockf(1,1,0);for(i=0;i<100;i++) printf(son %d\n,i);lockf(1,0,0);}else{lockf(1,1,0);for(i=0;i<100;i++) printf(daughter %d\n,i); lockf(1,0,0);}}}运行结果:解锁标准输出lockf(1,0,0)锁定标准输出设备,lockf(1,1,0)分析:因为上述程序执行时,设备,在lockf(1,1,0)与lockf(1,0,0)中间的for循环输出不会被中断,加锁与不加锁效果不相同。

3.软中断通信代码:#include<stdio.h>#include<signal.h>#include<unistd.h>void waiting(),stop();int wait_mark;main(){int p1,p2;if(p1=fork()) /*创建子进程p1*/{if(p2=fork()) /*创建子进程p2*/{wait_mark=1;signal(SIGINT,stop); /*接收到^c信号,转stop*/ waiting();kill(p1,16); /*向p1发软中断信号16*/ kill(p2,17); /*向p2发软中断信号17*/wait(0); /*同步*/ wait(0);printf(parent process is killed!\n);exit(0);}else{wait_mark=1;signal(SIGINT,stop);waiting();lockf(1,1,0);printf(child process2 is killed by parent!\n);lockf(1,0,0);exit(0);}}else{wait_mark=1;signal(SIGINT,stop);waiting();lockf(1,1,0);printf(child process1 is killed by parent!\n);lockf(1,0,0);exit(0);}}void waiting(){while (wait_mark!=0);}void stop(){wait_mark=0;}分析:不做任何操作等待五秒钟父进程回在子进程县推出后退出,并打印退出的顺序;或者点击ctrl+C后程序退出并打印退出的顺序。

相关文档
最新文档