Linux
问卿至
这个作者很懒,什么都没留下…
展开
-
页面置换算法
比较常见的内存替换算法有:FIFO,LRU,LFU,LRU-K,2Q。1、FIFO(先进先出淘汰算法)思想:最近刚访问的,将来访问的可能性比较大。实现:使用一个队列,新加入的页面放入队尾,每次淘汰队首的页面,即最先进入的数据,最先被淘汰。弊端:无法体现页面冷热信息2、LFU(最不经常访问淘汰算法)思想:如果数据过去被访问多次,那么将来被访问的频率也更高。实现:每个数据块...原创 2019-08-12 10:14:29 · 193 阅读 · 0 评论 -
gcc和g++的区别
共同点:都可以用来编译后缀名为:.c 和.cpp文件。gcc是鼻祖,后来才出现g++;不同点:1.g++会自动链接c++的编译库:比如algorith,string,vector等。2 .gcc会根据后缀名(.c 和.cpp)自动识别是C文件还是C++ 文件,而g++会均认为是C ++文件。3. gcc编译文件少了许多宏,而g++编译文件多了许多宏,类如#defi...原创 2019-08-07 12:39:33 · 142 阅读 · 0 评论 -
用户态切换到内核态(补充)
刚刚看了别的博文,才知道不是只有系统调用才切换到内核态,还有别的操作可以切换到内核; 1.系统调用 这是用户态进程主动要求切换到内核的一种方式,用户态进程通过系统调用申请使用操作系统提供的的服务完成工程的过程,比如fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放了一个中断来实现的,例如Linux的int&a...原创 2019-08-07 10:12:35 · 383 阅读 · 0 评论 -
从用户态切换到内核态
在Linux系统中,每个系统调用被赋予一个系统调用号。这样通过这个系统调用号就可以关联系统调用。当用户空间执行的进程执行一个系统调用的时候,这个系统调用号就告诉内核需要调用哪个。 内核记录了系统调表中所有已注册过的系统调用的列表,这个表为每一个有效的系统调用指定了唯一的系统调用号。 用户空间程序无法完成的代码。它们不能直接调用内核的中的函数,因为内核驻留在受保...原创 2019-08-07 09:45:06 · 1124 阅读 · 0 评论 -
详解虚拟内存
在x86系统以前,没有虚拟地址空间这种说法。那么在X86系统没有发布之前,程序是这样运行的:假如我们有三个程序,程序A,B,C,程序A运行的过程中需要10M内存,程序B运行的过程中需要100M内存,而程序C运行的过程中需要20M内存。如果系统同时需要运行程序A和B,那么早期的内存管理过程大概是这样的,将物理内存的前10M分配给A,接下来的10M-110M分配给B。这...原创 2018-11-05 19:36:20 · 303 阅读 · 0 评论 -
静态库和动态库
1.何为库 库文件是预先编译好的方法的集合。 在windows系统下,静态库的扩展名为:.lib 动态库的扩展名为:.DLL 在Linu系统下,静态库的扩展名为:.a, 动态库的名称为:.so2.特点 静态库:在链接的过程中,连接器从库文件中取得所需的代码,复制到生成的可执行文件中。因此,静态库在程序的链接阶段被复制到程序中,...原创 2019-08-05 20:42:10 · 317 阅读 · 0 评论 -
操作系统的内存管理---分区,分段,分页,伙伴系统,交换分区
1.内存管理方法 内存管理主要包括虚拟地址,地址变换,内存分配和回收,内存扩充,内存共享和保护等功能。2.分区存储管理方式 为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区存储管理方式,分区内存管理是把内存分为一些大小相等或不等的分区,操作系统占用一部分,其余的分区由应用程序使用,每一个应用程序占用一个或多个分区。分区式内存管理虽然可以支持并发,但...原创 2019-07-28 17:01:20 · 1915 阅读 · 0 评论 -
进程之间的通讯
概念 在每次执行一个程序时,对于操作系统来说就是创建一个进程,在这个过程中,伴随着资源的分配和释放。可以认为进程是一个程序的一次执行过程。 进程的用户空间是相互独立的,一般而言是不能相互访问的。但是多数情况下进程之间需要相互通讯,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信协调他们的行为。应用场景 数据传输:一个进程需要将它的数据发送给另一个进程...原创 2019-07-30 19:55:53 · 177 阅读 · 0 评论 -
写时拷贝技术
写时拷贝的主要思想是在复制原来实体的时候,如果复制后的实体不需要进行改变,那么实际上没必要进行实体内容的拷贝,只需建立一个引用指向原来的实体内存,直接应用原来的实体内容即可,只有当需要对复制后的实体进行修改的时候才进行内容的拷贝。写时拷贝技术在很多方面都有应用,典型的有: C++中的写时拷贝技术 ...原创 2019-08-02 21:03:09 · 277 阅读 · 0 评论 -
高并发模式———领导者/追随者模式和半同步/半异步模式
高并发模式 高并发模式的意义:对于IO密集型的操作,因为IO操作速度远远小于CPU的计算速度,所以,如果程序阻塞于IO操作将大量浪费CPU。但是如果多线程的情况下,被IO阻塞的线程可以放弃CPU(或操作系统调度),将执行权限转移给其他线程。高效率的使用CPU。半同步/半异步模式 这里的同步模式是指程序按照代码序列的顺序执行,异步是指程序执行需要由系统事件来驱动 ...原创 2019-07-25 14:42:33 · 322 阅读 · 0 评论 -
软链接与硬链接
我们都知道文件都有文件名和数据,这在Liunx中被分为两部分:用户数据与元数据。用户数据即文件数据块,数据块是记录文件的真实内容的地方;而元数据则是文件的附加属性,如文件大小,创建的时间,所有者等信息。在Liunx中,元数据的inode号(inode是文件元数据的一部分但并不包含文件名,inode号即索引节点号)才是文件的唯一表示而非文件名。文件名仅是为了方便人们的记忆和使用,系统...原创 2019-07-24 19:34:31 · 115 阅读 · 0 评论 -
进程,线程与协程
一.进程 进程,直观的说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统,分配系统资源(CPU时间片,内存等资源),进程是资源分配的最小单位。进程间的通讯:管道,命名管道,消息队列,信号量,共享内存,到套接字。特征: 动态性:进程的实质是程序在多道程序系统中的一次执行过程,...原创 2019-06-26 14:50:28 · 108 阅读 · 0 评论 -
详解TCP的三次握手和四次挥手及面试中遇到问题
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个...原创 2019-05-21 19:13:10 · 225 阅读 · 0 评论 -
同步,异步与阻塞,非阻塞
1.同步与异步 同步与异步关注的消息通讯机制,针对应用程序与内核的交互而言的。 同步:发出一个调用时,在没有得到结果之前,该调用就不会返回。但是一旦调用返回,就得到了返回值,换句话说就是由调用者主动的等待调用的结果。执行一个操作之后,等待结果,然后才继续执行后续操作 异步:异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理...原创 2019-05-07 18:57:17 · 153 阅读 · 0 评论 -
线程同步
一、线程同步和线程互斥 1、线程同步:线程同步指的是多个线程之间协调同步,按照预定的先后次序进行运行,这种先后次序取决于要完成的特定任务,最基本的场景就是:A线程要完成的任务依赖于B线程的数据。 2、线程互斥:线程互斥是指对于线程共享的线程资源,在各个线程访问时具有排它性。当有若干个线程要访问同一共享资源时,任何时刻只允许一个线程进行访问,直到占有资源者放弃使...原创 2019-04-22 20:23:35 · 163 阅读 · 0 评论 -
I/O复用函数 select poll 和epoll的 区别
函数原型: select: int select(int nfds.fd_set*readfds, fd_set* writefds, fd_set* exceptfds,struct timeval* timeout); 注释:timeout参数用来设置select函数的超时时间,如果timeout的参数都传递为0,则select将立即返回,如果传递为NULL,则sel...原创 2019-04-22 18:42:27 · 111 阅读 · 0 评论 -
系统调用函数与库函数
一.什么是系统调用函数和库函数 系统调用函数是指:通向操作系统本身的接口,是面向底层硬件的。可以使得用户态的进程与硬件设备(如CPU,磁盘,打印机)进行交互的,是操作系统留给应用程序的一个接口。如一下 open: 打开文件或设备 read: 从打开的文件或设备...原创 2019-04-26 16:19:57 · 1461 阅读 · 0 评论 -
FTP协议
1.简单来说 FTP协议属于应用层协议,File Transfer Protocol,文件传输协议,简单来说FTP协议是面向文件传输的协议。2.复杂点来说 (1)FTP和HTTP一样都是在Internet上广泛传输的协议,用来在两台计算机之间互相传输文件。相比于HTTP,FTP协议要复杂许多。因为FTP协议要用两个TCP链接,一个是命令链路,用在FTP客户端与服务...原创 2019-08-30 13:17:35 · 365 阅读 · 0 评论