1、RLocker:这个方法的作用是为读操作返回一个Locker接口的对象。它的Lock方法会调用RWMutex的RLock方法,它的Unlock方法会调用RWMutex的RUnlock方法。(哲学家就餐问题)。
2、要想解决这个问题,网络通讯的设计者们只能通过容错这个概念最大程度的减小(但无法消除)通讯中的错误的发生。其中比较简单的办法可以是奇奇将军提出进攻时间,并派100个信使将这个信息带给小村将军。奇奇将军无论是否收到回复都会在约定时间内出兵进攻,而小村将军只要收到一个信使传来的信息,无论是否有收到奇奇将军的回复,都将在约定时间内出兵进攻。
3、 深入理解单处理器计算机系统的组织结构、工作原理、互连结构,具有完整的计算机系统整机的概念;
4、运行这个程序,你同样也会发现程序可以顺利执行下去,并不会出现死锁的现象。
5、² 程序装入与链接、逻辑地址与物理地址空间、内存保护
6、这里的常量rwmutexMaxReaders,定义了最大的reader数量
7、这个故事的主角依旧是奇奇和小村,不过他们不再是旅行家和程序员,而是两名威风凌凌的将军,他们都效忠于C军队。
8、 计算机网络分层结构; 计算机网络协议、接口、服务等概念; ISO/OSI参考模型和TCP/IP模型。
9、(1)了解PN结的结构与原理,掌握PN结的伏安特性
10、² 实现临界区互斥的基本方法:软件实现方法、硬件实现方法
11、死锁只有在四个条件同时满足时发生,预防死锁必须至少破坏其中一项。
12、 A等待B,B等待C,C等待A,陷入了无限循环(哲学家就餐问题)
13、在实际使用RWMutex的时候,如果我们在struct中使用RWMutex保护某个字段,一般会把它和这个字段放在一起,用来指示两个字段是一组字段。除此之外,我们还可以采用匿名字段的方式嵌入struct,这样,在使用这个struct时,我们就可以直接调用。
14、字段 wLock: 用于 writer 之间的互斥锁
15、每个哲学家需要左手的筷子和右手的筷子,status代表哲学家的状态(冥想、饿了、就餐中),他有一种状态就是持有一根筷子并请求另一根筷子。
16、相邻两个盘子之间放有一把叉子,餐桌如上图所示。
17、每两个哲学家中间有一个叉子,而他们每个人必须用两个叉子吃饭,也就是说必须在左右两边的叉子都空闲,并且拿起来的时候才能开始吃饭。吃饭的哲学家必须在吃一段时间之后停下来思考,而没拿到叉子吃饭的哲学家则在思考的同时等待别人用完叉子。假设食物是无限量供应的,请问怎么做才能不让他们中任何一个人饿死?
18、互斥(mutualexclusion):资源只能同时分配给一个线程,无法多个线程共享。资源具有排他性,孔子和老子的关系再好,也不允许他们俩一起拿着一根筷子同时吃。
19、第二段代码几乎与第一段代码完全相同,但在for语句中使用”;”—join操作符将两个等待餐具的语句连接起来。该方式下,哲学家必须等待两根筷子同时可用时才可以拿起。
20、 网络层设备: 路由器的组成和功能; 路由表与路由转发。
21、在实际的计算机问题中,缺乏餐叉可以类比为缺乏共享资源。一种常用的计算机技术是资源加锁,用来保证在某个时刻,资源只能被一个程序或一段代码访问。
22、² 磁盘调度算法:先来先服务(FCFS)、最短寻道时间优先(SSTF)、电梯算法(SCAN)
23、“如果哲学家在拿不到右边叉子时等待一段随机时间,而不是等待相同的时间。
24、Diningphilosophersproblem是在计算机科学中的一个经典问题,用来演示在并发计算中多线程同步(Synchronization)时产生的问题。
25、 输入/输出:I/O编制的方法,编程I/O、程序中断、DMA的原理及控制机制。
26、“我在桌上放有四份礼物A、B、C和D。A和B是普通奖,C和D是大奖。得奖的方式很简单。如果你做一个正确的声明(比如1+1=2)我就给你A或者B作为奖励。如果你做一个错误的声明(比如1+1=3)我就给你C或者D作为奖励。”
27、RLocker()用于返回一个实现了Lock()和Unlock()方法的Locker接口
28、 数据链路层设备: 网桥的概念及其基本原理; 局域网交换机及其工作原理。
29、这样发生互锁的可能性就很小了,事情就可以继续了。”
30、 在执行Lock,Unlock,Rlock,RUnlock时需要考虑什么问题?
31、请自行查找lock,tryLockJava中Lock,tryLock,lockInterruptibly有什么区别?
32、/*互斥信号量,实现对状态变量S的互斥访问*/
33、可以看到,Incr方法会修改计数器的值,是一个写操作,我们使用Lock/Unlock进行保护。Count方法会读取当前计数器的值,是一个读操作,我们使用RLock/RUnlock方法进行保护。Incr方法每秒才调用一次,所以,writer竞争锁的频次是比较低的,而10个goroutine每毫秒都要执行一次查询,通过读写锁,可以极大提升计数器的性能,因为在读取的时候,可以并发进行。如果使用Mutex,性能就不会像读写锁这么好。因为多个reader并发读的时候,使用互斥锁导致了reader要排队读的情况,没有RWMutex并发读的性能好。
34、只有其中有一个进程同时竞争到了2台机器,才能完成工作。如果5个进程一起竞争,可能发生死锁的情况是:每个进程各自竞争到了一台机器,都在等待其他进程释放资源。
35、哲学家就餐问题是在计算机科学中的一个经典问题,用来演示在并行计算中多线程同步时产生的问题。在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼,霍尔重新表述为哲学家就餐问题。这个问题可以用来解释死锁和资源耗尽。
36、原因:很显然,只有四个,才不会把五个资源全部占用,这样就始终至少有一个进程可以得到全部资源。
37、当一个程序想要使用的资源已经被另一个程序锁定,它就等待资源解锁。当多个程序涉及到加锁的资源时,在某些情况下就有可能发生死锁。例如,某个程序需要访问两个文件,当两个这样的程序各锁了一个文件,那它们都在等待对方解锁另一个文件,而这永远不会发生。
38、如果你想去海滩就餐,打扮的漂漂亮亮(不要穿工作服)但也不要太讲究。
39、 TCP段; TCP连接管理; TCP可靠传输; TCP流量控制与拥塞控制。
40、这位旅行家叫做奇奇,他的每一次出行都肩负着特殊的使命:推销产品。他的日记本里记录着一系列的目标城市和城市之间的距离。但他遇到了一个难题,为了提高推销的效率,他需要知道从起点出发,访问每一座城市一次并回到起始城市的最短路径。这个问题听起来很简单,但是想要得到一个优化的解法却相当困难。
41、(2)利用逻辑代数和卡诺图对逻辑函数进行转换与化简