操作系统第六章课后习题答案(郁红英)

 

 

 

 

 

 

 

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.设计现代OS的主要目标是什么? 答:(1)有效性 (2)方便性 (3)可扩充性 (4)开放性 2.OS的作用可表现在哪几个方面? 答:(1)OS作为用户与计算机硬件系统之间的接口 (2)OS作为计算机系统资源的管理者 (3)OS实现了对计算机资源的抽象 3.为什么说OS实现了对计算机资源的抽象? 答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。 4.试说明推动多道批处理系统形成和发展的主要动力是什么? 答:主要动力来源于四个方面的社会需求与技术发展: (1)不断提高计算机资源的利用率; (2)方便用户; (3)器件的不断更新换代; (4)计算机体系结构的不断发展。 5.何谓脱机I/O和联机I/O? 答:脱机I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。 而联机I/O方式是指程序和数据的输入输出都是在主机的直接控制下进行的。 6.试说明推动分时系统形成和发展的主要动力是什么? 答:推动分时系统形成和发展的主要动力是更好地满足用户的需要。主要表现在:CPU的分时使用缩短了作业的平均周转时间;人机交互能力使用户能直接控制自己的作业;主机的共享使多用户能同时使用同一台计算机,独立地处理自己的作业。
以下是一个基于信号量的C语言程序,模拟了学生借书的过程。 ```c #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #define MAX_BOOKS 10 // 图书馆最大书籍数量 #define MAX_STUDENTS 100 // 最大学生数量 int num_books = MAX_BOOKS; // 图书馆当前书籍数量 sem_t sem_books; // 信号量,表示图书馆中可借阅的书籍数量 void *borrow_book(void *args) { int student_id = *(int *)args; printf("Student %d is trying to borrow a book...\n", student_id); sem_wait(&sem_books); // 申请信号量 if (num_books > 0) { num_books--; printf("Student %d has borrowed a book. %d books left in the library.\n", student_id, num_books); } else { printf("Student %d failed to borrow a book. No books left in the library.\n", student_id); } sem_post(&sem_books); // 释放信号量 pthread_exit(NULL); } int main() { sem_init(&sem_books, 0, MAX_BOOKS); // 初始化信号量 pthread_t students[MAX_STUDENTS]; int student_ids[MAX_STUDENTS]; for (int i = 0; i < MAX_STUDENTS; i++) { student_ids[i] = i + 1; pthread_create(&students[i], NULL, borrow_book, &student_ids[i]); } for (int i = 0; i < MAX_STUDENTS; i++) { pthread_join(students[i], NULL); } sem_destroy(&sem_books); // 销毁信号量 return 0; } ``` 程序中,我们使用了一个全局变量`num_books`来表示图书馆中可借阅的书籍数量,并使用了一个信号量`sem_books`来保护这个变量,以避免多个线程同时修改它的值。 在`borrow_book`函数中,每个线程会申请信号量,如果信号量的值大于0(即图书馆中还有书籍),则该线程可以借阅一本书,否则无法借书。无论是否成功借阅,该线程都会释放信号量。 在`main`函数中,我们创建了一些线程来模拟学生借书的过程。每个线程都会执行`borrow_book`函数,并将自己的学号作为参数传递给该函数。 最后,我们在`main`函数中等待所有线程执行完毕,销毁信号量并退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值