OS
操作系统
Tech In Pieces
这个作者很懒,什么都没留下…
展开
-
什么是Race Condition?和死锁有什么区别?
Race Condition: 多个线程同时访问相同的资源并进行读写操作(都可以动)Deadlock: 两个或者两个以上的进程在执行的过程中,因为争夺资源而造成的一种互相等待现象。(都不动)原创 2021-06-21 05:01:46 · 939 阅读 · 0 评论 -
TCP的拥塞控制方法
第一种:慢开始(slow-start)和拥塞避免(congestion avoidance) 慢开始算法就是从小到大逐渐增加发送窗口,而拥塞避免算法是让拥塞窗口缓慢的增长,即每经过一个传输轮次,拥塞窗口增加1;第二种:快重传(fast retransmit)和快恢复(fast recovery) 当发送方收到三个重复确认时就会执行“乘法减小”,即把拥塞门限减半,但是此时发送方会认为网络很有可能没有发生拥塞,所以会把拥塞窗口cwnd设置为慢开始门限,然后开始执行拥塞避免算法。总结一下 就是慢算法和拥塞避免原创 2020-11-01 01:34:09 · 740 阅读 · 0 评论 -
TCP 发送端如何控制自己的发送频率?
如何利用TCP协议进行流量控制?用滑动窗口机制(sliding windows)这种机制能够让数据传输端的发送窗口不能超过接收端给出的接收窗口的数值,这个数值是以字节为单位,而且可以根据情况动态的调整。...原创 2020-11-01 01:42:10 · 877 阅读 · 0 评论 -
TCP与UDP的区别
最大的区别:TCP这个协议保证了在收发数据之前,需要和对方建立可靠的链接(三次握手来实现)而且每次断开连接的时候 需要四次挥手来断开。而UDP,即用户数据报协议,他是一个非面向连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。总结TCP与UDP的区别:1、基于连接与无连接;(connection and connectionless)2、对系统资源的要求(TCP较多,UDP少);3、UDP程序结构较简单;4、流模式与数据报模式原创 2020-11-01 02:20:49 · 145 阅读 · 0 评论 -
乐观锁和悲观锁
乐观锁是基于假设每次拿数据的时候别人都不会修改,而悲观锁则正好相反。所以悲观锁在每次拿数据的时候都会上锁,这样其他线程就拿不到这个数据。而乐观锁则是每次拿数据认为其他线程不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间有没有其他线程去更新这个数据。适用场景:乐观锁适用于多读场景,悲观锁适用于多写场景实现方式:乐观锁可以用版本号机制或者CAS算法实现CAS操作逻辑:如果内存位置的值等于预期的值,那么就将该位置更新为新的值,否则不用进行任何操作,如果操作不成功,就会一直重试,直到成功。版本号原创 2020-11-02 01:42:38 · 117 阅读 · 0 评论 -
什么是死锁?(Dead lock) 如何解决死锁问题?
different process requests for the same resource and they both wait others to make a move first.死锁发生需要有什么条件?互斥,就是在一段时间内某一资源自能由一个进程占有请求和保持,就是说在当前进程已经占有资源的情况下,还在请求其他已经被其他进程占有的资源,就是既不得不到想要的,也不愿意放开已经拥有的。不剥夺 就是说进程已经获得资源 自能由自己释放 其他人夺不走环路等待 意思是死锁发生的时候 必然存在一原创 2020-11-02 01:43:56 · 740 阅读 · 0 评论 -
什么是操作系统内存的分段页管理?
这个跟虚拟内存有关:分段分页管理是操作系统为了管理好计算机内存资源而出现的。如果没有这个技术的话,那么我们每一次程序运行,都要从内存中分配出足够多的连续内存,然后把整个内存装载进去。如果内存没有那么大的连续内存的话,程序就无法运行。除此之外,还可能存在地址空间不隔离,程序运行时候的地址不确定。分段页管理就是用来解决上述问题的,分开来说的话,分段技术他把虚拟地址空间映射到了物理地址空间,并且我们写的程序操作的是虚拟地址。也就是说 分段能够解决程序之间的地址空间不隔离以及程序运行的时候地址不确定的问题。因为原创 2020-11-02 02:06:00 · 267 阅读 · 0 评论 -
进程和线程有什么区别?(Process and Threads)进程之间和线程之间是如何通信的?
一个应用程序可以有多个进程, 一个进程可以包含多个线程。两者的区别:一句话来说就是这两者根本就不是同一层级的概念 所以全部都是区别。但是,两者存在下列区别:首先是在系统开销上,进程要比线程大。因为在创建或撤消进程时,系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。第二点是在资源管理方面的不同,进程有独立的地址空间 因此一个进程崩溃不会对其他进程产生影响。而线程只是一个进程中的不同执行路径,而线程没有独立的地址空间,一个线程崩溃那么所对应的进程也会崩溃。所以多进程的程序比多原创 2020-11-02 01:44:13 · 437 阅读 · 0 评论