计算机四级网络工程师(操作系统原理)模拟试卷21
操作系统原理——单选题
1.对于如下C语言程序
void *th_f(void *arg)
{
printf(\\(B)
A. 线程th_f运行后主动退出
B. 线程th_f运行后等待一个特定的线程退出
C. 线程th_f运行后主动释放CPU给其他线程
D. 线程th_f运行后成为僵尸
解析:Pthread线程包中,pthread_join函数是等待一个特定的线程退出,题意中,main函数中创建一个新线程,新线程的创建后,从入口函数th_f开始执行,输出Hello World后,调用pthread_join等待线程ID为2的线程退出,答案为B。
2.对于如下C语言程序
void *th_f(void * arg)
{
printf(\\(D)
A. 线程th_f运行后成为僵尸
B. 线程th_f运行后等待一个特定的线程退出
C. 线程th_f运行后主动释放CPU给其他线程
D. 线程th_f运行后正常退出
解析:线程通过调用pthread_exit函数终止执行,就如同进程在结束时调用exit函数一样。这个函数的作用是,终止调用它的线程并返回一个指向某个对象的指针。故选择D选项。
3.对于如下C语言程序
void *th_f(void *arg)
{
printf(\\(C)
A. 线程th_f运行后主动退出
B. 线程th_f运行后等待一个特定的线程退出
C. 线程th_f运行后主动释放CPU给其他线程
D. 线程th_f运行后成为僵尸
解析:题目程序在main()函数中调用pthread_create()函数创建一个新线程,设置新线程的入口函数为th_f, 所以新线程创建后执行th_f函数,在th_f函数中输出Hello World,接着调用pthread_yield()函数,pthread_yield()函数是用来释放CPU来运行另外一个线程,所以答案选C选项。
4.有如下C语言程序
void *th_pg(void *arg)
{
printf(\\(B)
A. 线程th_pg运行后主动退出
B. 线程th_pg运行后等待一个特定的线程退出
C. 线程th_pg运行后主动释放CPU给其他线程
D. 线程th_pg运行后变成僵尸状态
解析:线程调用pthread_join()函数,表示等待一个特定的线程退出。故选择B选项。
5.有如下C语言程序
void *th_pg(void *arg)
{
printf(\\(A)
A. 创建线程,线程名为th_pg
B. 创建线程,线程名为ptid
C. 创建线程,线程名为sta
D. 创建线程,线程名为NULL
解析:pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)中创建线程的函数,里面包含四个参数,第一个参数为指向线程标识符的指针;第二个参数用来设置线程属性;第三个参数是线程运行函数的起始地址也即线程名;最后一个参数是运行函数的参数。pthread_create函数表示创建一个新线程,由程序知线程名为th_pg,故选择A选项。
6.有如下C语言程序
void *th_pg(void * arg)
{
printf(\\(C)
A. 线程th_pg运行后主动退出
B. 线程th_pg运行后等待一个特定的线程退出
C. 线程th_pg运行后主动释放CPU给其他线程
D. 线程th_pg运行后变成僵尸状态
解析:pthread_creat()函数和pthread_yield()函数是线程相关的函数调用,pthread_create()函数的功能是创建一个线程 ,指定线程的入口函数为th_pg,新线程会运行th_pg函数; pthread_yield()函数的功能是释放CPU来运行另外一个线程。故本题答案选择C选项。
7.有如下C语言程序
void *th_pg(void * arg)
{
printf(\\(D)
A. 线程th_pg运行后变成僵尸状态
B. 线程th_pg运行后等待一个特定的线程退出
C. 线程th_pg运行后主动释放CPU给其他线程
D. 线程th_pg运行后正常退出
解析:pthread_create()函数和pthread_exit()函数是线程相关的函数调用,pthread_create()函数的功能是创建一个线程 ,指定线程的入口函数为th_pg,新线程会运行th_pg函数; pthread_exit()函数的功能是结束调用的线程并释放它的栈。故本题答案选择D选项。
8.有如下C语言程序:
/*program Hello*/
void *p_th_Hello (void *arg)
{
printf(\\(A)
A. 2
B. 1
C. 0
D. 3
解析:创建一个新线程需要使用pthread_create调用。新创建线程的线程标识符作为函数值返回。当一个线程完成分配给它的工作时,可以通过调用pthread exit来终止。这个调用终止该线程并释放它的栈。题目中程序变量为sta,初值为0,创建线程之后比较两个线程ID是否相等。所以当pthread_create运行成功后,进程Hello有2个线程。故选择A选项。
9.有如下C语言程序:
/*program Hello*
void *p_th_Hello(void * arg)
{
printf(\\(B)
A. 1
B. 2
C. 3
D. 0
解析:一般一个线程在继续运行前需要等待另一个线程完成它的工作并退出。可以通过pthread join线程调用来等待别的特定线程的终止。而要等待线程的线程标识符作为一个参数给出。当主程序发布以后,题目中程序变量为sta,初值为0,创建线程之后比较两个线程ID是否相等。所以当pthread_join运行成功后,进程Hello有2个线程。
10.有如下C语言程序:
/*program Hello*/
void *p_th_Hello (void *arg)
{
printf(\\(C)
A. 0
B. 1
C. 2
D. 3
解析:pthread_yield作用是释放CPU来运行另外一个线程。当主程序发布以后,题目中程序变量为sta,初值为0,创建线程之后比较两个线程D是否相等。所以当pthread_yield运行成功后,进程Hello有2个线程。
11.有如下C语言程序:
/*program Hello*/
void *p_th_Hello (void *arg)
{
printf(\\(D)
A. 4
B. 3
C. 2
D. 1
解析:当一个线程完成分配给它的工作时,可以通过调用pthread_exit来终止,这个调用终止该线程并释放它的栈。根据题意,pthread_exit函数调用
本文档预览:3600字符,共9006字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载