兰州大学操作系统实验四答案

兰州大学操作系统实验四答案
兰州大学操作系统实验四答案

实验四

实验名称:

认识进程

实验要求:

1.列出你的系统中当前运行的所有进程,并解释bash进程的各项信息的含义(不包括RSS

和SHR)。

bash进程的各项信息的含义:

user: 用户名PID: 进程ID %CPU: 占有CPU时间的百分比

%MEM:占有主存的大小百分比VSZ:进程占用虚拟内存大小TTY:控制终端的编号STAT:当前的进程状态TIME:使用的计算机时间COMMAND:命令名称

2.分别从至少三个虚拟终端登录,以树状形式列出你的系统中当前运行的所有进程及其

PID。找出你当前运行进程的所有祖先进程,并说明其各自的作用。

分析Linux系统中的进程的家族关系。

init进程,它是内核启动的第一个用户级进程。init有许多很重要的任务,比如像启动getty(用于用户登录)、实现运行级别、以及处理孤立进程用pstree命令就看到进程之间的关系了,所有进程都是由最开始的init创建的,父

进程逐个创建子进程。

大致是这样的(括号里是pid)

$pstree -p

init(1)-+-acpid(4555)

|-atd(18593)

|-auditd(4256)-+-audispd(4258)---{audispd}(4261)

| `-{auditd}(4257)

|-automount(4536)-+-{automount}(4537)

| |-{automount}(4538) | |-{automount}(4541) | `-{automount}(4544) ....(中间省略)....

|-xfs(4692,xfs)

tty1

tty2

tty3

3.试验有几种方法可以列出系统中的所有运行进程?

Ps -A -a显示所有进程 a 显示终端中包括其他用户的所有进程

U f 树状方式auf axfaxu综合表示等等

4.执行下列命令和操作:

$sleep180

^Z

$jobs

$sleep 240&

$sleep 300&

$sleep 330&

$sleep 630&

$jobs

$fg%4

^C

$bg%1

$kill %5

解释命令的作用和执行结果。

sleep 可以用来将目前动作延迟一段时间ctrl+c键结束进程

后台运行(jobs 查看)用fg %1将其放到前台。ctrl+z键可停止bg %1将其恢

复。

5.分别以root和普通用户身份运行一个进程,使用nice、renice和top设置或者改变其优

先级,并验证是否成功。

普通账户与root身份修改优先级,普通用户只能将优先级降低,root可以升高优先级。

6.利用/proc文件系统,选择一个进程,如-bash(代表是登陆shell,,平时的是交互shell),

列出并解释/proc/$PID/cmdline, /proc/$PID/stat, /proc/$PID/status文件的内容。

cmdline进程的命令行参数:bash^@

stat2619 (bash) S 2609 2619 2619 34817 3022 4202496 3431 30361 2 5 7 70 20 213 20

0 1 0 24775 8949760 894 4294967295 134512640 135409864 3215445744 3215444520

3077907492 0 65536 3686404 1266761467 3238388677 0 0 17 3 0 0 12 0 0

pid=2619进程(包括轻量级进程,即线程)号

comm=bash应用程序或命令的名字

task_state=s任务的状态,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead

ppid=2609父进程ID

pgid=2619线程组号

sid=2619该任务所在的会话组ID

tty_nr=34817(pts/3) 该任务的tty终端的设备号,INT(34817/256)=主设备号,(34817-主设备号)=次设备号

tty_pgrp=3022终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。

task->flags=4202496进程标志位,

min_flt=3431该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数

cmin_flt=30361累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目

maj_flt=2该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数

cmaj_flt=5累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目

utime=7该任务在用户态运行的时间

stime=70该任务在核心态运行的时间

cutime=20累计的该任务的所有的waited-for进程曾经在用户态运行的时间

cstime=213累计的该任务的所有的waited-for进程曾经在核心态运行的时间

priority=20任务的动态优先级

nice=0 任务的静态优先级

num_threads=1该任务所在的线程组里线程的个数

it_real_value=0 由于计时间隔导致的下一个SIGALRM 发送进程的时延

start_time=24775该任务启动的时间

vsize=8949760(page)该任务的虚拟地址空间大小

rss=894(page) 该任务当前驻留物理地址空间的大小

