计算机原理和操作系统
天马行空_online
看看世界的繁华
展开
-
mutex和semaphore的区别
mutex,一句话:保护共享资源。 典型的例子就是买票: 票是共享资源,现在有两个线程同时过来买票。如果你不用mutex在线程里把票锁住,那么就可能出现“把同一张票卖给两个不同的人(线程)”的情况semaphore的主要用途,一句话:调度线程。保证资源的顺序执行。作者:二律背反链接:https://www.zhihu.com/question/47704079/answer/135859188来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。有...转载 2020-09-16 16:54:13 · 872 阅读 · 0 评论 -
内存泄漏和检测方式
内存泄漏和后果 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。最难捉摸也最难检测到的错误之一是内存泄漏,即未能正确释放以前分配的内存的 bug。 只发生一次的小的内存泄漏可能不会被注意,但泄漏大量内存的程序或泄漏日益增多的程序可能会表现出各种征兆:从性能不良(并且逐渐降低)到内存完全用尽。 更糟的是,泄漏的程序可能会...转载 2020-09-16 15:30:15 · 369 阅读 · 0 评论 -
Epoll,select/poll的区别和特点
在linux中有三个IO复用的函数或者说模型。这个就是poll,select/poll。他们为了节约CPU的资源,避免大量的时间进行等待IO的数据,为了让CPU可以同时服务多个IO口,然后就先后出现了select poll,epoll等三中IO复用的方式。 IO复用就是CPU的分时复用去处理IO数据,由于CPU的速度比IO读取速度快很多。所以,有的情境性下,当CPU需要处理多个IO的时候,就类似于一个保安监控多个地区的情况一样,那里有状况就去处理,没有状况就在监控...原创 2020-07-26 03:34:17 · 223 阅读 · 0 评论 -
window下使用CreatThread()创建线程
Linux 下创建线程 线程是CPU运行的最小的调度单位,一个进程里面可以有多个并发的线程。但是至少有一个线程。在linux里面真正的线程这个东西,有的至少轻量级的进程,linux里面的线程和进程的创建其实都是fork()函数和exec() 函数对clone()函数不同的封装实现的,他们通过传入不同的参数实现了子进程和父进程在一些资源上共享权限,地址空间、文件系统、打...原创 2020-03-21 18:27:50 · 1700 阅读 · 0 评论 -
fork()函数和僵尸进程和孤儿进程
Linux 下通过fork()函数来产生新的进程,新的进程和原来的进程的各种数据和代码几乎是一模一样的,但是创建了新的进程之后,这个两个的进程就是异步的,指不定是谁先结束,这个时候就有可能父进程先结束,子进程没有结束,也有可能子进程先结束,然后父进程在结束。这个是九有孤儿进程和僵尸进程的问题。 首先,每个进程在运行的时候回有各自的pid 这个pid 是 是表示该进程的唯一的ID 号的...原创 2020-03-21 00:48:24 · 226 阅读 · 0 评论 -
Windows使用CreatProccess创建一个进程问题
问题说明:在Windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用相关的系统调用(CreateProccess,即系统API)实现一个包括“进程创建,文件读写”的应用程序。有一个文本文件CommandList.txt,第一行是说明性文字:本文件最后一次打开和运行日期是20190407。第二行开始每行是一个可执行程序的名称(含路径)。编写一个应用程序能打开该文件,并顺序执行其中的...原创 2020-03-20 23:09:03 · 1194 阅读 · 0 评论 -
浮点数的加减法
最近在偶然学习了浮点数的加减法,记录一下浮点数的定义浮点数将一个数的范围和精度分开记录的一种数据格式,目的是为了扩大数据的范围。计算机里面的数据记录都是二进制的,浮点数的相当于是将二进制的数的小数点移来移去。数据范围就是记录小数点位置的,一般的格式是:按IEEE754记录的标准,浮点数有32位浮点数和64位浮点数。好像是一个是称为单精度,一个称为双精度第一个S表示...原创 2020-02-18 02:43:11 · 3808 阅读 · 0 评论 -
数据对齐存储
目录计算机里面内存的数据存储结构以及为什么要边界对齐行边界存储结构的存储分配规则:数据的大小端问题参考文献计算机里面内存的数据存储结构以及为什么要边界对齐计算机里面的从主存的是有一个个基本的存储单元构成了,每个存储单元存储的二进制数叫做存储字长目前一般的存储字长都是64位。同时计算机的主存都是按照字节编址,同时一般来说计算机的CPU只能访问偶数的地址这种问...原创 2020-02-18 17:05:41 · 6191 阅读 · 4 评论 -
计算机的内存结构和原理
计算机的内存有动态的SDRAM 和SRAM其中SRAM是指静态内存,内部通过两个自锁的结构保持的结构保持输入的数据,SDRAM是通过电容存储电荷的方式进行存储熟数据,由于电荷的放电特性,需要固定的时间进行充电。SRAM结构要复杂一点,实现的方式需要更多的晶体管,所以功耗大,但是速度快,。SDRAM实现的方式要简单一点,但是需要刷新充电,,同时行列的地址复用,需要更多的时间读取数据,同时读取数据...原创 2020-02-19 18:32:06 · 3441 阅读 · 0 评论 -
计算机Cache基本原理
计算机里面的内存一般情况下速度是比CPU要慢的多,所以为了解决这个问题,大家都想了很多办法,其中有个是在CPU和内存之间增加一个高速缓冲器Cache的办法。目录局部性原理 结构和流程实现方式Cache的映射方法(1)Fully-Associated 全相连映射(2)Direct-Mapped 直接相连 (3)Set-Associated ...原创 2020-02-22 02:08:17 · 1784 阅读 · 1 评论 -
虚拟存储器
计算机的CPU在运行过程中都是访问内存的,但是如果一个程序的大小超过了内存的大小怎么办、为了解决这个问题。提出了虚拟存储器的概念。让计算机可以访问的内存空间比实际的物理主存要大。 主要的实现思路和Cache的原理是差不多的。也是利用局部性原理,将部分可能会访问的大容积慢速的辅助存储空间的数据存放到主存中。因为我们每次访问的主存数据不会太大,我们不需要提供完整的主存数据,只需要把需...原创 2020-02-26 19:58:16 · 304 阅读 · 1 评论