牛客网选择题之并发

  1. 在分时操作系统中,进程调度采用()算法
    时间片轮转
  2. 某系统中有 3 个并发进程,都需要同类资源 4 个,试问该系统不会发生死锁的最少资源数是:9
    有n个进程,共享的同类资源数为m,则避免死锁的最少资源数是n .(m-1)+1。
    3个进程需要各需要占用3个资源,因此当有9个资源时,刚好够分别分给这3个进程,但是这3个进程都还需要第4个资源,因此至少需要10个资源,才不会使其陷入死锁。有n个进程,共享的同类资源数为m,则避免死锁的最少资源数是n *(m-1)+1。3个进程需要各需要占用3个资源,因此当有9个资源时,刚好够分别分给这3个进程,但是这3个进程都还需要第4个资源,因此至少需要10个资源,才不会使其陷入死锁。
  3. 假设下面的函数foo会被多线程调用,那么让i、j、k三个变量哪些因为线程间共享访问需要加锁保护.()
int i = 0;
void foo()
{static int j = 0;int k = 0;i++; j++; k++;
}

多线程调用时要进行保护时,主要是针对全局变量和静态变量的,函数内的局部变量不会受到影响。
这里i是全局变量,j是局部静态变量,所以 要进行保护。
4. 一个全局变量tally,两个线程并发执行(代码段都是ThreadProc),问两个线程都结束后,tally取值范围为 [50,100]

int tally=0;//全局变量void ThreadProc(){for(int i=1;i<=50;i++)tally+=1;
}
  1. 多个线程可同时操作一个数据,为了保证该数据的准确性,可将操作该数据的部分改为:
    同步

  2. 下列关于轮询任务调度和可抢占式调度区别描述错误的是?
    抢占式调度优点是其简洁性,它无需记录当前所有连接的状态
    轮询调度不利于后面的请求及时得到响应
    抢占式调度有利于后面的高优先级的任务也能及时得到响应
    抢占式调度实现相对较复杂且可能出现低优先级的任务长期得不到调度

  3. 下面关于并行和并发的区别,说法错误的是?
    并发计算是一种程序计算的形式,在系统中,至少有两个以上的计算在同时运作,计算结果可能同时发生
    并行计算指许多指令得以同时进行的计算模式。在同时进行的前提下,可以将计算的过程分解成小部份,之后以并发方式来加以解决
    并行是同时发生的多个并发事件,并发事件之间一定要同一时刻发生
    并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生

  4. 下列哪种操作可能带来死锁?
    lock(m1) lock(m2) unlock(m1) unlock(m2)
    lock(m1) lock(m2) unlock(m2) lock(m2) unlock(m1) unlock(m2)
    lock(m1) lock(m2) unlock(m1) lock(m1) unlock(m2) unlock(m1)
    lock(m1) lock(m2) unlock(m1) unlock(m2) lock(m1) unlock(m1)

假设有两个线程,线程1执行到lock(m1),lock(m2),unlock(m1),此时线程1持有锁m2,想要获取锁m1;线程2执行到lock(m1),此时线程2持有锁m1,想要获取锁m2。两个线程都拿着对方想要得到的锁,造成死锁。

  1. 列关于多线程,多进程,多任务的区别与关系描述正确的有?
    线程是指进程内的一条执行线路,或者说是进程中可执行代码的单独单元,它是操作系统的基本调度单元。
    一个进程至少有一个线程,即主线程,也可以有多个线程协同工作。
    进程从主线程开始执行,进而可以创建一个或多个附加线程来执行该进程内的并发任务,这就是基于线程的多任务

    上述描述都是错误的

10.轮询任务调度与抢占式任务调度的区别?

抢占式调度优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度
轮询调度优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度
轮询调度实现相对较复杂
抢占式调度实现相对较复杂

11.有两个线程,最初 n=0,一个线程执行 n++; n++; 另一个执行 n+=2; 问,最后可能的 n 值?
1
2
3
4

