Linux系统IO模型及select、poll、epoll原理和应用

Linux系统IO模型及select、poll、epoll原理和应用,第1张

理解Linux的IO模型之前,首先要了解一些基本概念,才能理解这些IO模型设计的依据

*** 作系统使用虚拟内存来映射物理内存,对于32位的 *** 作系统来说,虚拟地址空间为4G(2^32)。 *** 作系统的核心是内核,为了保护用户进程不能直接 *** 作内核,保证内核安全, *** 作系统将虚拟地址空间划分为内核空间和用户空间。内核可以访问全部的地址空间,拥有访问底层硬件设备的权限,普通的应用程序需要访问硬件设备必须通过 系统调用 来实现。

对于Linux系统来说,将虚拟内存的最高1G字节的空间作为内核空间仅供内核使用,低3G字节的空间供用户进程使用,称为用户空间。

又被称为标准I/O,大多数文件系统的默认I/O都是缓存I/O。在Linux系统的缓存I/O机制中, *** 作系统会将I/O的数据缓存在页缓存(内存)中,也就是数据先被拷贝到内核的缓冲区(内核地址空间),然后才会从内核缓冲区拷贝到应用程序的缓冲区(用户地址空间)。

这种方式很明显的缺点就是数据传输过程中需要再应用程序地址空间和内核空间进行多次数据拷贝 *** 作,这些 *** 作带来的CPU以及内存的开销是非常大的。

由于Linux系统采用的缓存I/O模式,对于一次I/O访问,以读 *** 作举例,数据先会被拷贝到内核缓冲区,然后才会从内核缓冲区拷贝到应用程序的缓存区,当一个read系统调用发生的时候,会经历两个阶段:

正是因为这两个状态,Linux系统才产生了多种不同的网络I/O模式的方案

Linux系统默认情况下所有socke都是blocking的,一个读 *** 作流程如下:

以UDP socket为例,当用户进程调用了recvfrom系统调用,如果数据还没准备好,应用进程被阻塞,内核直到数据到来且将数据从内核缓冲区拷贝到了应用进程缓冲区,然后向用户进程返回结果,用户进程才解除block状态,重新运行起来。

阻塞模行下只是阻塞了当前的应用进程,其他进程还可以执行,不消耗CPU时间,CPU的利用率较高。

Linux可以设置socket为非阻塞的,非阻塞模式下执行一个读 *** 作流程如下:

当用户进程发出recvfrom系统调用时,如果kernel中的数据还没准备好,recvfrom会立即返回一个error结果,不会阻塞用户进程,用户进程收到error时知道数据还没准备好,过一会再调用recvfrom,直到kernel中的数据准备好了,内核就立即将数据拷贝到用户内存然后返回ok,这个过程需要用户进程去轮询内核数据是否准备好。

非阻塞模型下由于要处理更多的系统调用,因此CPU利用率比较低。

应用进程使用sigaction系统调用,内核立即返回,等到kernel数据准备好时会给用户进程发送一个信号,告诉用户进程可以进行IO *** 作了,然后用户进程再调用IO系统调用如recvfrom,将数据从内核缓冲区拷贝到应用进程。流程如下:

相比于轮询的方式,不需要多次系统调用轮询,信号驱动IO的CPU利用率更高。

异步IO模型与其他模型最大的区别是,异步IO在系统调用返回的时候所有 *** 作都已经完成,应用进程既不需要等待数据准备,也不需要在数据到来后等待数据从内核缓冲区拷贝到用户缓冲区,流程如下:

在数据拷贝完成后,kernel会给用户进程发送一个信号告诉其read *** 作完成了。

是用select、poll等待数据,可以等待多个socket中的任一个变为可读,这一过程会被阻塞,当某个套接字数据到来时返回,之后再用recvfrom系统调用把数据从内核缓存区复制到用户进程,流程如下:

流程类似阻塞IO,甚至比阻塞IO更差,多使用了一个系统调用,但是IO多路复用最大的特点是让单个进程能同时处理多个IO事件的能力,又被称为事件驱动IO,相比于多线程模型,IO复用模型不需要线程的创建、切换、销毁,系统开销更小,适合高并发的场景。

select是IO多路复用模型的一种实现,当select函数返回后可以通过轮询fdset来找到就绪的socket。

优点是几乎所有平台都支持,缺点在于能够监听的fd数量有限,Linux系统上一般为1024,是写死在宏定义中的,要修改需要重新编译内核。而且每次都要把所有的fd在用户空间和内核空间拷贝,这个 *** 作是比较耗时的。

