文章目录
- C/C++笔试练习
- 选择部分
- (1)线程作用
- (2)磁盘的固定块
- (3)多进程
- (4)进行调度
- (5)cache
- (6)内存抖动
- (7)非抢占CPU调度
- (8)inode描述
- (9)文件操作
- (10)进制
- 编程题 day30
- 最难的问题
- 因子个数
C/C++笔试练习
选择部分
(1)线程作用
下列关于线程的说法错误的是()
A.耗时的操作使用线程,提高程序响应
B.耗内存的操作使用线程,提高内存利用率
C.多CPU的系统使用线程,提高CPU利用率
D.并行操作使用线程,如c/s架构中服务端程序为每个客户端请求创建一个线程来响应
答案:B
当一个比较耗时的操作,可以分成多个线程,并行的运行,这样提高程序的运行效率,多个线程在并行运行的时候,并不能比高内存的利用率多线程的并行可以提高CPU的利用率c/s服务端程序可以让一个线程为一个客户端去服务,典型的就是tcp的服务端程序。
多线程的程序可以提高CPU的利用率,不能提高内存的利用率,从而选择B。
(2)磁盘的固定块
如果将固定块大小的文件系统中的块大小设置大一些,会造成()。
A.更好的磁盘吞吐量和更差的磁盘空间利用率
B.更好的磁盘吞吐量和更好的磁盘空间利用率
C.更差的磁盘吞吐量和更好的磁盘空间利用率
D.更差的磁盘吞吐量和更差的磁盘空间利用率
答案:A
(1)如果磁盘的固定块大小设置大了, 就会导致, 存储小块文件的时候, 分配一个块的大小绰绰有余就会导致该块当中空闲的空间也不能分配给其他的程序,从而磁盘的利用率就会降低。
(2)同时就会提高整个磁盘的吞吐量,因为每次分配的块比之前的大,在块数相同的情况下,分配的空间更大了。
(3)多进程
某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台,当N的取值不超过()时系统不会发生死锁。
A.4
B. 5
C.6
D.7
答案:B
可以用哲学家就餐问题的思想解决此类问题,每个进程要求3台,所以先给每个进程2台,再如果柔出一台,分给某一个进程,等这个进程执行完了,释放自己的资源给其他进程用,这样就不会发生死锁。即2N+1=11,得N=5。N=4时,不是最大值,不符合题意,N=6时,资源不够用,可能死锁。
(4)进行调度
进程调度是从()选择一个进程投入运行。
A.就绪队列
B.等待队列
C.作业后备队列
D.提交队列
答案:A
操作系统调度是从就绪队列当中获取一个进程进行运行。
(5)cache
下面有关Cache的说法哪一个是不正确的()
A.设置Cache的目的,是解决CPU和主存之间的速度匹配问题
B.设置Cache的理论基础,是程序访问的局部性原理
C.Cache与主存统一编址,Cache的地址空间属于主存的一部分
D.Cache的功能均由硬件实现,对程序员是透明的
答案:C
C选项:Cache是介于中央处理器和主存储器之间的高速小容量存储器,因此它不属于主存的一部分。
(6)内存抖动
什么是内存抖动(Thrashing)()
A.非常频繁的换页活动
B.非常高的CPU执行活动
C.一个极长的执行进程
D.一个极大的虚拟内存
答案:A
内存抖动:内存页面的频繁更换,导致整个系统效率急剧下降,这个现象称为内存抖动。抖动一般是内存分配算法不好,内存太小引或者程序的算法不佳引起的页面频繁从内存调入调出。
(7)非抢占CPU调度
在所有非抢占CPU调度算法中,系统平均响应时间最优的是()
A.实时调度算法
B.短任务优先算法
C.时间片轮转算法
D.先来先服务算法
答案:B
(1)短任务优先系统平均响应时间最短,但是往往不能确定所有任务的运行时间。
(2)时间片轮转,适用于分时系统,但是增加了抢占以切换进程,算法性能依赖于时间片大小分时操作系统:是使一台计算机采用时间片轮转的方式同时为几个、几十个甚至几百个用户服务的一种操作系统。
(3)先来先服务平均响应时间最长。不适用于分时操作系统。
(8)inode描述
下面关于inode描述错误的是?
A. inode和文件是一一对应的
B. inode能描述文件占用的块数
C. inode描述了文件大小和指向数据块的指针
D.通过inode实现文件的逻辑结构和物理结构的转换
答案:A
A:硬链接的情况下,多个文件指向同一个inode节点
(1)inode 包含了文件的相关(元)信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。
(2)在 inode 节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。文件数据都储存在"块"中,一个块通常是8个扇区,4KB。
(3)Linux 文件系统通过把 inode 节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的inode 节点号,通过该inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
(9)文件操作
文件操作的唯一依据是?
A.文件名
B.文件句柄
C.物理地址
答案:B
文件描述符:open函数的返回值,返回当前操作文件的句柄后续通过文件描述符(文件句柄)来读文件或者写文件。
int open(const char *pathname,int flags, mode_t mode);
ssize_t read(int fd,void *buf,size_t count);
ssize_t write(int fd,const void *buf, size_t count);
(10)进制
十进制数 -10 的3进制4位补码是多少?
A.0010
B. 1010
C.2122
D.2121
答案:C
补码=反码+1,计算机中,用补码来表示负数。
(1)用0,1,2表示。
(2)遇3进位。
于是3进制的数的补码同二进制的转换过程一样。
(1)先求的10的3进制表示为0101。
(2)对10的3进制表示形式取反为2121。
(3)对取反后的三进制表示形式加1位等于2122。
编程题 day30
最难的问题
最难的问题
解题思路:原文与密码错位5个英文字符,密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 原文字母:V W X Y Z A B C D E F G H I J K L M NO P Q R S T U 密码 > ‘E’,原文= 密码 - 5 。
#include <stdio.h>
int main()
{
char c;
while ((c = getchar()) != EOF)
{
if ('A' <= c && 'Z' >= c)
{
c = (c > 'E') ? (c - 5) : (c + 21);
}
putchar(c);
}
return 0;
}
因子个数
因子个数
解题思路:求一个数字的因子(>=2的最小不能整除数字)个数,从最小因子2到数字的最大因子数(数字的平方根)开始判断是否能够取余,可以则循环取余直到取余不为0,因子个数+1;否则使用下一个因子计算;最终整除了各个因子数之后剩余的数字不为1则本身也是一个因子,因此因子数+1。
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
int n, k, i;
while (cin >> n)
{
k = 0;
for (i = 2; i <= sqrt(n); i++)
{
if ((n % i) == 0)
{
while ((n % i) == 0)
{
n=n/i;
}
k++;
}
}
if (n != 1)
k++;
cout << k << endl;
}
return 0;
}