rlim=4294967295(bytes)该任务能驻留物理地址空间的最大值

start_code=134512640 该任务在虚拟地址空间的代码段的起始地址

end_code=135409864该任务在虚拟地址空间的代码段的结束地址

start_stack=3215444520该任务在虚拟地址空间的栈的结束地址

kstkesp=0 esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.

kstkeip=3077907指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.

pendingsig=0 待处理信号的位图,记录发送给进程的普通信号

block_sig=0 阻塞信号的位图

sigign=0 忽略的信号的位图

sigcatch=082985 被俘获的信号的位图

wchan=0 如果该进程是睡眠状态,该值给出调度的调用点

nswap被swapped的页数,当前没用

cnswap所有子进程被swapped的页数的和,当前没用

exit_signal=17 该进程结束时,向父进程所发送的信号

task_cpu(task)=0 运行在哪个CPU上

task_rt_priority=0 实时进程的相对优先级别

task_policy=0 进程的调度策略,0=非实时进程,1=FIFO实时进程;2=RR实时进程status文件中的内容:

进程名name 进程状态state 线程组内第一个线程id tgid 进程id pid父进程ppid跟踪调试进程id Tracerpid

进程对应的程序的uid进程对应程序的gid

FDSize进程使用文件句柄大小Groups 组信息

下面是进程所使用的虚拟内存以及实际内存、信号机制方面的信息:VmPeak:8740 kB

VmSize:8740 kB

VmLck: 0 kB

Vmpin: 0 Kb

VmHWM:3576 kB

VmRSS: 3576 kB

VmData: 1804 kB

VmStk: 136 kB

VmExe: 880 kB

VmLib: 2112kB

VmPTE: 32 kB

VmSwap: 0 kB

Threads: 1

SignQ: o/15987

SigPnd: 0000000000000000

SigBlk: 0000000000010000

SigIgn: 8000000000384004

SigCgt: 000000004b813efb

CapInh: 0000000000000000

CapPrm: 0000000000000000

CapEff: 0000000000000000

CapBnd: fffffffffffffffff

Cpus_allowed: ff

…………………………..

……………………………

认识和体会:

本实验的认识和体会:

1.优先级问题:普通账户与root身份修改优先级,普通用户只能将优先级降低,root

可以升高优先级。

2.了解了程序的运行和终止以及在前台、后台运行。

3.除此之外通过老师的讲解的引导,还知道了电脑开机时首先运行init进程,作为

祖先进程。进而产生子进程。

4.就是几乎所有的数据实体都被抽象成一个统一的接口--文件来看待。设备也不例

外。Linux中存在着一类特殊的伪文件系统,用于使用与文件接口统一的操作来

完成各种功能。

5.此外,还通过查阅,知道了进程与线程的关系。计算机内部的软硬件资源的分配

与线程无关,线程只能共享它所属进程的资源。并需要的得到许可才行。

操作系统课程设计答案

// tjty.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #define Bsize 3 #define Psize 20 struct pageInfor { int content;//页面号 int timer;//被访问标记 }; class PRA { public: PRA(void); int findSpace(void);//查找是否有空闲内存 int findExist(int curpage);//查找内存中是否有该页面 int findReplace(void);//查找应予置换的页面 void display(void);//显示 void FIFO(void);//FIFO算法 void LRU(void);//LRU算法 void Optimal(void);//OPTIMAL算法 void BlockClear(void);//BLOCK恢复 pageInfor * block;//物理块 pageInfor * page;//页面号串 private: }; PRA::PRA(void) { int QString[20]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1}; block = new pageInfor[Bsize]; for(int i=0; i

block[i].timer = 0; } page = new pageInfor[Psize]; for(i=0; i= block[pos].timer) pos = i;//找到应予置换页面,返回BLOCK中位置return pos; } void PRA::display(void) {

操作系统实验四存储管理

师学院计算机系 实验报告 (2014—2015学年第二学期) 课程名称操作系统 实验名称实验四存储管理 专业计算机科学与技术(非师)年级2012级 学号B2012102147 姓名秋指导教师远帆 实验日期2015-05-20