poll和select基本相同,不同的是poll没有最大fd数量限制(实际也会受到物理资源的限制,因为系统的fd数量是有限的),而且提供了更多的时间类型。

总结:select和poll都需要在返回后通过轮询的方式检查就绪的socket,事实上同时连的大量socket在一个时刻只有很少的处于就绪状态,因此随着监视的描述符数量的变多,其性能也会逐渐下降。

epoll是select和poll的改进版本,更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。

epoll_create()用来创建一个epoll句柄。

epoll_ctl() 用于向内核注册新的描述符或者是改变某个文件描述符的状态。已注册的描述符在内核中会被维护在一棵红黑树上,通过回调函数内核会将 I/O 准备好的描述符加入到一个就绪链表中管理。

epoll_wait() 可以从就绪链表中得到事件完成的描述符,因此进程不需要通过轮询来获得事件完成的描述符。

当epoll_wait检测到描述符IO事件发生并且通知给应用程序时,应用程序可以不立即处理该事件,下次调用epoll_wait还会再次通知该事件,支持block和nonblocking socket。

当epoll_wait检测到描述符IO事件发生并且通知给应用程序时,应用程序需要立即处理该事件,如果不立即处理,下次调用epoll_wait不会再次通知该事件。

ET模式在很大程度上减少了epoll事件被重复触发的次数,因此效率要比LT模式高。epoll工作在ET模式的时候,必须使用nonblocking socket,以避免由于一个文件句柄的阻塞读/阻塞写 *** 作把处理多个文件描述符的任务饿死。

【segmentfault】 Linux IO模式及 select、poll、epoll详解

【GitHub】 CyC2018/CS-Notes

在linux中,对于一次读取IO请求(不仅仅是磁盘,还有网络)的 *** 作,数据并不会直接拷贝到用户程序的用户空间缓冲区。它首先会被拷贝到 *** 作系统的内核空间,然后才会从 *** 作系统内核的缓冲区拷贝到用户空间的缓冲区。

大概是这个样子。

从图中可以看见,这是分四步进行的,而这四步里面有些细节,就有了这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,适合高性能高并发应用。

优点:不阻塞,减少了线程切换,

缺点:难以实现,要 *** 作系统支持。

热门频道

首页

博客

研修院

VIP

APP

问答

下载

社区

推荐频道

活动

招聘

专题

打开CSDN APP

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

打开APP

linux恢复成裸设备,Linux下的裸设备研究(转) ---rawdevices 转载

2021-05-07 16:15:51

此号已死

码龄2年

关注

Linux平台下,缺省没有提供对磁盘设备的字符访问方式,必须通过配置rawdevices服务,把块设备绑定到裸设备上才行,具体方法有3种。这3种方法创建裸设备的方式完全一样,区别在于对Oracle用户权限处理方法的不同。RHEL5推荐使用第3种方法

第一种方法:# vim /etc/sysconfig/rawdevices

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdb2

#/etc/init.d/rawsdevices start

#chkconfig --level 235 rawdevices on 成功开启裸设备的标志为 # /etc/init.d/rawdevices status

/dev/raw/raw1: bound to major 8, minor 17

/dev/raw/raw2: bound to major 8, minor 18

为裸设备赋予权限# chown oracle:oinstall /dev/raw/raw1

/dev/raw/raw2

# ll /dev/raw/raw*

crw-rw---- 1 oracle oinstall 162, 1 Jan 22 14:09

/dev/raw/raw1

crw-rw---- 1 oracle oinstall 162, 2 Jan 22 14:12

/dev/raw/raw2 配置成功。

种方法的问题在于,虽然创建了裸设备,但是这些裸设备是在rawdevices服务启动时创建的,而rawdevices是以root用户身份运行的。因

此这些裸设备缺省的owner是root:root。所以每次服务重启后都要重新修改这些设备的owner为oracle:oinstall.

第二种方法:

为了解决上述的问题,可以采用第二种方法。即用mknod提前创建出一个字符方式访问的文件,然后在文件绑定到块设备上,并把该文件的owner设置为oracle,因为这个文件是手工创建的,所以这个文件的owner不会被修改# mknod /oradata c 162 1

# chown oracle:oinstall /oradata

# vim /etc/sysconfig/rawdevices

/oradata /dev/sdd2 #/etc/init.d/rawsdevices

start

