Linux 系统为我们提供五种可用的 IO 模型: 阻塞式 IO 模型 非阻塞式 IO 模型 IO 多路复用模型 信号驱动 IO 模型 异步 IO 模型 IO处理过程 在聊IO模型之前,需要先了解一下Linux系统是怎么进行IO处理的: 当某个程序或已存在的进程/线程(后文将不加区分的只认为是进程)需要某段数据时,它只能在用户空间中属于它自己的内存中访问、修改,这段内存暂且称之为app buffer。假设需要的数据在磁盘上,那么进程首先得发起相关系统调用,通知内核去加载磁盘上的文件。但正常情况下,数据只能加载到内核…

2021年8月25日 0条评论 138点热度 3人点赞 agedcat_xuanzai 阅读全文

内存溢出 内存溢出(out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory错误;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 而内存溢出的一大原因就是因为内存泄露。 内存泄露 内存泄露(memory leak),是指程序在申请内存后,无法释放已申请的内存空间。 内存泄露我们通常关注两类情况: 堆内存泄漏 (Heap leak):堆内存指的是程序运行中根据需要通过malloc,realloc new等从堆中分配的一块内存,再是完…

2021年3月6日 0条评论 254点热度 1人点赞 agedcat_xuanzai 阅读全文

进程与线程的区别 前面的文章对进程和线程做了详细的阐述,现在让我们总结一下线程和进程的区别。 一个线程只能属于一个进程,而一个进程可以有多个线程。进程至少有一个线程。线程依赖于进程而存在。 进程是CPU资源分配的最小单位,线程是CPU调度的最小单位。 进程有独立的系统资源,而同一进程内的线程共享进程的大部分系统资源。资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有一些在运行中必不可少的资源,如栈段,…

2021年3月6日 0条评论 391点热度 2人点赞 agedcat_xuanzai 阅读全文

进程间通信 进程经常需要与其他进程通信。最典型的例子是,在一个shell管道中,第一个进程的输出必须传送给第二个进程,这样沿着管道传递下去。我们有必要了解进程间通信的相关知识。 进程通信(IPC)就是进程间的数据交换,通常可以分为低级通信方式和高级通信方式。 低级通信方式:进程互斥与同步交换的信息量较少且效率较低,因此称这两种进程通信方式为低级进程通信方式,相应地也将P、V原语称为两条低级进程通信原语。 高级通信方式:高级通信方式是指以较高效率传递大量数据的通信方式。高级通信方式主要可分为共享通信(共享存储器系统通…

2021年3月6日 1条评论 910点热度 2人点赞 agedcat_xuanzai 阅读全文

同步与互斥 相关概念 临界资源:一段时间内仅允许一个进程使用的资源称为临界资源。 竞争条件:两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,类似这样的情况称为竞争条件。 临界区:进程中访问临界资源的那段代码称为临界区。 同类临界区:所有与同一临界资源相关联的临界区。 同步(Synchronization):多个相互合作的进程在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步。 互斥:当一个进程正在使用某资源时,其他希望使用该资源的进程必须等待,当该进程用完资源并释放后,…

2021年3月5日 1条评论 565点热度 1人点赞 agedcat_xuanzai 阅读全文

线程 进程的一种理解是一个可以实现计算的虚拟机框架,执行的活跃元素由执行引擎提供。在传统操作系统中仅允许进程包含一个执行引擎。而在现代操作系统中,进程可以包含多个执行引擎。每个执行引擎称作线程。现在让我们了解一下线程。 为什么要引入线程 在操作系统中引入进程的目的是使多道程序能并发执行,以改善资源利用率及提高系统吞吐量; 在操作系统中再引入线程,则是为了减少程序并发执行所付出的时空开销(诸如创建、撤销、切换等一系列操作所花费的时空开销),使操作系统具有更好的并发性。 线程的定义 线程的定义也有很多不同的提法,下面列…

2021年3月5日 1条评论 430点热度 1人点赞 agedcat_xuanzai 阅读全文

进程 操作系统中最核心的一个概念是进程:这是对运行程序的一个抽象。操作系统的其他内容都是围绕进程展开的。为此,我们有必要了解进程。 为什么要引入进程的概念 在没有引入进程的概念的时候,一个程序是怎样运行的呢?一个程序通常由若干个程序段所组成,它们必须按照某种先后次序来执行,仅当前一个操作执行完后才能执行后续操作。这样无疑对宝贵的系统资源存在极大的浪费。 那么怎样提高系统资源的利用率呢?答案就是程序的并发执行。也就是说,若干个程序或者程序段同时在系统中运行。这些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序…

2021年3月5日 1条评论 459点热度 2人点赞 agedcat_xuanzai 阅读全文

史上最全最详细的计算机操作系统知识结构图,提供下载: Download PDF.

2021年3月4日 1条评论 424点热度 3人点赞 agedcat_xuanzai 阅读全文