图1 word运行情况 “存使用”列显示了该应用程序的一个实例正在使用的存数量。 5) 启动应用程序的另一个实例并观察它的存需求。 请描述使用第二个实例占用的存与使用第一个实例时的存对比情况: 第二个实例占用存22772K,比第一个实例占用的存大很多 4:未分页合并存。 估算未分页合并存大小的最简单法是使用“任务管理器”。未分页合并存的估计值显示在“任务管理器”的“性能”选项卡的“核心存”部分。 总数(K) :________220___________ 分页数:_____________________ 未分页(K) :_________34__________ 图2核心存

C 简单基本NTFS 30G 良好(系 统) D 简单基本NTFS 90G 良好 E 简单基本NTFS 90G 良好 F 简单基本NTFS 88 G 良好 图3磁盘情况 6:计算分页文件的大小。 要想更改分页文件的位置或大小配置参数,可按以下步骤进行: 1) 右键单击桌面上的“我的电脑”图标并选定“属性”。 2) 在“高级”选项卡上单击“性能选项”按钮。 3) 单击对话框中的“虚拟存”区域中的“更改”按钮。 请记录: 所选驱动器的页面文件大小: 驱动器:______________F_____________________ 可用空间:___________9825_____________________ MB 初始大小(MB) :_____ 2048______________________ 最大值(MB) :________4092_____________________ 所有驱动器页面文件大小的总数: 允的最小值:________16____________________ MB

兰大入学教育课程作业A-C

一单选题 1. 兰州大学网络教育学院成立于 1999年 2000年 2001年 本题分值: 5.0 用户得分: 5.0 用户解答: 2000年 标准答案: 2000年 2. 网络协议确定了计算机网络传递和管理信息的规范,其中TCP/IP属于 超文本传输协议 传输控制协议 邮件传输协议 本题分值: 5.0 用户得分: 5.0 用户解答:传输控制协议 标准答案:传输控制协议 3. 被录取的学生须持录取通知书、身份证和学历证明书,在规定日期内到哪里办理入学手 续 学习中心 报名点 网络学院 本题分值: 5.0 用户得分: 5.0 用户解答:学习中心 标准答案:学习中心 4. 曾参加兰州大学网络教育并取得专科或本科毕业证书者,继续修读兰州大学网络教育时

可免修部分学分 可免考部分学分 可免考公共课 本题分值: 5.0 用户得分: 5.0 用户解答:可免修部分学分 标准答案:可免修部分学分 5. 远程教育作为一种独立的教育形态,起源于 19世纪50年代 19世纪40年代 19世纪70年代 本题分值: 5.0 用户得分: 5.0 用户解答: 19世纪40年代 标准答案: 19世纪40年代 6. 网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于超文本传输协议 传输控制协议 邮件传输协议 本题分值: 5.0 用户得分: 0.0 用户解答:传输控制协议 标准答案:超文本传输协议 7. 学院的教学管理平台有许多功能,学生学习主要使用()功能 教师平台 管理平台

学生平台 本题分值: 5.0 用户得分: 5.0 用户解答:学生平台 标准答案:学生平台 8. 我国批准网络教育试点的时间是 1998年 2000年 1999年 本题分值: 5.0 用户得分: 5.0 用户解答: 1999年 标准答案: 1999年 二多选题 1. 兰州大学网络教育已经建成那些系统,为学生提供服务 管理系统 服务系统 学习系统 人事系统 本题分值: 5.0 用户得分: 5.0 用户解答:管理系统 | 服务系统 | 学习系统 标准答案:管理系统 | 服务系统 | 学习系统 2. 现代远程教育的特征有 突破了学习空间的局限 突破了学习时间的局限

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

操作系统实验报告一

重庆大学 学生实验报告 实验课程名称操作系统原理 开课实验室DS1501 学院软件学院年级2013专业班软件工程2 班学生姓名胡其友学号20131802 开课时间2015至2016学年第一学期 总成绩 教师签名洪明坚 软件学院制