#chkconfig --level 235 rawdevices on 第三种方法:

使用udev管理设备的权限#vim

/etc/udev/rules.d/50-udev.rules KERNEL=="raw[0-9]*",MODE="0660",GROUP="oinstall",OWNER="oracle",NAME="raw/%k"

# vim /etc/sysconfig/rawdevices

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdb2

#/etc/init.d/rawsdevices start

#chkconfig --level 235 rawdevices on 参考至:《大话Oracle RAC》张晓明著

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

相关资源:Linux裸设备相关命令_设备退出,怎样添加上-Linux文档类资源-CSDN...

文章知识点与官方知识档案匹配

CS入门技能树Linux入门初识Linux

26057 人正在系统学习中

打开CSDN APP,看更多技术内容

...及 还原至裸设备状态_胖胖胖胖胖虎的博客_linux磁盘...

Linux添加磁盘、挂载 及 还原至裸设备状态 磁盘划分区 [hadoop@hadoop03 ~]$sudofdisk-l Disk /dev/sda:42.9GB,42949672960bytes,83886080sectors Units=sectors of1*512=512bytes Sector size(logical/physical):512bytes /512bytes I...

继续访问

linux系统制作裸设备,在unix下和linux下创建裸设备总结_爱卡汽车的博 ...

4.链接裸磁盘: #ln -s /dev/raw/raw1 /oracle/oradata/dgdemo/temp.dbf 5.创建oracle的数据文件: create tablespace temp datafile '/oracle/oradata/dgdemo/temp.dbf' size 1000M reuse备注:如果使用LVM来创建LV类型的裸设...

继续访问

oracle 备份 裸设备,玩转裸设备的备份恢复

近期在linux下测试了数据的备份和恢复:1、裸设备的创建:在/etc/sysconfig/rawdevices 下添加如下:/dev/raw/raw1 /dev/sdb1 (100M)/dev/raw/raw2 /dev/sdb2 (120M)/dev/raw/raw3 /dev/sdb3 (130M)/dev/raw/raw4 /dev/sdb4 (150M)/dev/...

继续访问

SUSE Linux 10 配置裸设备(raw devices)

裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写 *** 作。不经过文件系统的缓冲,是不被 *** 作系统直接管理的设备。由于跨过 *** 作系统管理,使得I/O效率更高。在基于SUSE Linux 10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,

继续访问

linux asm 裸设备,ASM+裸设备_铝单车上的镁男子的博客

通过gui程序安装数据库软件,然后在dbca创建数据库,数据文件放在asm磁盘上即可。 来自“ ITPUB博客 ” ,链接:http://blog.itpub.net/22123669/viewspace-678501/,如需转载,请注明出处,否则将追究法律责任。

继续访问

linux raw设备格式化,SUSE Linux 10配置裸设备(raw devices)_owl-ler...

SUSE Linux 10配置裸设备(raw devices) 裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写 *** 作。不经过文件系统的缓冲,是不被 *** 作系统直接管理的设备...

继续访问

linux gpio设备驱动程序,嵌入式Linux设备驱动开发之:GPIO驱动程序实例-嵌入式系统-与非网...

11.3GPIO驱动程序实例11.3.1GPIO工作原理FS2410开发板的S3C2410处理器具有117个多功能通用I/O(GPIO)端口管脚,包括GPIO8个端口组,分别为GPA(23个输出端口)、GPB(11个输入/输出端口)、GPC(16个输入/输出端口)、GPD(16个输入/输出端口)、GPE(16个输入/输出端口)、GPF(8个输入/输出端口)、GPH(11个输入/输出端口)...

继续访问

linux内存给hdd当缓存,linux块设备加速缓存之bcache [转]

转载请注明出处:http://blog.csdn.net/liumangxiongbcache是linux内核块层cache。它使用类似SSD来作为HDD硬盘的cache,从而起到加速作用。HDD硬盘便宜并且空间更大,SSD速度快但更贵。如果能两者兼得,岂不快哉?bcache能做到。bcache使用SSD作为其他块设备cache。类似ZFS的L2Arc,但bcache还增加了写回策略,并且是与文件...

继续访问

linux裸设备详解,Linux裸设备管理详解_无敌道道的博客

裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。 字符设备:对字符设备的读写不需要通过OS的buffer。它不可被文件系统mount。

继续访问

linux创建裸磁盘,Linux上如何创建裸设备_一颗大球糖bobo的博客-CSDN博 ...

