复习要点答案Word下载.docx

上传人:b****5 文档编号:16459720 上传时间:2022-11-23 格式:DOCX 页数:7 大小:19.06KB
下载 相关 举报
复习要点答案Word下载.docx_第1页
第1页 / 共7页
复习要点答案Word下载.docx_第2页
第2页 / 共7页
复习要点答案Word下载.docx_第3页
第3页 / 共7页
复习要点答案Word下载.docx_第4页
第4页 / 共7页
复习要点答案Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

复习要点答案Word下载.docx

《复习要点答案Word下载.docx》由会员分享,可在线阅读,更多相关《复习要点答案Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

复习要点答案Word下载.docx

进程同步,作业调度,内存管理,文件管理。

硬件资源分配

信号量上的P、V操作只是对信号量的值进行加1或减1操作吗?

在信号量上还能够执行除P、V操作外的其他操作吗?

一个计算机有6台磁带机,有n个进程竞争使用,每个进程最多需要两台。

那么n为多少(n<

=5)时,系统才不存在死锁的危险?

n*(x-1)+1<

=m

n:

进程数

x:

最多使用的资源数

m:

资源总数

列出UCOS-II中实现互斥型信号量管理的所有函数,并且指明每个函数的用途。

OS_EVENT*OSMutexCreate(INT8Uprio,INT8U*err);

用途:

实现创建互斥型信号量

OS_EVENT*OSMutexDel(OS_EVENT*pevent,INT8Uopt,INT8U*err);

删除mutex;

voidOSMutexPend(OS_EVENT*pevent,INT16timeout,INT8U*err)

实现等待一个互斥型信号量

INT8UOSMutexPost(OS_EVENT*pevent)

实现释放一个互斥型的信号量

INT8UOSMutexAccept(OSEVENT*pevent,INT8U*err)

实现检查互斥型信号量,以判断某共享资源是否可以使用;

INT8UOSMutexQuery(OS_EVENT*pevent,OS_MUTEX_DATA*pdata);

实现获取某个mutex的信息;

举例说明执行shell程序的方法。

直接用sh命令执行:

$shtest.sh

使用source命令执行:

$sourcetest.sh

将文件改为可执行文件,直接执行

$chmod+xtest.sh

./test.sh

什么是系统调用。

所谓系统调用就是系统内核提供的、功能强大的一系列得函数,系统调用是在内核中实现的,把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序

比较进程与程序的区别

(1)进程是动态的,而程序是静态的。

