题目一:请指出执行系统调用时向操作系统传递参数的三种常用方式分别是什么,并分别说明在哪些情况下适合采用哪种方式。
三种方式分别为
1,寄存器传递,在传递的参数占用空间较小,传递参较少时使用,比如在中断返回时传递一个参数时 使用eax寄存器传递中断类型
2,内存的块和表传递,当需要传递的参数总大小大于寄存器数量时,可以通过将块的首地址和大小通 过寄存器传递,如使用I/O输出字符串时,通常使用两个寄存器一个存入起始地址,一个存入字符串长 度来作为参数传递。
3,使用栈传递,通过将参数压入栈中然后通过操作系统弹出使用,这种方法所允许传入的参数大小是 最大的,常见的为我们一般使用的函数的参数就是通过栈传递的。

题目二:操作系统中为什么要将机制和策略区分开来? 请查找文献并以实际操作系统中的案例来举例说明其好处。
机制可以理解为“提供基本的功能”而策略为“使用这些功能的方案”,机制与相关的硬件设备和算 法有关,机制与设计人员的设计方案有关,而机制和策略区分可以保证操作系统能够很容易的被修改, 因为当我们需要修改操作系统一些相关功能的时候,我们可以直接更改我们的策略而不用修改我们的 机制,这样能够为操作系统的设计节省很大时间开销,同时如果后面硬件升级,我们可以直接在策略 不变 的情况下升级机制,这样也能增加操作系统的可维护性。

最典型的案例就是手机中的耳机问题:当没有区分机制和策略的时候,操作系统一般设计为当插头检 测到有耳机插入的时候,就关闭扬声器,声音转向耳机;当检测到耳机拔出的时候,就关闭耳机通道, 声音转向扬声器。虽然这个适用于大多数情况,但如果在插上耳机的情况下,有闹钟发生,我们希望 的仍是扬声器发出声音,在这种情况下如果机制和策略不分离,就很难以完成,而在机制与策略分离 的情况下,只要修改策略就能够实现在这类特殊情况的需求
所以作为底层的机制就不能擅自去实现策略。只需要提供相关的功能即可,而上层根据需要来调用这些接口。所以机制和策略需要区分开来。

题目三:操作系统采用微内核设计的主要优点是什么? 用户程序和系统服务在微内核结构内如何相互影响? 采用微内核设计的缺点又是什么?

微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入的选件,这样就可提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要用新模块替换旧模块,不需要改变整个操作系统。其优点在于
1,因为系统服务层被分离出来所以能够使得不同的API,文件系统,甚至不同的操作系统的特性在一个系统中共存。
2,系统非常灵活。当运行一个应用程序时,只需把选定的系统服务加载到系统中即可。而修改了服务以后可以通过联机进行测试;并不需要重新构建或者启动一个新的内核,他们并不影响系统的运行。
3,系统服务或者设备驱动故障和与它们有关的运行任务是隔绝的。
4,依存关系的服务器系统可以加以限制,使为安全重要至关信赖的计算基数的应用可被削减。
5,这种由微内核所决定的结构(IPC,多线程)能够应用在所有的应用程序和服务上。一个精炼的微内核接口能够有演绎成更多模块的系统结构。
用户程序和系统服务是通过进程间的通信机制在微内核内相互作用互相传递消息。
由于微内核只是内核的一种精简模式,所以系统的核心只实现了最基本的系统操作,这样内核以外的外部程序之间由于独立运行使得系统难以进行良好的整体优化。且进程间相互通信的开销也较单一内核系统大得多。

题目四:在第二章中介绍了一个从一个源文件向一个目标文件复制内容的程序。请用 Win32 或 POSIX 的 API 写出这个 C 程序,并确保你的 C 程序中包括了所有必要的错误检测(如文件是否存在等)。
在win32 API代码如下:

#include<stdio.h>
#include<stdlib.h>
#include <Windows.h>
int main(int argc,char** argv)
{if(argc!=3)//main函数中第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。 //第二个参数,char*型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。//argv[0]为本文件的目录地址,argv[1],argv[2]应为源文件名和目的文件名,所以argc应该为3,其他数量都不对{printf("file arguments number wrong\ntrue format: copyfile.exe source_file,object_file");return 0;}HANDLE handlein,handleout;//文件输入输出句柄DWORD in,out;//文件实际读出和写入的字节数DWORD filesize;//要复制文件的大小char* buffer;//缓冲区,先将数据读到缓冲区中,然后再重缓冲区写入到文件handlein=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);handleout=CreateFile(argv[2],GENERIC_WRITE,FILE_SHARE_DELETE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);//CreateFile这个函数的功能是创建或者打开一个文件或者I/O设备,如执行成功,则返回文件句柄。 INVALID_HANDLE_VALUE 表示出错.if(handlein==INVALID_HANDLE_VALUE)//{perror("open source_file failure");exit(1);}if(handleout==INVALID_HANDLE_VALUE){perror("open object_file failure");exit(2);}filesize=GetFileSize(handlein,NULL);//获取文件大小buffer=(char*)malloc(filesize);while(ReadFile(handlein,buffer,filesize,&in,NULL)&&in>0)//每次读入时成功且读入的字节数不为0则表示文件还没有完全读取{WriteFile(handleout,buffer,filesize,&out,NULL);if(in!=out)//如果读入的字节数和写入的字节数不相同则表示复制时出现异常{printf("file copy abnormally\n");exit(3);}}printf("file copy successfully\n");CloseHandle(handlein);CloseHandle(handleout);
}

掌握系统级跟踪工具,观察并记录。一旦你正确地设计并实现了题目 4 中的程序,采用跟踪系统调用的工具来运行它,观察并记录相应的过程。(Linux 系统提供了 ptrace 工具,而Solaris 系统则采用 truss 或 dtrace 命令。在 MacOSX 中,dtrace 工具提供了类似的功能。)
因为题目中没有直接给Windows下的系统级跟踪工具,这里我在网络上搜索使用的是在Windows环境下 的Process Monitor软件(可以显示实时文件系统,注册表,进程和线程活动)来进行跟踪系统调用。
先进行程序的运行:

打开软件后如图该软件会监控电脑所有的进程运行情况,这里我们可以搜索copyfile.exe(问题4中运 行的程序来找到相应的进程)

找到之后可以查看相关的线程事件如下
其中有时间发生的时间(精确到微秒)负责运行的线程号,运行结果,文件路径,运行时间,文 件信息

进程信息如下:其中开始时间是电脑的开机时间

运行该程序所使用的相关文件操作栈的信息如下:

还有相关文件创建的线程信息:

请自选一操作系统,按文件管理、状态信息、文件修改、程序语言支持、程序加载与执行、通信、后台服务等类别分别给出该操作系统相应的系统程序并简要介绍该系统程序(各类别至少一个)。
系统选择是windows(以下资料来自网络)
文件管理:
CreateFile:打开文件
要对文件进行读写等操作,首先必须获得文件句柄,
ReadFile:从文件中读取字节信息。
在打开文件获得了文件句柄之后,则可以通过该函数读取数据。
WriteFile:向文件写入字节信息。
同样可以将文件句柄传给该函数,从而实现对文件数据的写入。
CloseHandle:关闭文件句柄。
打开门之后,自然要记得关上。
状态信息:
GetFileTime:获取文件时间。
有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。
该函数同样需要文件句柄作为入口参数。
GetFileSize:获取文件大小。
由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。
该函数同样需要文件句柄作为入口参数。
GetFileAttributes:获取文件属性。
可以获取文件的存档、只读、系统、隐藏等属性。
该函数只需一个文件路径作为参数。
GetFileInformationByHand le:获取所有文件信息
该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。该函数需要文件句柄作为入口参数。
文件修改:
SetFilePoint:移动文件指针。
该函数用于对文件进行高级读写操作时。
CopyFile:复制文件
注意:只能复制文件,而不能复制目录
程序语言支持:
Windows Management Instrumentation(WMI)
Winmgmt (Windows管理规范服务)的进程名是svchost.exe,在WinXP Home/PRO下默认安装的启动类型是自动,依赖于Event Log、Remote Procedure Call服务。WMI是Windows中的基础管理结构,它通过一组常用接口来控制和监视系统(如对系统属性的查看与更改、设置用户权限等)。WMI为访 问大量的Windows管理数据提供了一个统一的机制。WMI通过脚本、C++程序接口、.NET类(系统管理)和命令行工具(WMIC)提供了对信息的 访问。WMI的功能还包括事件、远程、查询、查看、计划和实施用户扩展及更多内容。总而言之,虽然在服务管理工具中可以关闭,但最好别动它,否则会出现许多莫名的问题。
程序加载与执行:
Print Spooler:
将文件加载到内存中,Spooler(打印后台处理服务)的进程名是 spoolsv.exe,WinXP Home/PRO默认安装的启动类型是自动,依赖于Remote Procedure Call。Spooler是为了提高文件打印效率,将多个请求打印的文档统一进行保存和管理,先将要打印的文件拷贝到内存,待打印机空闲后,再将数据送往 打印机处理。这样处理速度更快些。建议将其设置为手动,有打印任务时再打开。如果没有打印机自然是禁用了。
通信:
Background Intelligent Transfer Service:
使用闲置的网络带宽来传输数据。
Messenger:
在客户端及服务器之间通过网络传输传送信息。这个服务与 Windows Messenger 无关。如果停止这个服务,Alerter信息将不会被传输。如果停用这个服务,所有依存于它的服务将无法启动。
NetMeeting Remote Desktop Sharing:
让使用者可以通过NetMeeting服务,由远程访问本机。如果这项服务停止的话,远程桌面共享功能将无法使用。如果服务停用的话,任何依赖它的服务将无法启动。
Network DDE DSDM:
通过网络共享信息动态数据交换 (DDE)。如果这个服务被停止,DDE网络共享将无法使用。如果这个服务被停用,任何依存于它的服务将无法启动。
NTLM Security Support Provider:
为没有使用命名管道传输的远程过程调用(RPC)程序提供安全性。
后台服务:
Windows time
W32Time(Windows时间服务)的进程名是svchost.exe,在WinXP Home/PRO下默认安装的启动类型是自动,它没有服务依存关系。这一服务对应WinXP的Internet对时服务,如不需要关闭即可。
BACKGROUND TASKS INFRASTRUCTURE SREVICE:
控制哪些后台服务可以在系统上运行的windows基础结构服务。
Background Intelligent Transfer Service
BITS (后台智能传输服务)的进程名是Svchost.exe,WinXP Home/Pro默认安装的启动类型是手动,依赖于Remote Procedure Call、Workstation服务。微软宣称BITS能够利用剩余的带宽传输文件,当网络切断或计算机需重启时,后台智能传输服务会自动对文件传输加 以维护,当网络重新连接时,后台智能传输服务将继续从停止的地方继续开始传输文件。其实这个服务原是用来实现HTTP 1.1服务器之间的信息传输,基本上它的应用也就是支持Windows自动更新时的断点续传。如果你禁用了Automatic Updates,留着它基本上也没有什么意义。
Alerter (警示器)服务的进程名是Services.exe(即启动这个服务后在后台运行的进程的名称,可以通过任务管理器看到)。Alerter服务的功能是, WinXP将系统上发生的与管理有关的事件以警示(Alert)信息传送至网络上指定的电脑或用户,例如当发生打印错误或硬盘即将写满等事件,这类警示信 息由XP的警示器服务(Alerter Service)收集、送出。
尽管Alerter依存的服务并没有Messenger(信使)服务,但Alerter服务必须依赖后者才能送出信息,故在启动Alerter服务后还必须确定Messenger服务也是在工作中,而接收的电脑也必须启 动Messenger服务。由于Alerter服务运行后,服务使用户可以发送弹出(Pop-up)信息给其他用户,这些信息有可能被攻击者用来实施攻 击,如诱骗用户修改口令等,从而造成安全隐患。同时该服务使得用户帐号名泄漏,也有可能被攻击者利用来进行口令猜测攻击。所以对于家庭单机用户,甚至对于 绝大多数小型的局域网来说,这个功能是完全可禁用的,不仅节省了系统资源和加快启动速度,也提高了机器的安全性。