第一种可能情况:现在假设两个线程没有并行顺序执行的那么结果显然是 4。
第二种可能情况:再假设现在第一个n++ 已经执行完了 但是结果还没有写回内存 这个时候 n+=2 已经全部执行完 2 写进了内存 结束 然后回到n++的写回操作 这个时候内存就从2被改回1了,后面再来一次n++ 结果就为2。
第三种可能情况:第n+=2 先读取n的值到寄存器 即0入寄存器 这个时候被中断 第一个n++开始执行 并直到结束 内存被改成了1 ,然后 n+=2 继续执行 结束后内存变为2 第二个n++再执行 结果就是3了
12.数据库以及线程发生死锁的原理是什么?
资源分配不当
进程运行推进的顺序不合适
系统资源不足
进程过多
13.同步机制应该遵循哪些基本准则?
空闲让进
忙则等待
有限等待
让权等待
14.关于进程和线程,下面说法正确的是?
线程是资源分配和拥有的单位
线程和进程都可并发执行
在linux系统中,线程是处理器调度的基本单位
线程的粒度小于进程,通常多线程比多进程并发性更高

不同的线程共享相同的栈空间
15.两个线程并发执行以下代码,假设a是全局变量,初始为1,那么以下输出______是可能的?(都有可能)
3 2
2 3
3 3
2 2

16.产生系统死锁的原因是由于()
进程释放资源
一个进程进入死循环
多个进程竞争,资源出现循环等待
多个进程竞争共享型设备

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网选择题之linux

1.在RHEL5系统中&#xff0c;小王希望将他执行的ls命令的输出结果保存在当前目录下文件output.ls中&#xff0c;以供日后进行分析和使用&#xff0c;但要求不覆盖原文件的内容&#xff0c;他应该使用的命令是&#xff08; &#xff09; ls>>output.ls > …

C++ STL容器之 list 初步

#include <iostream> #include<algorithm> #include <string> #include <list> using namespace std;//3.6.4.1 list构造函数 //list<T> lstT;//list采用采用模板类实现,对象的默认构造形式&#xff1a; //list(beg, end);//构造函数将[beg, end…

C++ STL容器值set