其中最关键的就是共享设备了,在一个独立硬盘上创建裸设备,作为OCR和Voting DISK甚至ASM的磁盘,下面就介绍一下,在Linux下面如何创建裸设备,也就是create raw device. 大致这么几个步骤: 1. Check iscsi has been autoenable...

继续访问

主线剧情02-ARM-Linux基础学习记录

对 Linux 的系统概念、Linux 文件系统、常用命令、Vim 使用、GCC、Make 与 Makefile 及其模板、ubuntu 包管理、换源等等等做一个大总结,对 ARM Linux 的编译工具链、应用、系统编译的流程做简单介绍,最后对 PC 与 嵌入式板 传输文件的方式做一个汇总。

继续访问

linux 块设备驱动实例,linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)...

块设备驱动的模型还是基本基于字符设备驱动的,可以简单理解为块设备仅仅增加了 *** 作缓冲区,对用户请求顺序进行队列重拍等等。字符设备驱动的相关分析可以查看本博客相关的博文。按照本博客的行文习惯,在具体分析块设备驱动代码之前,我们会从整体上了解一下研究对象的特征,以及用户空间的使用方法。下面我们就自己写一个小工具(可以读取Rom中任意一个物理扇区的内容)来分析一下高通的分区信息。在用户空间看到的块设备当然...

继续访问

linux asm 裸设备,为ASM生成裸设备_weixin_39980711的博客

在oracle推荐的存储机制中,ASM性能是比较好的,为了使用ASM存储,先需要为共享磁盘或者共享磁盘的分区生成裸设备,以下为裸设备生成相关记录。linux环境为linux AS 5.4。 1、裸设备,可以用共享磁盘或者共享磁盘中的分区来生成,这个相差不是很...

继续访问

linux创建裸磁盘,linux 使用裸设备创建表空间_射命丸咲的博客

TNS for Linux: Version 11.2.0.1.0 - Production NLSRTL Version 11.2.0.1.0 - Production 查看磁盘 [root@node1 ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders ...

继续访问

最新发布 linux设备模型:设备及设备节点创建过程分析

本篇分析设备的初始化及注册过程,包括设备与驱动绑定,设备与电源管理之间的联系、中断域的储存及物理设备之间的关系等等。这一篇内容较多,结合kobject、kset、class、bus等众多概念,也是从理论阶段转换为实际使用阶段的重要过程。 设备初始化阶段,创建kset容器结构对象devices_kset,用于设备的uevent(用户事件通知) *** 作。dev_kobj表示设备根对象,在它的基础上扩展(延伸)sysfs_dev_block_kobj("block") 块设备根对象和sysfs_dev_ch

继续访问

热门推荐 linux查看新增串口、USB设备,Minicom + Usb转串口

linux查看新增串口、USB设备,Minicom + Usb转串口注意:虚拟机环境下的ubuntu默认情况下是不能自动识别的,需要在虚拟机窗口右下角点击"Prolific USB-Serial Controller",然后选择"Connect(Disconnect from Host)",这样才能被ubuntu系统识别。查看新增串口、USB设备1)显示已经加载到内核中的模块的状态...

继续访问

Linux配置裸设备_黄宝康的博客

Linux配置裸设备 在配置Oracle10g RAC中,会遇到裸设备的配置,高版本的RAC,从11g开始,已经不支持了,在这里只是学习记录下。 裸设备是指通过字符方式访问的设备,这种设备在读写数据时不需要缓冲区,在Linux环境下默认不提供裸设备服务,...

继续访问

转 Linux块设备加速缓存bcache和dm-cache 使用SSD来加速服务器

转 Linux块设备加速缓存bcache和dm-cache 使用SSD来加速服务器

继续访问

【vbox】Linux安装Virtual Box虚拟机实践记录--编辑中

一、安装 1.进入virtualbox官网 https://www.virtualbox.org/ 2.点击download 方法一: 3.点击Linux distributions 4.向下翻至如图,并且进入同种框选页面 5.在/etc/yum.repos.d/目录下新建virtualbox.repo并写入如下内容 [virtualbox] name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - V.

继续访问

linux文件系统-文件的写与读

