2020-复习

一、程序设计

1.编写一个函数实现十进制向二进制转换的功能,函数的输入为一个十进制数,输出为一个二进制数,如输入37,输出为100101

#include <stdio.h>
// 编写一个函数实现十进制向二进制转换的功能,函数的输入为一个十进制数,输出为一个二进制数,如输入37,输出为100101
void transfer(int num){
    
    
    if(num>=2)
        transfer(num/2);
    printf("%d",num%2);
    return;
}
int main(void) {
    
    
    int num = 37;
    transfer(num);
    return 0;
}

2.请编写一个排序算法,实现对数字x[n]的排序,要求时间复杂度不高于O(nlogn)。

#include <stdio.h>
// 快速排序
int partition(int x[],int begin,int end){
    
    
    int pivot = x[begin];
    while (begin<end) {
    
    
        while (begin<end&&x[end]>=pivot) end--;
        x[begin] = x[end];
        while (begin<end&&x[begin]<=pivot) begin++;
        x[end] = x[begin];
    }
    x[begin] = pivot;
    return begin;
}

void Qsort(int x[],int begin,int end){
    
    
    if(begin<end){
    
    
        int mid = partition(x,begin,end);
        Qsort(x,begin, mid-1);
        Qsort(x,mid+1,end);
    }
}

int main(void) {
    
    
    int x[5] = {
    
    1,3,5,2,4};
    Qsort(x,0,4);
    for (int i=0;i<5;i++) {
    
    
        printf("%d ",x[i]);
    }
    return 0;
}

二、操作系统

3.有周期性实时任务A和B:任务A执行时间为10ms,每20ms执行一次;任务B执行时间为25ms,每50ms执行一次。0时刻,A1和B1同时到达。各任务的截止时间是下次同类任务到达之前

在这里插入图片描述

(1)按照周期性任务的一般原则,请给出A3和B2的截止时间。

60和100

(2)请给出0时刻A1任务和B1任务的松弛度。

10和25

(3)按照最低松弛度优先算法,画出各任务的执行过程图。
在这里插入图片描述

4.假定一个进程中有三个线程P、Q和R,这三个线程都调用函数执行特定功能,之后更新一个全局(共享)变量count,如下图所示,请定义信号量并协调这三个进程按如下顺序执行:QS1早于PS1执行;PS1早于RS1执行;QS2晚于RS1执行;PS2和RS2晚于QS2执行。请定义合适的信号量或锁机制在P、Q和R中插入代码,实现上述执行顺序及对count的更新。
在这里插入图片描述
执行顺序如下,并且保持对count的互斥访问。

QS1
PS1
RS1
QS2
PS2
RS2

先定义全局变量

semaphore p1 = 0,p2 = 0,r1 = 0,r2 = 0,q2 = 0,mutex = 1;

P:

p(p1)
PS1()
v(r1)

p(p2)
PS2()

p(mutex)
count = count + 3
v(mutex)

Q

QS1()
v(p1)

p(q2)
QS2()
v(p2)
v(r2)

p(mutex)
count = count - 2
v(mutex)

R

p(r1)
RS1()
v(q2)

p(r2)
RS2()

p(mutex)
count = count + 5
v(mutex)

三、计算机网络

6.描述用户在浏览器输入www.sict.ac.cn后到页面在浏览器中显示经历的过程。

1、浏览器根据输入的域名进行DNS解析
2、根据解析到的IP地址访问对应的服务器
3、TCP3次握手建立连接
4、用户申请资源
5、在收到申请后,给用户分配资源
6、浏览器根据得到的资源进行解析和渲染
7、TCP4次挥手进行告别,断开连接

7.某公司在甲城市设总部,在乙城设分公司。总部有260台需要联网设备进行宽带上网,请回答以下问题:
(1)1个C段固定IP如何实现总部260台设备都能上网。需要加什么设备,实现什么功能?
(2)如果要实现总部260台与分公司20台设备都能互相访问,如果实现分公司和总部的网络规划,需要加什么设备,实现什么功能?
(3)总部260台设备,加上预留的50台空间,如果将这些设备地址都规划到一个局域网(LAN)中,局域网的地址、子网掩码该如何规划?
一个局域网中设备过多会带来什么问题,如何解决?
(4)一个局域网中设备过多会带来什么问题,如何解决?

(这题答案不太确定)
(1)需要加NAT(网络地址转换)

(3)一共310台设备,主机位数需要9位才能表示( 2 9 = 512 > 310 2^9 = 512>310 29=512>310)所以一共32位,前23位为子网号,后9位是主机号。子网掩码应该是255.255.254.0
(4)同一个冲突域中主机数太多,发生冲突的概率会增大,可以使用网桥或者交换机来隔离冲突域。

猜你喜欢

转载自blog.csdn.net/Kilig___/article/details/129665679