学习操作系统原理最好的方法是自己写一个简单的操作系统。一、外设和I/O接口前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设。常见的外设有鼠标、键盘、显示器、硬盘等。由于外设种类多、差异大、速度慢等原因,导致CPU无法直接与外设沟通。于是在CPU和外设之间产生了“中间人”,这个“中间人”就是I/O接口。如下图:CPU与外设的信息交流都是通过I/O接口来间接实现的。比如我们前面向屏幕输出字符,并不是CPU直接将数据传递给屏幕,而是先传递给显卡,显卡再去操控屏幕。显卡就是一种I/O接口。后面我们将要学习如何读写硬盘,同样CPU无法直接读写硬盘,而是通过“中间人”
学习操作系统原理最好的方法是自己写一个简单的操作系统。一、外设和I/O接口前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设。常见的外设有鼠标、键盘、显示器、硬盘等。由于外设种类多、差异大、速度慢等原因,导致CPU无法直接与外设沟通。于是在CPU和外设之间产生了“中间人”,这个“中间人”就是I/O接口。如下图:CPU与外设的信息交流都是通过I/O接口来间接实现的。比如我们前面向屏幕输出字符,并不是CPU直接将数据传递给屏幕,而是先传递给显卡,显卡再去操控屏幕。显卡就是一种I/O接口。后面我们将要学习如何读写硬盘,同样CPU无法直接读写硬盘,而是通过“中间人”
PostgreSQL近些年热度越来越高,特别在国内,基于其生态的数据库产品种类繁多。如果有人问“信创数据库学啥比较好”,从今后的工作机会以及学习资料的普及程度来说,我首先推荐的就是PostgreSQL。不过目前大多数PostgreSQL用户都没有认真配置数据库,让其达到最佳的使用效果,并充分发挥出硬件的性能特征。其中数据库IO的优化是重中之重,IO延时较大会导致所有的SQL都会变慢。今天的这篇文章将介绍提高PostgreSQLIO性能的八个技巧。首先,使用相应速度更快,吞吐能力更强的存储硬件:提高IO性能的最重要因素之一是用于存储数据库文件的存储硬件。在关键系统中,一般会考虑使用固态硬盘(S
PostgreSQL近些年热度越来越高,特别在国内,基于其生态的数据库产品种类繁多。如果有人问“信创数据库学啥比较好”,从今后的工作机会以及学习资料的普及程度来说,我首先推荐的就是PostgreSQL。不过目前大多数PostgreSQL用户都没有认真配置数据库,让其达到最佳的使用效果,并充分发挥出硬件的性能特征。其中数据库IO的优化是重中之重,IO延时较大会导致所有的SQL都会变慢。今天的这篇文章将介绍提高PostgreSQLIO性能的八个技巧。首先,使用相应速度更快,吞吐能力更强的存储硬件:提高IO性能的最重要因素之一是用于存储数据库文件的存储硬件。在关键系统中,一般会考虑使用固态硬盘(S
前言你知道Netty为什么性能这么高吗?你知道Redis为什么单线程如此之快吗?这都和底层的网络IO模型有关系,所以掌握网络IO模型真的很重要,是一个基础,对你更好的理解其他应用帮助非常大,今天我们就好好来聊聊Linux的5种网络IO模型。IO工作原理我们的应用大多数情况都是部署在linux系统中,linux系统也是一种应用,它是基于计算机硬件的一种操作系统软件。当我们接收一次网络传输,计算机硬件的网卡会从网络中将读到的字节流写到linux的buffer缓冲区内存中,然后用户空间会调用linux对外暴露的接口,将linux内核空间buffer内存中的数据拷贝到用户空间的buffer区。这一次网
前言你知道Netty为什么性能这么高吗?你知道Redis为什么单线程如此之快吗?这都和底层的网络IO模型有关系,所以掌握网络IO模型真的很重要,是一个基础,对你更好的理解其他应用帮助非常大,今天我们就好好来聊聊Linux的5种网络IO模型。IO工作原理我们的应用大多数情况都是部署在linux系统中,linux系统也是一种应用,它是基于计算机硬件的一种操作系统软件。当我们接收一次网络传输,计算机硬件的网卡会从网络中将读到的字节流写到linux的buffer缓冲区内存中,然后用户空间会调用linux对外暴露的接口,将linux内核空间buffer内存中的数据拷贝到用户空间的buffer区。这一次网
什么是阻塞,非阻塞,异步同步,select,poll,epoll?今天我们用一遍文章解开这多年的迷惑。首先我们想要通过网络接收消息,是这样的一个步骤。用户空间向内核空间请求网络数据内核空间把网卡数据读取到内核缓冲区将内核缓冲区的数据复制到用户缓冲区根据我们请求数据的情况不同,以及内核缓冲区到用户缓冲区的不同,分为了阻塞,非阻塞,异步同步的区别。在《UNIX网络编程》一书中,总结归纳了5种I0模型:阻塞I0(BlockingI0)非阻塞I0(Nonblocking I0)I0多路复用(I0Multiplexing)信号驱动I0(SignalDriven I0)异步I0(Asynchronous
什么是阻塞,非阻塞,异步同步,select,poll,epoll?今天我们用一遍文章解开这多年的迷惑。首先我们想要通过网络接收消息,是这样的一个步骤。用户空间向内核空间请求网络数据内核空间把网卡数据读取到内核缓冲区将内核缓冲区的数据复制到用户缓冲区根据我们请求数据的情况不同,以及内核缓冲区到用户缓冲区的不同,分为了阻塞,非阻塞,异步同步的区别。在《UNIX网络编程》一书中,总结归纳了5种I0模型:阻塞I0(BlockingI0)非阻塞I0(Nonblocking I0)I0多路复用(I0Multiplexing)信号驱动I0(SignalDriven I0)异步I0(Asynchronous
网络通信在RPC调用中起到什么作用呢?RPC是解决进程间通信的一种方式。一次RPC调用,本质就是服务消费者与服务提供者间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息给服务调用者,服务调用者接收并解析响应消息,处理完相关的响应逻辑,一次RPC调用便结束了。可以说,网络通信是整个RPC调用流程的基础。1常见网络I/O模型两台PC机之间网络通信,就是两台PC机对网络IO的操作。同步阻塞IO、同步非阻塞IO(NIO)、IO多路复用和异步非阻塞IO(AIO)。只有AIO为异步IO,其他都是同步IO。1.1同步阻塞I/
网络通信在RPC调用中起到什么作用呢?RPC是解决进程间通信的一种方式。一次RPC调用,本质就是服务消费者与服务提供者间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息给服务调用者,服务调用者接收并解析响应消息,处理完相关的响应逻辑,一次RPC调用便结束了。可以说,网络通信是整个RPC调用流程的基础。1常见网络I/O模型两台PC机之间网络通信,就是两台PC机对网络IO的操作。同步阻塞IO、同步非阻塞IO(NIO)、IO多路复用和异步非阻塞IO(AIO)。只有AIO为异步IO,其他都是同步IO。1.1同步阻塞I/