只有打开可文件以后,或者建立起进程与文件之间的连接之后,才能对文件进行读写。文件的读写主要是通过系统调用read和write来完成的,对于读写的进程,目标文件由一个打开文件号代表。 为了提高效率,稍微复杂一点的 *** 作系统对文件的读写都是带缓冲的,linux也不例外。像vfs一样,linux文件系统的缓冲机制也是它的一大特色。所谓缓冲,是指系统为最近的读写过的文件内容在内核中保留一份副本,以便当再次需要已经缓冲存储在副本的内容时不必再临时从设备上读入,而需要写的时候则可以先写到副本中,待系统较为空闲时再从副本

继续访问

DAVINCI DM365-DM368开发攻略——linux-2.6.32的移植

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zjbintsystem.blog.51cto.com/964211/768652 2012年的春节就这样过了,假期期间,在接到的大项目没有进展的情况下(团队的人都回家过年了),利用这三天深圳最冷的时间(5°C):1月25~27号,赶紧完成这篇文章的稿子,毕竟很长时间

继续访问

Linux-常用命令

3.1 概述 很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。 Linux 刚出世时没有什么图形界面,所有的 *** 作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。 近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令行,就不算会 Linux。 Linux 提供了

继续访问

linux设备模型:bus概念及pci_bus分析

bus(总线)是一种特殊的抽象框架,与class有着本质上的不同,class感觉上只是把一些核心组件聚集在一起,它主要为访问组件提供便利(如提供组件地址),而bus则是实实在在的功能性框架,它即可负责管理、维护驱动与设备之间的关系,也可作为主桥设备与硬件之间的访问通道等等。 如pci总线,当pci硬件设备插入卡槽后,首先通过pci_bus_type(pci总线 *** 作结构) 中的 pm(电源 *** 作结构) *** 作相关函数唤醒设备,然后通过pci_bus_match函数查找硬件设备是否被注册到驱动(通过pc

继续访问

Linux入职基础-3.1_了解proc目录文件(设备管理)

了解proc目录文件(设备管理)/proc 文件系统是一种内核和内核模块用来向进程(process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取有关进程的有用信息,在运行时访问内核内部数据结构、改变内核设置的机制。/proc 由内核控制,没有承载 /proc 的设备,它只存在内存当中,而不占用外存空间,对 /proc 进行一次 'ls -l' ...

继续访问

linux文件系统-文件系统的安装与拆卸

在一块设备上按一定的格式建立起文件系统的时候,或者系统引导之初,设备上的文件和节点都还是不可访问的。也就是说,还不能按一定的路径名访问其中特定的节点或文件(虽然设备是可访问的)。只有把它安装到计算机系统的文件系统中的某个节点上,才能使设备上的文件和节点成为可访问的。经过安装以后,设备上的文件系统就成为整个文件系统的一部分,或者说一个子系统。一般而言,文件系统的结构就好像一棵倒立的树,不过由于可能存在着的节点间的链接和符号链接不并不一定是严格的图论意义上的一棵树。最初,整个系统只有一个节点,那就是整个文件系统

继续访问

linux文件系统-访问权限与文件安全性

Unix *** 作系统从一开始就在其文件系统中引入了文件、访问权限等概念,并在此基础上实现了有利于提高文件安全性的机制。从那以后这些概念和机制就一直被继承下来并进一步得到改进和完善。即使在经过了很多年后的今天,而且在计算机系统的安全性已经成为一个突出问题的情况下,这一套机制仍然不失其先进性。尽管还存在一些缺点和需要进一步改进的地方,从总体上说还是瑕不掩瑜。与当今正在广泛使用的其他 *** 作系统相比,可以说Unix的安全性总的来说至少不会差于这些系统;如果考虑到近年来在Unix及linux中已经作出的改进以及不难作出的进

继续访问

[转]Linux块设备加速缓存bcache和dm-cache:使用SSD来加速服务器

dm-cache 与 bcache在 LSFMM 2013 峰会上,Mike Snitzer, Kent Overstreet, Alasdair Kergon, 和 Darrick Wong 共同主持了一个讨论,内容是关于两个彼此独立的块设备层缓存方案 —— dm-cache 和 bcache。 Snitzer 首先介绍了 3.9 kernel 引入的 dm-cache。这个方案使用率内核中的

继续访问

计算机 *** 作系统实验代码(6个实验)

计算机 *** 作系统实验代码,包括先来先服务FCFS和短作业优先SJF进程调度算法、时间片轮转RR进程调度算法、预防进程死锁的银行家算法、动态分区分配算法、虚拟内存页面置换算法、磁盘调度算法

linux将磁盘还原为裸设备

linux恢复成裸设备

写评论

评论

收藏

点赞

分享


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7611835.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存