建立网络专题网站架构,紧急通知界面访问升级中狼人,做网站的图片字虚,我想克隆个网站 怎么做简答题4题*5 20分计算题2题*5 10分综合应用2题*10 20分程序填空1题10 10分
1、简答题#xff08;8抽4#xff09; 1、在计算机系统上配置OS的目标是什么#xff1f;作用主要表现在哪个方面#xff1f; 在计算机系统上配置OS#xff0c;主要目标是实现:方便性、有…简答题4题*5 20分计算题2题*5 10分综合应用2题*10 20分程序填空1题10 10分
1、简答题8抽4 1、在计算机系统上配置OS的目标是什么作用主要表现在哪个方面 在计算机系统上配置OS主要目标是实现:方便性、有效性、可扩充性和开放性。 OS的作用主要表现在以下3个方面: ①OS作为用户与计算机硬件系统之间的接口; ②OS作为计算机系统资源的管理者; ③OS实现对计算机资源的抽象。 2、试说明推动OS发展的主要动力是什么。 推动OS发展的主要动力表现在: ①计算机系统资源的利用率不断提高: ②方便用户; ③器件不断更新换代; ④计算机体系结构不断发展; ⑤新的应用需求不断被提出。 3、什么是前趋图请画出下列4条语句的前趋图。 S1: axty; S2: bz1; S3: ca-b; S4: wc1; 1前趋图(precedence graph)是一个有向无环图记为DAG ( directed acyclic graph)用于描述进程间执行的前后关系。 前趋图 4、何谓作业和JCB ( job control block,作业控制块) ? ①、作业包含通常所说的程序和数据还配有作业说明书。系统根据该说明书对程序的运行进行控制。批处理系统中是以作业为基本单位将其从外存调入内存的。 ②、JCB是作业在系统中存在的标志。为了管理和调度作业为每个作业设置一个JCB 用于记录管理和调度作业所需的全部信息。 5、什么是临界资源?什么是临界区? ①、在计算机中有许多资源一次仅允许一个进程使用我们把一次仅允许 一个进程使用的资源称为临界资源如打印机和一些共享变量等。 ②、进程中访问临界资源的那段代码称为临界区。 6、存储器管理的基本任务,是为多道程序的并发执行提供良好的存储器环境。请问:“良 好的存储器环境”应包含哪几个方面? “良好的存储器环境”应包含: ①让每道程序“各得其所”在不受干扰的环境中运行还可以使用户从存储空间的分配、保护等烦琐事务中解脱出来; ②向用户提供更大的存储空间使更多的作业能同时运行或使更大的作业能在较小的内存空间中运行; ③为用户在信息的访问、保护、共享以及动态链接等方面提供方便; ④使存储器有较高的利用率。 7、试说明/O系统的基本功能。 I/O系统的基本功能主要包括: ①隐藏物理设备的细节; ②保证OS与设备无关; ③提高处理机和IO设备的利用率; ④控制I/O设备;确保对设备的正确共享; ⑥处理错误。 8、一个比较完善的文件系统应具备哪些功能? ①文件存储空间管理。通过文件存储空间管理能使文件“各得其所”.并且能尽量提高文件存储空间的利用率。 ②目录管理。通过目录管理能实现文件“按名存取”提高文文件的检索速度解决文件的命名冲突问题(允许文件重名)并能实现文件共享。 ③文件读/写管理。通过文件读/写管理可以实现文件数据的快速读/写。 ④文件安全性管理。通过采取多级文件保护等措施可以实现对系统中文件的保护防止文件被偷窃、修改和破坏。 ⑤用户接口管理。文件系统向用户提供一个统一的、方便使用的接口用户通过该接口可以方便地获得如文件存取、创建、删除、修改等文件管理服务。 2、计算题 ( 4 抽 2 ) 1、某请求调页系统页表保存在寄存器中。若个被替换的页未被修改过则处理 一个缺页中断需要8ms ;若被替换的页己被修改过则处理一个缺页中断需要20ms。内存存取时间为1us,访问页表的时间可忽略不计。假定70%被替换的页被修改过为保证有效存取时间不超过2μs,可接受的最大缺页率是多少? 2、某分页式虚拟存储系统用于页面交换的磁盘的平均访问与传输时间 是20ms,页表保存在内存中访问时间为1μs,即每引用一次指令或数据就需要访问内存 2次。为改善性能可以增设一个联想寄存器若页表项在联想寄存器中则只要访问1 次内存。假设80%的访问对应的页表项在联想寄存器中,剩下的20%中有10%的访问(即总数的2% )会产生缺页。请计算有效访问时间。 3、对于容量为200GB的硬盘若采用FAT文件系统且盘块大小设定为 4KB则请问其FAT表项长度应当选用16位还是32位(采用二进制表示)? 其FAT共须占用多少字节的空间? 4、某个容量为1.44MB的软盘共有80个柱面每个柱面上有18个盘块盘块大 小为1KB盘块和柱面均从0开始编号。文件A依次占据了20、500、750、900这4个 盘块其FCB位于51号盘块上磁盘最后- -次访问的是 50号盘块。若采用隐式链接分配 方式则请计算顺序存取该文件的全部内容需要的磁盘寻道距离。 3、综合应用 页面置换算法 1、最页面置换算法 2、先进先出页面置换算法 3、最近最久未使用页面置换算法 4、最少使用页面置换算法 5、Clock页面置换算法 6、改进型Clock页面置换算法 银行家算法 安全序列有时候是不唯一的 4、程序填空 (2 抽一 )
1、生产者 -- 消费者
#include stdio.h
#include pthread.h
#define MAX 18 /* 要生产的最大数量 */pthread_mutex_t the_mutex; // 互斥锁提供对共享资源的互斥访问
pthread_cond_t condc, condp; // 条件变量用于线程间的信号传递
int buffer 0; // 缓冲区生产者和消费者之间共享的数据void *producer(void *ptr) /* 生产数据 */
{ int i;for (i 1; i MAX; i) {pthread_mutex_lock(the_mutex); // 获取对缓冲区的独占访问权while (buffer ! 0) pthread_cond_wait(condp, the_mutex); // 缓冲区非空等待buffer i; /* 将项目放入缓冲区 */printf(产品 %d 已生产。\n, buffer);sleep(1); // 模拟一些处理时间pthread_cond_signal(condc); // 唤醒消费者pthread_mutex_unlock(the_mutex); // 释放对缓冲区的访问权}pthread_exit(0);
}void *consumer(void *ptr) /* 消费数据 */
{ int i;for (i 1; i MAX; i) {pthread_mutex_lock(the_mutex); // 获取对缓冲区的独占访问权while (buffer 0) pthread_cond_wait(condc, the_mutex); // 缓冲区为空等待printf(产品 %d 已消费。\n, buffer);buffer 0; /* 从缓冲区取出项目 */pthread_cond_signal(condp); // 唤醒生产者pthread_mutex_unlock(the_mutex); // 释放对缓冲区的访问权}pthread_exit(0);
}int main(int argc, char **argv)
{pthread_t pro, con;pthread_mutex_init(the_mutex, 0); // 初始化互斥锁pthread_cond_init(condc, 0); // 初始化消费者条件变量pthread_cond_init(condp, 0); // 初始化生产者条件变量pthread_create(con, 0, consumer, 0); // 创建消费者线程pthread_create(pro, 0, producer, 0); // 创建生产者线程pthread_join(pro, 0); // 等待生产者线程结束pthread_join(con, 0); // 等待消费者线程结束pthread_cond_destroy(condc); // 销毁消费者条件变量pthread_cond_destroy(condp); // 销毁生产者条件变量pthread_mutex_destroy(the_mutex); // 销毁互斥锁
}2、读者 -- 写者
#include stdio.h
#include stdlib.h
#include pthread.h#define M 6 // 读者数量
#define N 2 // 写者数量int rc 0; // 当前读者数量
pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; // 用于互斥地修改rc变量
pthread_mutex_t db PTHREAD_MUTEX_INITIALIZER; // 用于读、写以及写、写之间的互斥 void *read(void *arg) {pthread_mutex_lock(mutex); // 锁定互斥锁mutex用于修改rc变量rc rc 1;if (rc 1) pthread_mutex_lock(db); // 如果是第一个读者锁定互斥锁dbpthread_mutex_unlock(mutex); // 解锁互斥锁mutex允许其他读者进入printf(reader %d is reading\n, arg); // 打印读者正在读sleep(1); // 模拟读操作休眠1秒printf(reader %d is leaving\n, arg); // 打印读者正在离开pthread_mutex_lock(mutex); // 锁定互斥锁mutex用于修改rc变量rc rc - 1;if (rc 0) pthread_mutex_unlock(db); // 如果是最后一个读者解锁互斥锁dbpthread_mutex_unlock(mutex); // 解锁互斥锁mutex
}void *write(void *arg) {pthread_mutex_lock(db); // 锁定互斥锁db用于写操作printf(writer %d is writing\n, arg); // 打印写者正在写sleep(1); // 模拟写操作休眠1秒printf(writer %d is leaving\n, arg); // 打印写者正在离开pthread_mutex_unlock(db); // 解锁互斥锁db
}int main() {pthread_t readers[M], writers[N]; // 定义M个读者线程和N个写者线程int i;for (i 0; i M; i)pthread_create(readers[i], NULL, read, (void *) i); // 创建M个读者线程for (i 0; i N; i)pthread_create(writers[i], NULL, write, (void *) i); // 创建N个写者线程sleep(6); // 主线程休眠6秒等待读者和写者线程执行return 0;
}