《操作系统原理》实验报告 开课实验室:年月日学院软件学院年级、专业、班2013级软件工 程2班 姓名胡其友成绩 课程名称操作系统原理 实验项目 名称 指导教师洪明坚 教师 评语教师签名:洪明坚年月日 1.实验目的: ?进入实验环境 –双击expenv/setvars.bat ?检出(checkout)EPOS的源代码 –svn checkout https://www.360docs.net/doc/ba732716.html,/svn/epos ?编译及运行 –cd epos/app –make run ?清除所有的临时文件 –make clean ?调试 –make debug ?在“Bochs Enhanced Debugger”中,输入“quit”退出调试 –调试指令,请看附录A 2.实验内容: ?编写系统调用“time_t time(time_t *loc)” –功能描述 ?返回从格林尼治时间1970年1月1日午夜起所经过的秒数。如果指针loc 非NULL,则返回值也被填到loc所指向的内存位置 –数据类型time_t其实就是long ?typedef long time_t; 3.实验步骤: ?Kernel space –K1、在machdep.c中,编写系统调用的实现函数“time_t sys_time()”,计算用户秒数。需要用到 ?变量g_startup_time,它记录了EPOS启动时,距离格林尼治时间1970年1午夜的秒数 ?变量g_timer_ticks

兰州大学英语1套答案

1. Children need many things, but ___they need attention. in all for all above all after all 本题分值: 4.0 用户得分: 0.0 用户解答: in all 标准答案: above all 2. Many people believe we are heading for environmental disaster ___ we radically change way we live. but although unless lest 本题分值: 4.0 用户得分: 0.0 用户解答: but 标准答案: unless 3. He glanced over at her, ______ that though she was tiny, she seemed very well put together. noting noted to note having noted 本题分值: 4.0 用户得分: 4.0

用户解答: noting 标准答案: noting 4. Even though he has lived in China for many years, Mark still can not _______ himself to the Chinese customs. adopt adjust adapt accept 本题分值: 4.0 用户得分: 0.0 用户解答: adopt 标准答案: adapt 5. Sometimes you may even find several children share one patched paper, which has traveled from one hand to ____ driven by the curious nature. the others some others another others 本题分值: 4.0 用户得分: 0.0 用户解答: the others 标准答案: another 6. ____ hard I tried, I couldn’t catch up with him. No matter how much Although No matter how

操作系统原理实验-系统内存使用统计5

上海电力学院 计算机操作系统原理 实验报告 题目:动态链接库的建立与调用 院系:计算机科学与技术学院 专业年级:信息安全2010级 学生姓名:李鑫学号:20103277 同组姓名:无 2012年11 月28 日上海电力学院

实验报告 课程名称计算机操作系统原理实验项目线程的同步 姓名李鑫学号20103277 班级2010251班专业信息安全 同组人姓名无指导教师姓名徐曼实验日期2012/11/28 实验目的和要求: (l)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 实验原理与内容 使用Windows系统提供的函数和数据结构显示系统存储空间的使用情况,当内存和虚拟存储空间变化时,观察系统显示变化情况。 实验平台与要求 能正确使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS了解系统内存和虚拟空间使用情况,会使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟存储空间。 操作系统:Windows 2000或Windows XP 实验平台:Visual Studio C++ 6.0 实验步骤与记录 1、启动安装好的Visual C++ 6.0。 2、选择File->New,新建Win32 Console Application程序, 由于内存分配、释放及系统存储 空间使用情况均是Microsoft Windows操作系统的系统调用,因此选择An application that support MFC。单击确定按钮,完成本次创建。 3、创建一个支持MFC的工程,单击完成。

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验

