操作系统
Mr.Jcak
这个作者很懒,什么都没留下…
展开
-
互斥量和临界区的区别
互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。互斥量在系统的任何进程里都是可见的,也就是说,一个进程创建了一个互斥量,另一个进程试图去获取该锁是合法的。然而,临界区的作用范围仅限于本进程,其它进程无法获取该锁。除此之外,临界区具有和互斥量相同的性质。...原创 2021-07-26 17:48:30 · 1397 阅读 · 0 评论 -
TestAndSet实现互斥锁
包含lock函数和unlock函数。首先定义一个全局变量flag,flag=1表明该锁已经锁住,flag=0表明锁没有锁住。lock函数里通过while循环不断检测flag是否等于1,如果等于1就一直循环并将flag设置为1。unlock()方法就将flag置为0。static int flag=0;void lock(){ while(TestAndSet(&flag,1)==1); //flag=1;}void unlock(){ flag=0;}in原创 2021-07-26 15:17:18 · 1103 阅读 · 0 评论 -
进程同步,异步,互斥
同步同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。一个进程的执行依赖于另一个协作进程的消息或信号,当一个进程没有得到来自于另一个进程的消息或信号时则需等待,直到消息或信号到达才被唤醒。简单来说,同步就是指在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事例如,输入进程A通过单缓冲向进程B提供原创 2021-07-26 11:01:06 · 586 阅读 · 0 评论 -
IO密集型 CPU密集型 多线程 多进程
IO密集型可以多线程。比如有一个任务,执行10万次循环,每次都打印hello world,然后休眠1秒,如果单线程,需要10万秒完成,如果10个线程,就只需要1万秒。CPU密集型尽量少点线程。还是上面那个任务,不同的是取消休眠,如果是单线程,几乎一下完成,如果是多线程会慢很多,而且随着线程数越多,速度会越慢,因为线程的切换是要时间的。所以要不要多线程就看IO要不要很花时间。...原创 2021-06-27 18:09:34 · 2626 阅读 · 0 评论 -
TLB简介
TLB - translation lookaside buffer快表,直译为旁路快表缓冲,也可以理解为页表缓冲,地址变换高速缓存。由于页表存放在主存中,因此程序每次访存至少需要两次:一次访存获取物理地址,第二次访存才获得数据。提高访存性能的关键在于依靠页表的访问局部性。当一个转换的虚拟页号被使用时,它可能在不久的将来再次被使用到。TLB是一种高速缓存,内存管理硬件使用它来改善虚拟地址到物理地址的转换速度。当前所有的个人桌面,笔记本和服务器处理器都使用TLB来进行虚拟地址到物理地址的映射。使用原创 2021-06-27 17:53:04 · 8476 阅读 · 0 评论