操作系统第2章作业题答案相关推荐

  1. 操作系统第九次部分作业题答案

    首先声明,这不是标准答案,只是本人的见解与想法:其次,这不是第九章的作业题,而是磁盘管理那一章的:最后,我写这个博客更多是为了记录,类似于笔记,以及希望大牛能帮忙点出错误. 题目一: 一个磁盘有 50 ...

  2. c语言第三章作业题答案,c语言第三章简单练习题及答案.doc

    c语言第三章简单练习题及答案 c语言第三章简单练习题及答案 一.选择题 1. C语言提供的合法的数据类型关键字是. Double shortinteger Char 2. 在C语言中,合法的长整型常数 ...

  3. 计网第四章作业题答案详解

    第四章作业 一.单选题 二.简答题 三.论述题 四.计算题 第四章作业 详细知识点请戳:2万字全面总结计网 之 网络层,建议考前通读复习 选择题知识点不在单独列出,大题附带解题过程. 一.单选题 1. ...

  4. 电磁学第1章作业题答案

    库仑定律 1 习题 1-4 如图,两个小球的质量都是\(m\),都用长为\(l\)的细线挂在同一点,若它们带上相同的电量\(q\),平衡时,两线夹角为\(2\theta\),设小球大小可忽略不计,求小 ...

  5. 操作系统--第五章 虚拟存储器--习题答案

    第五章 操作系统第四版课后的全部习题答案,学习通作业答案. 说明:操作系统其他章节的习题答案也在此"操作系统"专栏. 1.试说明设备控制器的组成. 答:由设备控制器与处理机的接口, ...

  6. 假设计算机系统采用C-SCAN,操作系统第6章习题带答案

    5.某系统中磁盘的每个盘块大小为1KB,外存分配方法采用中的混合索引结构,其中索引节点中直接地址6项,一级索引地址2项,二级索引地址1项,每个盘块号占用4个字节,请问该系统中允许的文件最大长度是多少? ...

  7. 计算机账户和用户账户区别,网络操作系统第四章用户和计算机帐户习题及答案...

    网络操作系统第四章用户和计算机帐户习题及答案发布时间:2007-12-11 第四章习题 一.填空 ⒈拥有(       )是计算机接入网络的基础,拥有(      )是用户登录到网络并使用网络资源的基 ...

  8. c语言作业题五六章答案,数据结构(C语言版)第五六章习题答案

    数据结构(C语言版)第五六章习题答案,人民邮电出版社,答案很详细. (15)设F是一个森林,B是由F变换得的二叉树.若F中有n个非终端结点,则B中右指针域为空的结点有( )个. A. n-1 B.n ...

  9. matlab作业5答案,《matlab作业题答案》.doc

    <matlab作业题答案>.doc MATLAB作业题答案 第一章MATLAB概述 选择题 (1)在MATLAB中( C )用于括住字符串. A., B.: C.'' D."&q ...

  10. 【王道考研】操作系统 笔记 第二章上 进程调度

    本文内容,1.进程和线程 2.进程调度 特此鸣谢王道考研 本文参考王道考研的相关课程 若有侵权请联系,立删 其余笔记链接: [王道考研]操作系统笔记 第一章_才疏学浅743的博客-CSDN博客 [王道 ...

最新文章

  1. 特征工程(feature engineering)是什么?特征工程(feature engineering)包含哪些方面?
  2. Codeforces Round #323 (Div. 2)
  3. c语言一位共阳数码管编程,求一个共阳四位数码管滚动显示1234的程序
  4. fga 例子 oracle,利用Oracle FGA实现审计
  5. Python(10)- 格式化输出%
  6. 即这样的WZSZF01代码是错误的
  7. Java 集合List、Set、HashMap操作二(Map遍历、List反向、Set删除指定元素,集合只读、TreeMap操作、List转Array、List移动元素)
  8. 网络管理员考试案例梳理、真题透解与强化训练
  9. Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
  10. 【转】js 获取浏览器高度和宽度值(多浏览器
  11. 会考flash中文字变形为三角形_flash逐帧课件动画制作有哪些详细教程
  12. LED背光源行业的产业链升级
  13. 一文了解caffe框架
  14. Python爬虫:爬取某易云音乐歌曲
  15. ANC降噪耳机声学参数合成与校准的2种方式
  16. 文件压缩(哈夫曼树)
  17. 首届全国智能制造(中国制造2025)创新创业大赛在京启动
  18. 微信小程序自定义省市县联动组件
  19. PDF Expert for Mac 2.5.5 中文版 — PDF编辑工具
  20. 软件环境 硬件环境java,软件环境和硬件环境都指什么?

热门文章

  1. 图片上传之blob对象预览
  2. 蓝叠模拟器的通讯录位置
  3. 玩转MongoDB4.0(MongoDB基础总结)
  4. 「异业联盟」如何打造让会员感兴趣的会员?
  5. oracle_java.exe,系统找不到C:\ProgramData\Oracle\Java\javapath\java.exe问题及解决方案
  6. Gerrit报错:Permission denied (publickey)
  7. 94个比付费软件更好的免费软件(转载)
  8. 「漫談數位音樂」5~音樂CD複製要點
  9. vue动态调节背景图片
  10. windows消息机制