计算机科学与技术学院实验报告 实验题目:实验四、进程同步实验学号: 日期:20120409 班级:计基地12 姓名: 实验目的: 加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥 操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解 Linux 系统中 IPC 进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。 实验内容: 抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。请用以上介绍的 IPC 同步机制编程,实现该问题要求的功能。 硬件环境: 处理器:Intel? Core?i3-2350M CPU @ 2.30GHz ×4 图形:Intel? Sandybridge Mobile x86/MMX/SSE2 内存:4G 操作系统:32位 磁盘:20.1 GB 软件环境: ubuntu13.04 实验步骤: (1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。

(2)新建ipc.c文件,编写producer和consumer 共用的IPC的具体相应函数。 (3)新建Producer文件,首先定义producer 的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。 (4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有消费进程在运行而其他消费者请求时,相应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。 运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。

兰州大学网络教育英语作业及答案

兰州大学网络教育英语作业 1. You can take ______ seat you like. no matter what no matter which what whichever 本题分值: 4.0 用户得分: 4.0 用户解答: whichever 标准答案: whichever 2. Our talk was completely ________out by the roar of the machines. As a result, we had to communicate with gestures. decreased reduced smashed drowned 本题分值: 4.0 用户得分: 4.0 用户解答: drowned 标准答案: drowned 3. Meeting my uncle after all these years was an unforgettable moment, ___ I will always treasure. that one it what 本题分值: 4.0

用户得分: 4.0 用户解答: one 标准答案: one 4. Snap judgments, if ________, have usually been considered signs of immaturity or lack of common sense. taking seriously taken seriously take seriously to be taken seriously 本题分值: 4.0 用户得分: 4.0 用户解答: taken seriously 标准答案: taken seriously 5. He was punished ________ he should make the same mistake again. unless if provided lest 本题分值: 4.0 用户得分: 4.0 用户解答: lest 标准答案: lest 6. Have you ever noticed that Jack always ________ a picture of quiet self-worth? impresses focuses projects communicates

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

操作系统实验报告4

《操作系统》实验报告 实验序号: 4 实验项目名称:进程控制

Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜ 修改后: #include #include int main(VOID) { STARTUPINFO si; PROCESS_INFORMA TION pi; ZeroMemory(&si,sizeof(si)); si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, "c:\\WINDOWS\\system32\\mspaint.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) { fprintf(stderr,"Creat Process Failed"); return -1; } WaitForSingleObject(pi.hProcess,INFINITE); printf("child Complete"); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } 在“命令提示符”窗口运行CL命令产生可执行程序4-1.exe:C:\ >CL 4-1.cpp

实验任务:写出程序的运行结果。 4.正在运行的进程 (2)、编程二下面给出了一个使用进程和操作系统版本信息应用程序(文件名为4-5.cpp)。它利用进程信息查询的API函数GetProcessVersion()与GetVersionEx()的共同作用。确定运行进程的操作系统版本号。阅读该程序并完成实验任务。 #include #include

操作系统原理实验四

实验4 进程控制 1、实验目的 (1)通过对WindowsXP进行编程,来熟悉和了解系统。 (2)通过分析程序,来了解进程的创建、终止。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 (3)·CreateProcess()调用:创建一个进程。 (4)·ExitProcess()调用:终止一个进程。 4、实验编程 (1)编程一利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下: # include < stdio.h > # include < windows.h > int main(VOID) ﹛STARTUPINFO si; PROCESS INFORMA TION pi; ZeroMemory(&si,sizeof(si)); Si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, “c: \ WINDOWS\system32\ mspaint.exe”, NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) ﹛fprintf(stderr,”Creat Process Failed”); return—1; ﹜ WaitForSingleObject(pi.hProcess,INFINITE); Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜

操作系统实验四

青岛理工大学课程实验报告

算法描述及实验步骤 功能:共享存储区的附接。从逻辑上将一个共享存储区附接到进程的虚拟地址空间上。用于建立调用进程与由标识符shmid指定的共享内存对象之间的连接。 系统调用格式:virtaddr=shmat(shmid,addr,flag) 该函数使用头文件如下: #include #include #include (8)shmdt( ) 功能:用于断开调用进程与共享内存对象之间的连接,成功时返回0,失败返回-1。 系统调用格式: int shmdt(shmaddr) char *shmaddr;/*采用shmat函数的返回值*/ (9)shmctl( ) 功能:共享存储区的控制,对其状态信息进行读取和修改。用于对已创建的共享内存对象进行查询、设置、删除等操作。 系统调用格式:shmctl(shmid,cmd,buf) 该函数使用头文件如下: #include #include #include 2、步骤: (1)定义进程变量(2)定义两个字符数组 (3)创建管道(4)如果进程创建不成功,则空循环(5)如果子进程创建成功,pid为进程号(6)锁定管道 (7)给Outpipe赋值(8)向管道写入数据 (9)等待读进程读出数据(10)解除管道的锁定 (11)结束进程等待子进程结束(12)从管道中读出数据 (13)显示读出的数据(14)父进程结束 创建jincheng.c 插入文字

调 试 过 程 及 实 验 结 果 运行: 运行后: 总 结 (对实验结果进行分析,问题回答,实验心得体会及改进意见) 虽然对pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、 shmdt()、shmctl()的功能和实现过程有所了解,但是运用还是不熟练,过去没 见过,所以运行了一个简单的程序。 利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信,加深了对 其了解。 (1)管道通信机制,同步的实现过程:当写进程把一定数量的数据写入pipe, 便去睡眠等待,直到读进程取走数据后,再把它唤醒。当读进程读一空pipe 时,也应睡眠等待,直到写进程将数据写入管道后,才将之唤醒,从而实现进 程的同步。 管道通信的特点:A管道是半双工的,数据只能向一个方向流动;需要双方通 信时,需要建立起两个管道;B. 只能用于父子进程或者兄弟进程之间(具有亲 缘关系的进程);C.单独构成一种独立的文件系统:管道对于管道两端的进程而

操作系统实验报告_实验五

实验五:管道通信 实验内容: 1.阅读以下程序: #include #include #include main() { int filedes[2]; char buffer[80]; if(pipe(filedes)<0) //建立管道,filedes[0]为管道里的读取端,filedes[1]则为管道的写入端 //成功则返回零,否则返回-1,错误原因存于errno中 err_quit(“pipe error”); if(fork()>0){ char s[ ] = “hello!\n”; close(filedes[0]); //关闭filedes[0]文件 write(filedes[1],s,sizeof(s)); //s所指的内存写入到filedes[1]文件内 close(filedes[1]); //关闭filedes[0]文件 }else{ close(filedes[1]); read(filedes[0],buffer,80); //把filedes[0]文件传送80个字节到buffer缓冲区内 printf(“%s”,buffer); close(filedes[0]); } } 编译并运行程序,分析程序执行过程和结果,注释程序主要语句。

2.阅读以下程序: #include #include #include main() { char buffer[80]; int fd; unlink(FIFO); //删除FIFO文件 mkfifo(FIFO,0666); //FIFO是管道名,0666是权限 if(fork()>0){ char s[ ] = “hello!\n”;

操作系统实验4

操作系统 实验报告 学号: 姓名: 提交日期: 成绩: 内蒙古大学计算机学院

实验四进程管理 一、实验目的 1. 加深对进程概念的理解,明确进程和程序的区别; 2. 进一步认识并发执行的实质; 3. 分析进程争用资源的现象,学习解决进程互斥的方法; 二、实验内容 1. 进程的创建; 2. 进程的控制; 3. 进程并发执行结果分析; 三、主要实验步骤 1. 编制一段程序,使用系统调用fork()创建两个子进程,在此程序运行时,系 统中就有一个父进程和两个子进程在活动。让每一个进程在屏幕上显示一个字符:父进程显示字符a,子进程分别显示字符b和子符c。试观察、记录并分析屏幕上进程调度的情况。若在程序中使用系统调用nice()来改变各进程的优先级,会出现什么现象? (1)使用vi创建forktest.c源文件 (2)编写程序

(3)保存程序并退出

(4)使用gcc编译源文件生成可执行文件forktest (5)执行文件,输入./forktest回车 (6)结果分析

2. 编制一段程序要求父进程创建子进程,在子进程中分别用exec函数与system 函数执行“dir -a”。并分析其区别。 3. 分析以下程序框架,修改并上机运行后回答下列问题。 #include #include #include V oid main() {① pid=fork(); ② if(pid==0){ ........ sleep(3); .......... printf("ddd\n"); exit(0); } else { ............ sleep(7); ........... printf("aaa\n"); wait(0); printf("bbb\n"); } printf("ccc\n"); }

入学教育秋第一套作业标准答案

入学教育秋第一套作业答案

————————————————————————————————作者:————————————————————————————————日期:

:1 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 我国首批批准网络教育的试点高校有几所(p004) A、4所 B、3所 C、5所 学员答案:A 题号:2 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 远程教育专家德斯蒙德·基更将远程教育培训机构分为几种类型(p006) A、5种 B、3种 C、4种 学员答案:C 题号:3 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 远程教育发源于(p001) A、英国 B、美国 C、中国 学员答案:A 题号:4 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 我国批准网络教育试点的时间是(p004) A、1998年 B、2000年 C、1999年 学员答案:C 题号:5 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5 内容: 远程教育作为一种独立的教育形态,起源于(p001) A、19世纪50年代 B、19世纪40年代 C、19世纪70年代

学员答案:B 题号:6 题型:多选题(请在复选框中打勾,在以下几个选项中选择正确答案,答案可以是多个)本题分数:5 内容: 网络教育教学资源主要包括哪几类(P023,教学资源) A、文字教材 B、音像教材 C、网络课程 学员答案:ABC 题号:7 题型:是非题本题分数:5 内容: 现代远程教育是利用互联网来学习的一种新型教育方式(P045) 1、错 2、对 学员答案:2 题号:8 题型:是非题本题分数:5 内容: 学生可在所学课程的[学习情况查询]模块下查询论坛发帖、作业完成等课程学习情况。(P051) 1、错 2、对 学员答案:2 题号:9 题型:是非题本题分数:5 内容: 论文写作前,要仔细查看论文写作办法和要求,并下载开题报告模板,按照模板要求写作(P059) 1、错 2、对 学员答案:2 题号:10 题型:是非题本题分数:5 内容: 学院的每套网上作业可以多次提交(P054) 1、错 2、对

操作系统原理实验五

实验五线程的同步 1、实验目的 (1)进一步掌握Windows系统环境下线程的创建与撤销。 (2)熟悉Windows系统提供的线程同步API。 (3)使用Windows系统提供的线程同步API解决实际问题。 2、实验准备知识:相关API函数介绍 ①等待对象 等待对象(wait functions)函数包括等待一个对象(WaitForSingleObject ())和等待多个对象(WaitForMultipleObject())两个API函数。 1)等待一个对象 WaitForSingleObject()用于等待一个对象。它等待的对象可以为以下对象 之一。 ·Change ontification:变化通知。 ·Console input: 控制台输入。 ·Event:事件。 ·Job:作业。 ·Mutex:互斥信号量。 ·Process:进程。 ·Semaphore:计数信号量。 ·Thread:线程。 ·Waitable timer:定时器。 原型: DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 等待时间 ); 参数说明: (1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访问。 (2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒,如表2-1所示。 返回值: 如果成功返回,其返回值说明是何种事件导致函数返回。

Static HANDLE hHandlel = NULL; DWORD dRes; dRes = WaitForSingleObject(hHandlel,10); //等待对象的句柄为hHandlel,等待时间为10ms 2)等待对个对象 WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与 WaitForSingleObject()相同。 原型: DWORD WaitForMultipleObjects( DWORD nCount, //句柄数组中的句柄数 CONST HANDLE * lpHandles, //指向对象句柄数组的指针 BOOL fWaitAll, //等待类型 DWORD dwMilliseconds //等待时间 ); 参数说明: (1)nCount:由指针 * lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUM WAIT OBJECTS。 (2)* lpHandles:指向对象句柄数组的指针。 (3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个 对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数 返回。 (4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒。 返回值:、 如果成功返回,其返回值说明是何种事件导致函数返回。 各参数的描述如表2-2所示。

操作系统实验四存储管理

宁德师范学院计算机系 实验报告 (2014—2015学年第二学期) 课程名称操作系统 实验名称实验四存储管理 专业计算机科学与技术(非师)年级2012级 学号B2012102147 姓名王秋指导教师王远帆 实验日期2015-05-20

2) 右键单击任务栏以启动“任务管理器”。 3) 在“Windows任务管理器”对话框中选定“进程”选项卡。 4) 向下滚动在系统上运行的进程列表,查找想要监视的应用程序。 请在表4-3中记录: 表4-3 实验记录 映像名称PID CPU CPU时间内存使用 WINWORD.EXE 5160 00 0:00:10 22772k 图1 word运行情况 “内存使用”列显示了该应用程序的一个实例正在使用的内存数量。 5) 启动应用程序的另一个实例并观察它的内存需求。 请描述使用第二个实例占用的内存与使用第一个实例时的内存对比情况: 第二个实例占用内存22772K,比第一个实例占用的内存大很多 4:未分页合并内存。 估算未分页合并内存大小的最简单方法是使用“任务管理器”。未分页合并内存的估计值显示在“任务管理器”的“性能”选项卡的“核心内存”部分。 总数(K) :________220___________ 分页数:__________167___________ 未分页(K) :_________34__________

