
大概是这个样子。
从图中可以看见,这是分四步进行的,而这四步里面有些细节,就有了这5种IO模型
前四种为同步IO,后一种为异步IO,什么是同步异步可以看看我之前写的 同步与异步,阻塞与非阻塞 。
应用进程发起系统调用后就阻塞了,直到内核buffer拷贝到用户buffer,发出成功提示后才继续执行。
适用场景:并发量小的要及时响应的网络应用开发,JavaBIO。
优点:易于开发,不消耗CPU资源(线程阻塞),及时响应。
缺点:不适用与并发量大的网络应用开发,一个请求一个线程,系统开销大。
应用进程发起系统调用,内核立马返回一个自己当前的缓冲区的状态(错误或者说成功),假如
为错误则隔段时间再系统调用(轮询),直到返回成功为止。另外再说一点,有人说轮询之间可以设置一个时间,例如每几秒执行一次,然后在这段期间程序可以干自己的事情。(这个我不清楚是不是,虽然理论上可以实现,但是我觉得第一种与第二种的区别应该强调的是是否放弃CPU,第二种有点CAS+轮询这种轻量级锁的感觉,第一种就是那种重量级锁的感觉)。
适用场景:并发量小且不用技术响应的网络应用开发
优点:易于开发,可以在轮询的间断期间继续执行程序。
缺点:不适用与并发量大的网络应用开发,一个请求一个线程,系统开销大。消耗CPU资源(轮询),不及时响应。
将多个IO注册到一个复用器上(select,poll,epoll),然后一个进程监视所有注册进来的IO。
进程阻塞在select上,而不是真正阻塞在IO系统调用上。当其中任意一个注册的IO的内核缓冲区有了数据,select就会返回(告诉程序内核态缓存有数据了),然后用户进程再发起调用,数据就从内核态buffer转到用态buffer(这段期间也是要阻塞的)。
适用场景:并发量大且对响应要求较为高的网络应用开发,JavaNIO
优点:将阻塞从多个进程转移到了一个select调用身上,假如并发量大的话select调用是不易被阻塞的,或者说阻塞时间短的。
缺点:不易开发,实现难度大,当并发量小的时候还不如同步阻塞模型。
应用程序向内核注册一个信号处理程序,然后立即返回,当数据准备好了以后(数据到了内核buffer),内核个应用进程一个信号,然后应用进程通过信号处理程序发起系统调用,然后阻塞直达数据从内核buffer复制到用户buffer。
优点:将阻塞从多个进程转移到了一个select调用身上,假如并发量大的话select调用是不易被阻塞的,或者说阻塞时间短的。
缺点:不易开发,实现难度大。
以上四个IO模型都可以看出来,到最后用户进程都要在数据从内核buffer复制到用户buffer时阻塞,直到内核告诉进程准备成功。这就是同步进程,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续 *** 作。
就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续 *** 作
这个就是直到数据copy完成到用户buffer才通知。
应用场景:Java AIO,适合高性能高并发应用。
优点:不阻塞,减少了线程切换,
缺点:难以实现,要 *** 作系统支持。
Linux 系统中有以下几种常见的登录界面模式:
终端模式(Text Mode):终端模式是 Linux 系统的最基本模式,通常以命令行的形式进行 *** 作。
图形模式(Graphical Mode):图形模式提供了图形化的界面,可以使用鼠标和键盘进行 *** 作。
远程模式(Remote Mode):远程模式允许你从远程计算机连接到 Linux 系统,通常使用 SSH 协议进行连接。
安全模式(Safe Mode):安全模式是在 *** 作系统出现问题时使用的模式,通常只加载最基本的驱动和服务,以便于进行故障排除和修复。
这些就是 Linux 系统中常见的登录界面模式。不同的模式适用于不同的场景,你可以根据需要选择合适的模式进行 *** 作。
如果你的登录界面模式是指 `图形模式(Graphical Mode)`
那么常见的linux 图形模式(Graphical Mode)有:
X Window 系统(X Window System):X Window 系统是 Linux 系统中最常见的图形模式,提供了丰富的图形化界面和多种图形窗口管理器(Window Manager)选择。
Wayland:Wayland 是一种新型的图形显示系统,在 X Window 系统的基础上进行了改进,提供了更快的性能和更好的用户体验。
Mir:Mir 是一种专门为 Ubuntu *** 作系统设计的图形显示系统,提供了优秀的性能和兼容性。
这些就是 Linux 系统中常见的图形模式。
如果你的登录界面模式指的是图形窗口管理器(Window Manager)
那么常见的图形窗口管理器(Window Manager)有以下几种:
GNOME:GNOME 是一种流行的图形桌面环境,提供了丰富的功能和友好的用户界面。
KDE:KDE 是另一种流行的图形桌面环境,提供了丰富的功能和自定义性。
Xfce:Xfce 是一种轻量级的图形桌面环境,适用于低端计算机和服务器。
LXDE:LXDE 是另一种轻量级的图形桌面环境,适用于低端计算机和服务器。
Openbox:Openbox 是一种简洁的图形窗口管理器,适用于轻量级的图形桌面环境。
.....
o: 编译的目标文件a: 静态库,其实就是把若干o文件打了个包
so: 动态链接库(共享库)
lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)