操作系统真题

操作系统真题

趋势科技

在这里插入图片描述
在这里插入图片描述
内核线程的映射可能有一对一,一对多,多对多

在这里插入图片描述
答案:3个内存块构成一个队列,前3个页面依次入队(3个缺页),内存中为2-3-4; 接着要访问1号页面,内存中没有(1个缺页),1号页面淘汰,内存中为1-2-3;
接着要访问3号页面,内存中有(命中),3号页面淘汰,内存中3-1-2;
接着要访问5号页面,内存中没有(1个缺页),2号页面淘汰,内存中5-3-1;
接着要访问4号页面,内存中没有(1个缺页),1号页面淘汰,内存中4-5-3;
接着要访问3号页面,内存中有(命中),3号页面淘汰,内存中3-4-5;
接着要访问2号页面,内存中没有(1个缺页),5号页面被淘汰,内存中2-3-4;
接着要访问1号页面,内存中没有(1个缺页),4号页面被淘汰,内存中1-2-3;
因此缺页次数为:11-2= 9;
同理,内存的存储快个数为4时,计算方式一样,最后得出缺页次数为9。
具体方法: FIFO和LRU算法细节
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
答案:RSA一般为1024或2048位
运行速度:RSA<AES
安全性依赖于大数分解
RSA非对称加密算法
所以C描述不正确
在这里插入图片描述

答案:D是竞争调度的结果,而不是最后调用的进程收到数据。
A使用SO_REUSEPORT,绑定统一地址和端口。
B分别绑定 不同的网卡地址的同一端口,TCP的四元组并不冲突。
C使用fork创建子进程共享,也没有问题。
在这里插入图片描述
后台运行可以有两种方式: 1.命令前加nohup # nohup *.sh 2.命令后加& # *.sh &

在这里插入图片描述
1
1,5
5,1 (命中1)
5,1,3
5,1,3,2
1,3,2,4 (出5)
3,2,4,1 (命中1)
3,4,1,2 (下一次出3)(命中2)
命中3次 最后一次3被淘汰
在这里插入图片描述
线程是CPU调度和分派的基本单位。 进程是操作系统的基本单位。
在这里插入图片描述
fock函数会复制父进程中的所有数据,当然也包括监听套接字。
在这里插入图片描述
(a), 派生类不一定需要实现,只要需要派生类的实现object的时候才需要实现。
©, 纯虚函数是需要在该类下不实现而在派生类中实现的函数
(d), 含有纯虚函数的类一定是基类,需要派生类来实现其虚函数的功能

腾讯

在这里插入图片描述
因为,地址寄存器是32位。而系统是二进制的,1位地址可以寻找2个空间。2位可以寻找4个空间。比如用两个符号AB去代表门牌号,那么就可以有4个号,00 ,01,11,10.
所以,地址空间是n位,就能寻址2 的n次方空间。
2^32=4 X 2^10 X 2^10 X 2^10 bit=4Gb
(210bit=1Kb,210Kb=1Mb,2^10Mb=1Gb)
2位操作系统会为每个进程分配一个 4GB 大小的虚拟进程地址空间。在 32 位的操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力从 0x00000000~0xFFFFFFFF ,最大值 0xFFFFFFFF 表示的即为4GB 大小的容量。
在这里插入图片描述
在这里插入图片描述
正确答案是BCD
参考优快云 Blog和优快云了解更多。
子进程继承父进程
用户号UIDs和用户组号GIDs
环境Environment
堆栈
共享内存
打开文件的描述符
执行时关闭(Close-on-exec)标志
信号(Signal)控制设定
进程组号
当前工作目录
根目录
文件方式创建屏蔽字
资源限制
控制终端
子进程独有
进程号PID
不同的父进程号
自己的文件描述符和目录流的拷贝
子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
不继承异步输入和输出
父进程和子进程拥有独立的地址空间和PID参数。
子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
在这里插入图片描述
扇区是磁盘最小的物理存储单元,一般而言是每个扇区512B大小,但是操作通常不直接管理每一个扇区,而是通过将若干个扇区组成的一个更大的集合来去进行操作管理。
这个比扇区更大的集合,在Windows下叫做簇;在Linux下叫做块(block)。
扇区是磁盘的最小物理存储单元,最小磁盘空间单位是簇,扇区<簇
在这里插入图片描述
A:DNS就是将域名翻译成IP地址。
B:主要用UDP,但是当请求字节过长超过512字节时用TCP协议,将其分割成多个片段传输。
C:DNS协议默认端口号是53。
D:操作系统的DNS缓存:windows DNS缓存的默认值是 MaxCacheTTL,它的默认值是86400s,也就是一天。macOS 严格遵循DNS协议中的TTL。
游览器的DNS缓存:chrome对每个域名会默认缓存60s;IE将DNS缓存30min;Firefox默认缓存时间只有1分钟;Safari约为10S。
=>综上所述,选择BC。
在这里插入图片描述
正确答案是B(0.05)。