图2核心内存 还可以使用“任务管理器”查看一个独立进程正在使用的未分页合并内存数量和分页合并内存数量。操作步骤如下: 1) 单击“Windows任务管理器”的“进程”选项卡,然后从“查看”菜单中选择“选择列”命令,显示“进程”选项卡的可查看选项。 2) 在“选择列”对话框中,选定“页面缓冲池”选项和“非页面缓冲池”选项旁边的复选框,然后单击“确定”按钮。 返回Windows “任务管理器”的“进程”选项卡时,将看到其中增加显示了各个进程占用的分页合并内存数量和未分页合并内存数量。 仍以刚才打开观察的应用程序(例如Word) 为例,请在表4-4中记录: 表4-4 实验记录 映像名称PID 内存使用页面缓冲池非页面缓冲池 WINWORD.EXE 2964 37488 951 42 从性能的角度来看,未分页合并内存越多,可以加载到这个空间的数据就越多。拥有的物理内存越多,未分页合并内存就越多。但未分页合并内存被限制为256MB,因此添加超出这个限制的内存对未分页合并内存没有影响。 5:提高分页性能。 在Windows 2000的安装过程中,将使用连续的磁盘空间自动创建分页文件(pagefile.sys) 。用户可以事先监视变化的内存需求并正确配置分页文件,使得当系统必须借助于分页时的性能达到最高。 虽然分页文件一般都放在系统分区的根目录下面,但这并不总是该文件的最佳位置。要想从分页获得最佳性能,应该首先检查系统的磁盘子系统的配置,以了解它是否有多个物理硬盘驱动器。 1) 在“开始”菜单中单击“设置”–“控制面板”命令,双击“管理工具”图标,再双击“计算机管理”图标。 2) 在“计算机管理”窗口的左格选择“磁盘管理”管理单元来查看系统的磁盘配置。 如果系统只有一个硬盘,那么建议应该尽可能为系统配置额外的驱动器。这是因为:Windows 2000最多可以支持在多个驱动器上分布的16个独立的分页文件。为系统配置多个分页文件可以实现对不同磁盘I/O请求的并行处理,这将大大提高I/O请求的分页文件性能。 请在表4-5中记录: 表4-5 实验记录