(2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。

没有建立进程的程序不能作为1个独立单位得到操作系统的认可。

(3)1个程序可以对应多个进程,但1个进程只能对应1个程序。

进程和程序的关系犹如演出和剧本的关系。

LinuxSocket有几种类型,请列举?

流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。

进程与线程的区别与联系?

区别:

1.进程在执行过程中拥有独立的内存单元,而多个线程共享内存;

2.线程的划分尺度小于进程,使得多线程程序的并发性高

3.独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。

线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

联系:

进程和线程都是由操作系统所体现的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。

请列出LinuxTCPsocket编程的流程?

Client:

socket()->

connect()->

send()->

recv->

close()

Server:

socket()->

bind()->

listen()->

accept()->

recv()->

描述Linux中IPC包含几种进程间通信方式,分别是什么?

信号量共享内存消息队列

进程间如何通过信号量实现同步与互斥。

进程通信中,信号量通过PV操作实现同步与互斥;

P操作为S=S-1;

表示申请一个资源,V操作为S=S+1;

表示释放一个资源。

互斥的实现:

初始化信号量mutex=1;

当进程进入临界区时执行P操作,退出临界区时执行V操作,从而实现互斥

同步的实现:

把信号想象成代表一个消息。

当S=0表示消息未产生;

当S>

0则表示消息已经产生,转换成消费者和生产者的问题,从而实现同步

列出linuxSYSTEMVIPC中共享内存的主要的四个函数,并且指明每个函数的用途。

intshmget(key_tkey,size_tsize,intshmflg);

创建一块共享内存

void*shmat(intshmid,void*shmaddr,intshmflg);

shmat调用把参数shmid标识的内存段连到调用进程的一个有效地址上。

intshmdt(void*shmaddr);

实现对共享内存的操作控制

简述套接字的历史和发展。

1982-BerkeleySoftwareDistributions操作系统引入了sockets作为本地进程之间通信的接口

1986-Berkeley扩展了socket接口使之支持UNIX下的TCP/IP通信

现在很多应用(FTP,Telnet,etc)都依赖这一接口

说明TCP与UDP协议各自的优点和缺点,分别适用于什么应用。

tcp需要先建立连接才能通话同时需要形成三路握手,因此信息传递的可靠性比较高,资源开销加大;

UDP不需要以上TCP的两个条件,因此通信效率和实时性要高点,但可靠性不高;

应用:

UDP适用于一次只发送少量数据,对可靠性要求不高的应用环境;

TCP的应用则相反

UC/OS-II的所有功能模块实现的功能和提供的API函数名、参数、返回值等

Linux中进程管理(Fork调用、exec调用)、文件、设备管理、内存管理、进程间通信机制(IPC)涉及到的系统调用和讲过或安排做过的程序等

LinuxShell程序设计中讲过或者安排完成的程序。

其中重点:

一个Linux程序,打开一个文本文件,并从该文件中读出一段数据

os\PART_III\unix_p\exam06\v2

#include<

unistd.h>

fcntl.h>

stdio.h>

sys/types.h>

sys/stat.h>

errno.h>

string.h>

#defineBUFFERSIZE128

intmain(intargc,char**argv)

{

intfrom_fd;

size_tsize_read;

charbuffer[BUFFERSIZE];

if((from_fd=open("

./rpm.txt"

O_RDONLY))==-1)

{

printf("

arguments1wrong!

\nexit!

\n"

);

exit(0);

}

size_read=read(from_fd,buffer,BUFFERSIZE);

if(size_read>

0)

printf("

contentofthefile:

%s"

buffer);

close(from_fd);

exit(0);

}

在UCOS-II中有一个程序,需要一个任务专门管理一个消息队列,为其它任务提供打印服务,其它任务当需要在屏幕上打印字符串时往消息队列中发送消息,而本任务则等待消息队列中的消息,当有消息时取出并打印其包含的消息内容,如无消息则等待(阻塞)

使用流式Socket的简单应用,它包括客户和服务器两个程序。

服务器在某个端口进行监听。

当客户同服务器建立连接后,服务器以发送回字符串“Hello!

AreYouFine”作为响应。

然后,客户程序结束运行,服务器继续进行监听。

os\网络编程\PROGRAM\exam01

在UCOS-II中有一个程序,有两个任务,通过消息邮箱进行通信,优先级为5的任务每隔500毫秒往邮箱中发一个消息,然后通过延时函数进入等待状态,优先级为8的任务等待邮箱中的消息,如果邮箱中没有消息则阻塞,获取了邮箱中的消息后,将消息的内容进行显示。

os\PART_I\SOURCE\OSMbox例子

在Linux下,一个进程创建子进程的代码

\PART_III\unix_p\exam04

#include<

pid_tchild;

Iamtheparentprocess:

%ld\n"

getpid());

if((child=fork())==-1)

Forkerror\n"

elseif(child==0)

Iamthechildprocess:

sleep

(2);

execl("

/home/yangzl/unixC_p/for_exam04/main"

NULL);

execliswrong!

else

Parentprocessagain!

!

wait(NULL);

Parentprocessagainandagain!

}下面的代码是一个服务程序,创建一个名为5678的共享存储区并连接到自己的地址空间。

然后对该共享存储区写数据,写入小写的26个字母(‘a’--‘z’),数据写完后,进程等待直到客户进程读完数据,然后退出。

\os\PART_III\unix_p\ipc\exam15\shm_s.c

以下是一个shell程序,测试文件/home/shell/hello.c是否存在,如果存在则将其拷贝到/home/backup目录下,再在/home/shell 目录下重新创建一个。

#!

/bin/sh

#echo"

pleasecreatefilehello.c!

"

if[-e/home/shell/hello.c];

then

mv-f/home/shell/hello.c/home/backup/

echobackupingoldfile!

fi

cd/home/shell

touchhello.c

echo"

done!

exit0

下面的代码是一个服务程序,创建一个名为1234的消息队列。

然后根据用户输入的内容,往该消息队列发数据,当用户输入“end”,程序退出。

以下是在UCOS-II中使用内存管理的一个示例程序,在主函数中创建一块内存区,一个任务从该内存区中获取一个内存块,进行读写后,释放该内存块。

os\PART_I\SOURCE\OSMemCreate

在Linux中,用pthread库创建线程并等待其退出的程序。

\os\pthread\exam001.c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1