参考操作系统的系统开销比率计算了解更多。
操作系统调度耗时本身要算到时钟的时间片里。
interval-1.PNG

上图的理解是错误的。因为操作系统调度耗时本身要算到时钟的时间片里。下图所示 的理解才是正确的。

interval-2.PNG

操作系统的调度逻辑是:发生中断->处理调度->发生中断->处理调度…
一个时间片长度就是两次中断发生之间的间隔。因此,系统开销比率 = 调度耗时/时间片长度
本题中,系统开销比率 = 10/200 = 5% = 0.05
在这里插入图片描述
A
1.什么是内存对齐
假设我们同时声明两个变量:
char a;
short b;
用&(取地址符号)观察变量a,
b的地址的话,我们会发现(以16位CPU为例):
如果a的地址是0x0000,那么b的地址将会是0x0002或者是0x0004。
那么就出现这样一个问题:0x0001这个地址没有被使用,那它干什么去了? 答案就是它确实没被使用。 因为CPU每次都是从以2字节(16位CPU)或是4字节(32位CPU)的整数倍的内存地址中读进数据的。如果变量b的地址是0x0001的话,那么CPU就需要先从0x0000中读取一个short,取它的高8位放入b的低8位,然后再从0x0002中读取下一个short,取它的低8位放入b的高8位中,这样的话,为了获得b的值,CPU需要进行了两次读操作。
但是如果b的地址为0x0002,
那么CPU只需一次读操作就可以获得b的值了。所以编译器为了优化代码,往往会根据变量的大小,将其指定到合适的位置,即称为内存对齐(对变量b做内存对齐,a、b之间的内存被浪费,a并未多占内存)。
2.结构体内存对齐规则(请记住三条内存规则(在没有#pragam pack宏的情况下)
结构体所占用的内存与其成员在结构体中的声明顺序有关,其成员的内存对齐规则如下:
(1)每个成员分别按自己的对齐字节数和PPB(指定的对齐字节数,32位机默认为4)两个字节数最小的那个对齐,这样可以最小化长度。如在32bit的机器上,int的大小为4,因此int存储的位置都是4的整数倍的位置开始存储。
(2)复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,结构体数组的时候,可以最小化长度。
(3)结构体对齐后的长度必须是成员中最大的对齐参数(PPB)的整数倍,这样在处理数组时可以保证每一项都边界对齐。
(4)结构体作为数据成员的对齐规则:在一个struct中包含另一个struct,内部struct应该以它的最大数据成员大小的整数倍开始存储。如 struct A 中包含 struct B, struct B 中包含数据成员 char, int, double,则 struct B 应该以sizeof(double)=8的整数倍为起始地址。
3.实例演示
struct A
{
char a;   //内存位置: [0]
double b;  // 内存位置: [8]…[15]
int c;    // 内存位置: [16]…[19]  ----  规则1
};        // 内存大小:sizeof(A) = (1+7) + 8 + (4+4) = 24, 补齐[20]…[23]  ----  规则3
struct B
{
int a,    // 内存位置: [0]…[3]
A b,    // 内存位置: [8]…[31]  ----  规则2
char c,   // 内存位置: [32]
};        // 内存大小:sizeof(B) = (4+4) + 24 + (1+7) = 40, 补齐[33]…[39]
注释:(1+7)表示该数据成员大小为1,补齐7位;(4+4)同理。
答案二:第一个,8字节
第二个,2字节,加起来是10,对齐到12
第三个,4字节,加起来是16
第四个,8字节,加起来是24
所以一共是24字节
多看看就背住了:
32位编译器:32位系统下指针占用4字节
char :1个字节
char
(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:64位系统下指针占用8字节
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值