《操作系统原理实验》试卷A及答案

《中山大学授予学士学位工作细则》第六条 考试作弊不授予学士学位 计算机科学系2012第二学期 《操作系统原理实验》期末考试试题(A) 任课教师:李才伟考试形式:开卷考试时间:2小时年级:11 班别:3 专业:计科姓名:________ 学号:___ _ 成绩___ _ 注意:答案一定要写在答卷中,写在本试题卷中不给分。本试卷要和答卷一起交回。 一.填空题(每小题2分,共30分) 1.在我们的操作系统实验中,C与汇编语言混合编程的操作系统环境为___,其所用的虚拟机为___。2.测试用软盘映像文件的大小为___MB,使用的文件系统格式为___。 3.Intel 80386新增加的两个段寄存器分别为___和___。 4.Intel处理器实模式下的中断向量表包含___个中断向量,每个中断向量有___位。 5.Linux中挂载磁盘映像的命令为___,C语言的编译器为___。 6.将程序的入口安排在指定位置的汇编操作符为___、LD的链接选项为___。 7.ELF的英文原文是___,中文译文为___。 8.在FAT的文件条目中,普通文件和子目录的文件属性值分别为___和___。 9.在IA-32的保护模式下,分段用于___,分页用于___。 10.IA-32处理器的4个系统地址寄存器分别为___。 11.IA-32中的描述符和选择符大小分别为___位和___位。 12.TSS的主要功用为___,TSS描述符只能位于___描述符表中。 13.控制保护模式的寄存器为___,激活保护标志位于其___位。 14.IA-32的三种特权级类型分别为___、___和___。 15.在Make文件中,$@ 和$< 分别表示___和___。 二.问答题(每小题5分,共30分) 1.在实模式下的进程调度中是如何实现堆栈切换的? 2.IA-32的保护模式相比实模式的主要优点有哪些? 3.给出IA-32保护模式下的段寄存器的内容、组成和功用。 4.给出GDT和LDT的英文原文和中文译文,它们有哪些主要功用和区别? 5.启动分页机制的主要步骤有哪些? 6.给出IA-32段页式保护模式下(采用4KB页面大小与两级分页方式的)逻辑地址和线性地址的构成及转 换成物理地址的方法。

相关文档
最新文档