/* 3.7.2 set常用API 3.7.2.1 set构造函数 set<T> st;//set默认构造函数&#xff1a; mulitset<T> mst; //multiset默认构造函数: set(const set& st);//拷贝构造函数 3.7.2.2 set赋值操作 set & operator(const set & st);//重载等号操作符 swap(st)…

C++ STL容器之map 简单使用

3.8.2.1 map构造函数 map<T1, T2> mapTT;//map默认构造函数: map(const map &mp);//拷贝构造函数3.8.2.2 map赋值操作 map& operator(const map &mp);//重载等号操作符 swap(mp);//交换两个集合容器3.8.2.3 map大小操作 size();//返回容器中元素的数目 empty…

Manacher算法图解

看了好久的Manacher算法&#xff0c;觉得还是要自己画一遍&#xff0c;自己把代码写一遍才能理解 下面分享一下&#xff0c;如果有错&#xff0c;希望指正 简陋版本的&#xff0c;但是他基本只是做到了求取最长回文字符串&#xff0c;严格来说它并不是Manacher’s Algorithm-…

Flink 客户端操作命令及可视化工具

Flink提供了丰富的客户端操作来提交任务和与任务进行交互。下面主要从Flink命令行、Scala Shell、SQL Client、Restful API和 Web五个方面进行整理。 在Flink安装目录的bin目录下可以看到flink&#xff0c;start-scala-shell.sh和sql-client.sh等文件&#xff0c;这些都是客户…

ySQL挑战搭建一个简易的成绩管理系统的数据库

文章为自己搜索网上资源&#xff0c;再在这里进行整理&#xff0c;所以标注为转载 [实验步骤](https://www.shiyanlou.com/courses/reports/1347700) 总结做实验注意事项&#xff1a; 1.添加主键 2.主键和外键的关系 3.注意自增的书写添加 mysql 如何修改、添加、删除表主键…

网络之DNS协议图解

DNS是计算机域名系统 (Domain Name System) 域名系统采用类似目录树的等级结构。 域名服务器是指保存有该网络中所有主机的域名和对应IP地址&#xff0c;并具有将域名转换为IP地址功能的服务器。 域名服务器为客户机/服务器模式中的服务器方&#xff0c;它主要有两种形式&am…

C++ 谓词,

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> #include <algorithm> using namespace std;class GreaterThen20 { public:bool operator()(int val){return val > 20;} };//一元谓词 void test01() {vector<int>v;v.push…

网络之ARP

地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。 主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确定目标的物理地址…

C++ 内建函数对象

STL内建了一些函数对象。分为:算数类函数对象,关系运算类函数对象&#xff0c;逻辑运算类仿函数。这些仿函数所产生的对象&#xff0c;用法和一般函数完全相同&#xff0c;当然我们还可以产生无名的临时对象来履行函数功能。使用内建函数对象&#xff0c;需要引入头文件 functi…

网络之ICMP协议

ICMP 主要功能&#xff1a; 确认IP包是否成功送达目标地址通知在发送过程当中IP包被废弃的具体原因改善网络设置等 在IP通信中如果某个IP包因为某种原因未到达目标地址&#xff0c;那么这个原因由ICMP通知。 过程&#xff08;图解TCP/IP&#xff09; ICMP类型 常见的&am…

C++ 常用算法之遍历

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> #include <vector> #include <functional> using namespace std;/* 遍历算法 遍历容器元素 param beg 开始迭代器 param end 结束迭代器 param _callback 函数回调或者函数…

网络之NAT协议

由来&#xff1a; 2011年2月3日中国农历新年&#xff0c; IANA对外宣布&#xff1a;IPv4地址空间最后5个地址块已经被分配给下属的5个地区委员会。2011年4月15日&#xff0c;亚太区委员会APNIC对外宣布&#xff0c;除了个别保留地址外&#xff0c;本区域所有的IPv4地址基本耗尽…

C++ 常用查找算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> using namespace std; #include <vector> #include <string> #include <functional> /* find算法 查找元素 param beg 容器开始迭代器 param end 容器结束迭代器 para…

CentOS7卸载并安装mysql教程

MySQL安装 先卸载其他 删除Mysql yum remove mysql mysql-server mysql-libs mysql-server;find / -name mysql 将找到的相关东西delete掉(rm -rf /var/lib/mysql)&#xff1b;rpm -qa|grep mysql(查询出来的东东yum remove掉) rm /etc/my.cnf查看是否还有mysql软件&#x…

C++ 常用排序算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <algorithm> #include <vector> #include <functional> #include <ctime> /* merge算法 容器元素合并&#xff0c;并存储到另一容器中 这两个容器 必须也是…

排序稳定性的意义

首先&#xff0c;为什么会有排序算法稳定性的说法&#xff1f;只要能排好不就可以了吗&#xff1f; 看例子 第1行是数字2 记作 1 2 第2行是数字4 记作 2 4 第3行是数字2 记作 3 2 排序后的结果&#xff08;如果看不懂命令的意思&#xff0c;参照这个博客&#xff09; 那么引入…

C++ 常用拷贝和替换算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std;/* copy算法 将容器内指定范围的元素拷贝到另一容器中 param beg 容器开始迭代器 param end 容器结束迭代器 p…

防火墙的基础知识入门

文章目录防火墙基于实现方式&#xff0c;防火墙的发展分为四个阶段:Linux 环境中主要的防火墙形式TCP wrappers~~详解~~ 粗解Tcp wrappers的认识它的基本过程是这样的&#xff1a;iptable攻击和防御DDOS 攻击常见的可能受到 DDOS 攻击体现的症状有&#xff1a;而常见的 DDOS 攻…