高速缓存分布式
⑴ 分布式存储相对于单机存储的挑战是
1、分布式相比于传统存储系统的优点
①高性能:它通常可以高效地管理读缓存和写缓存,支持自动的分布式存储通过将热点区域2映射到高速缓存,提高响应速度。一旦不在是热点,那么存储系统将会把他们移除。写缓存技术可配合高速存储明显改变整体存储的性能,按照一定的策略先将数据写入高速存储,再在适当的时间进行同步落盘。
②支持分布式存储:通过网络进行松耦合链接,允许高速村塾和低速存储分开部署。一定条件下分层存储的优势可以发挥到最佳。解决了最大的问题是当性能池读不命中后,从冷池提取数据的粒度太大,导致延迟高,从而给造成整体的性能的抖动的问题。
③多副本一致性:他相比传统的存储框架使用RAID不同。它采用了多分本备份机制,存储之前进行分片,之后按照一定的规则存在集群的节点上,为了保证数据一致性,布式存储通常采用的是一个副本写入,多个副本读取的强一致性技术,读取数据失败,从其他副本获取,重新写入该副本恢复。
④容灾与备份:对于容灾采用最重要的手段就是快照,可以实现一定时间下的数据的保存。他有利于故障重现,有助于分析研究,避免灾难,备份就是为了数据的安全性。
⑤弹性扩展:分布式存储可预估并且弹性扩展计算、存储容量和性能,节点扩展后,旧数据自动迁移到新节点上,实现负载均衡,避免单点问题。水平扩展只需要将节点和原来的集群链接到同一网络,整个过程不会对业务造成影响,当加节点时,集群系统的容量和性能随之线性扩展,新节点资源会被平台接管,分配或吸收。
⑥存储系统标准化:随着分布式存储的发展,存储行业的标准化进程也不断推进,分布式存储优先采用行业标准接口(SMI-S或OpenStack Cinder)进行存储接入,在平台层面,通过将异构存储资源进行抽象化,将传统的存储设备级的操作封装成面向存储资源的操作,从而简化异构存储基础架构的操作,以实现存储资源的集中管理,并能够自动执行创建、变更、回收等整个存储生命周期流程。基于异构存储整合的功能,用户可以实现跨不同品牌、介质地实现容灾,如用中低端阵列为高端阵列容灾,用不同磁盘阵列为闪存阵列容灾等等,从侧面降低了存储采购和管理成本。
2、分布式相比于传统存储系统的缺点
首先,从部署与维护的角度来看,分布式存储部署过程较为复杂,需要专门的人才进行部署,维护与管理,需要一定的时间培养专门的人才。其次,从硬件设备角度来看,分布式存储使用的均为X86架构服务器,稳定性可能不如传统的硬件存储。尤其对于银行,金融,政府等重要行业,稳定永远大于一切,他们既是新技术的实践者但同时也需要最稳定的环境保持业务的良好运行。最后,对于数据保护技术,大部分都是通过副本技术实现数据保护机制,常见的有两副本三副本等,这样也会造成可用存储容量的降低。
⑵ memcache和memcached之间的区别和联系
memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显着[1] 。这是一套开放源代码软件,以BSD license授权发布。
⑶ Memcached真的过时了吗
这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来。关于Redis与Memcached的比较更是比比皆是。然而,Redis真的在功能、性能以及内存使用效率上都超越了Memcached吗?
没有必要过于关注性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。
在内存使用效率上,如果使用简单的key-value存储,Memcached的内存利用率更高。而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。
如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis。因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
当然,最后还得说到你的具体应用需求。Redis相比Memcached来说,拥有更多的数据结构,并支持更丰富的数据操作。通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
⑷ redis和memcached的区别
Redis与Memcached的区别
传统MySQL+ Memcached架构遇到的问题
实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:
1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。
2.Memcached与MySQL数据库数据一致性问题。
3.Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。
4.跨机房cache同步问题。
众多NoSQL百花齐放,如何选择
最近几年,业界不断涌现出很多各种各样的NoSQL产品,那么如何才能正确地使用好这些产品,最大化地发挥其长处,是我们需要深入研究和思考的问题,实际归根结底最重要的是了解这些产品的定位,并且了解到每款产品的tradeoffs,在实际应用中做到扬长避短,总体上这些NoSQL主要用于解决以下几种问题
1.少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。
2.海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。
3.这方面最具代表性的是dynamo和bigtable 2篇论文所阐述的思路。前者是一个完全无中心的设计,节点之间通过gossip方式传递集群信息,数据保证最终一致性,后者是一个中心化的方案设计,通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log,然后定期compat归并到磁盘上,将随机写优化为顺序写,提高写入性能。
4.Schema free,auto-sharding等。比如目前常见的一些文档数据库都是支持schema-free的,直接存储json格式数据,并且支持auto-sharding等功能,比如mongodb。
面对这些不同类型的NoSQL产品,我们需要根据我们的业务场景选择最合适的产品。
Redis适用场景,如何正确的使用
前面已经分析过,Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就会有疑问,似乎Redis更像一个加强版的Memcached,那么何时使用Memcached,何时使用Redis呢?
如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:
1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
2 Redis支持数据的备份,即master-slave模式的数据备份。
3 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
抛开这些,可以深入到Redis内部构造去观察更加本质的区别,理解Redis的设计。
在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别。Redis只会缓存所有的 key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计 算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以 保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要能够保持所有的key,毕竟这些数据是不会进行swap操作的。同时由于Redis将内存 中的数据swap到磁盘中的时候,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果更新需要swap的数据,Redis将阻塞这个 操作,直到子线程完成swap操作后才可以进行修改。
使用Redis特有内存模型前后的情况对比:
VM off: 300k keys, 4096 bytes values: 1.3G used
VM on: 300k keys, 4096 bytes values: 73M used
VM off: 1 million keys, 256 bytes values: 430.12M used
VM on: 1 million keys, 256 bytes values: 160.09M used
VM on: 1 million keys, values as large as you want, still: 160.09M used
当 从Redis中读取数据的时候,如果读取的key对应的value不在内存中,那么Redis就需要从swap文件中加载相应数据,然后再返回给请求方。 这里就存在一个I/O线程池的问题。在默认的情况下,Redis会出现阻塞,即完成所有的swap文件加载后才会相应。这种策略在客户端的数量较小,进行 批量操作的时候比较合适。但是如果将Redis应用在一个大型的网站应用程序中,这显然是无法满足大并发的情况的。所以Redis运行我们设置I/O线程 池的大小,对需要从swap文件中加载相应数据的读取请求进行并发操作,减少阻塞的时间。
如果希望在海量数据的环境中使用好Redis,我相信理解Redis的内存设计和阻塞的情况是不可缺少的。
⑸ 网络代理服务器的贡献
Cache产品是综合解决Internet内容传输的增值服务产品。我们知道,影响Internet传输效率和速度的三个主要因素有:带宽、距离(路径数)、源服务器供应能力(服务器性能瓶颈)。网络传输优化的解决方案是将用户所要访问的数据放在离用户尽可能近的服务器上,即将内容“推送”或“分发”到靠近用户端。Cache一般部署在网络边缘,将减少上联广域带宽消耗、缩短访问距离、增加了就近内容供应网点,从三方面有效解决网络低效和响应速度慢的问题,是一个非常有效的概念和解决方案。具体来讲,高速缓存服务器充当Web请求的网关,并执行基本Web服务器的职能,例如检索请求并为URL服务。它转发来自自客户机和其他Web服务器的请求,并将服务器的响应返回给客户机。 高速缓冲代理服务器可以保存(或高速缓存)它从其他站点检索到的Web文档,并在本地处理随后的信息请求。用户可以更快地获得信息,同时还节省了网络带宽。因为Cache服务器既可以看到客户机请求,也可以看到响应,所以它能够执行附加的调解,例如 PICS 过滤、内容转换、为适合不同客户机介质(例如,掌上型机)而作的变换等。
简而言之,高速缓存(Web Cache)是通过分布式地放置服务器及合理配置缓存Cache,从而降低广域网的宽带负荷,并能提高网站内容的响应速度。
⑹ 分布式储能技术优势是什么
分布式存储,无疑是云计算时代最受关注的一门技术。
到底什么是分布式存储?
简单来说,人多力量大,利用多个存储服务器构建存储池,满足互联网时代越来越多的存储需求。
互联网行业的发展,数据成指数级增长,人们对存储的需求越来越大,采用集中式的存储成为数据中心系统的瓶颈,不能满足大规模存储应用的需要。
受益于服务器技术的发展和成熟,与标准服务器的分布式存储开始出现,分布式存储开始被广泛的应用起来。
分布式存储就是将数据分散存储到多个存储服务器上,并将这些分散的存储资源构成一个虚拟的存储设备,实际上数据分散的存储在企业的各个角落。分布式存储的好处是提高了系统的可靠性、可用性和存取效率,还易于扩展。
1、易于扩展
得益于合理的分布式架构,分布式存储可预估并且弹性扩展计算、存储容量和性能。
2、高性能
一个具有高性能的分布式存储通常能够高效地管理读缓存和写缓存,并且支持自动的分级存储。
3、支持分级存储
由于通过网络进行松耦合链接,分布式存储允许高速存储和低速存储分开部署,或者任意比例混布。
4、多副本一致性
与传统的存储架构使用RAID模式来保证数据的可靠性不同,分布式存储采用了多副本备份机制,最小化对业务的影响。
5、存储系统标准化
随着分布式存储的发展,存储行业的标准化进程也不断推进,分布式存储优先采用行业标准接口(SMI-S或OpenStackCinder)进行存储接入,用户可以实现跨不同品牌、介质地实现容灾,从侧面降低了存储采购和管理成本。
▉最后总结
分布式存储是一个大的概念,其包含的种类繁多,除了传统意义上的分布式文件系统、分布式块存储和分布式对象存储外,还包括分布式数据库和分布式缓存等。
⑺ 分布式架构的对比
EMC VMAX
VMAX架构包含1个到8个VMAX引擎(存储节点)。这些引擎相互连接在一起,被称为虚拟Matrix架构。每个引擎都可以当作存储阵列,拥有自己的前端主机端口连接、后端磁盘导向器、高速缓存(内部镜像化)和处理器。VMAX引擎使用Matrix接口主板封装器(MIBE)连接在一起。MIBE有副本以备冗余。虚拟Matrix可以进行引擎之间的记忆体访问。当主机访问端口和数据不在同一个引擎上的时候需要虚拟Matrix提供连接性。
3Par InServ
3Par由多个存储节点组成。这些存储节点汇集到一个高速连接上。3Par称之为InSpire架构。2到8个节点(按对配置)连接到一个被动背板,每个节点之间的带宽可高达1.6Gb/秒。3Par如图所示展示他们的8节点架构,连接的数量很容易就能看清楚。我还看到2节点、4节点、6节点和8节点部署下的连接是如何增加的。InServ阵列按对写入高速缓存数据,因此每个节点都有一个伴点。如果一个节点发生故障,伴点上的高速缓存可以马上写入另一个节点,从而保护高速缓存数据。
IBM XIV
IBM XIV阵列采用的是另一种节点设置方式。节点直接连接到底层硬件的数据保护机制。XIV只使用RIAD-1类型的保护,采用的是1MB大小的数据块,也称为分区。数据以伪随机方式均匀分布在节点上,确保对任何LUN来说,数据都是写入在所有节点上。本文底部的XIV图片显示了这个架构。节点(在XIV中称为模块)分成接口模块和数据模块。接口模块有自己的高速缓存、处理器、数据磁盘和主机接口。数据模块没有主机接口,但是仍然有高速缓存、处理器和磁盘。每个模块有12个1TB SATA驱动器。当数据写入阵列的时候,这些1MB分区写入到所有驱动器和模块中,确保任意一个分区的两个镜像对不会都处在同一个模块上。LUN的顺序分区分布在各个模块上。这样做的结果就是所有的模块都参与服务所有的卷,且单个模块的故障不会导致数据丢失。
⑻ 小白谈memcache和memcached的区别
Memcache是什么?
Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。
Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。
Memcache官方网站:http://memcached.org/
Memcached又是什么?
Memcache是该系统的项目名称,Memcached是该系统的主程序文件(字母d可以理解为daemon),以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。
memcache客户端(php)
PHP有两个memcache客户端:php memcache和php memcached。
php memcache独立用php实现,是老客户端,从我们实践中已发现有多个问题,而且功能少,属性也可设置的少;
http://pecl.php.net/package/memcache
php memcached是基于原生的c的libmemcached的扩展,更加完善,建议替换为php memcached。
http://pecl.php.net/package/memcached
memcached安装(服务端)
cd /root/lnmp/src/
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar xzf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure --prefix=/usr/local/memcached
make && make install
ln -s /usr/local/memcached/bin/memcached /usr/bin/memcached
/bin/cp scripts/memcached.sysv /etc/init.d/memcached
sed -i 's@^USER=.*@USER=root@' /etc/init.d/memcached
sed -i 's@chown@#chown@' /etc/init.d/memcached
sed -i 's@/var/run/memcached/memcached.pid@/var/run/memcached.pid@' /etc/init.d/memcached
sed -i 's@^prog=.*@prog="/usr/local/memcached/bin/memcached"@' /etc/init.d/memcached #前面有软链接,这里可以省略
chmod +x /etc/init.d/memcached
chkconfig --add memcached
chkconfig memcached on
cd ..
启动memcached:
service memcached start #或者执行下面
memcached -p 11211 -l 127.0.0.1 -d -u root -P /var/run/memcached.pid -m 64M -c 1024
几个参数的解释:
-p memcached监听的TCP端口
-l 监听的ip地址,127.0.0.1是本机,当然也可以写上你的服务器IP,如:10.0.0.10,这是我服务器的IP地址,如果你需要多个服务器都能够读取这台memcached的缓存数据,那么就必须设定这个ip
-d 以daemon方式运行,将程序放入后台
-u memcached的运行用户,我设定的是nobody
-P memcached的pid文件路径
-m memcached可以使用的最大内存数量
-c memcached同时可以接受的最大的连接数
如果你希望以socket方式来访问memcached,那么在启动的时候就必须去掉 -l和-p参数,并加上-s参数:
-s memcached的socket文件路径
php中memcache扩展组件的安装:
tar xzf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
cd ../
按照我的环境,编译出来的memcache.so自动生成在/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ 目录下,如果你的环境不一样,你得根据自己情况修改你的php.ini了。
接着要做的工作就是让php加载这个扩展,编辑你的php.ini,在适当位置(通常是最后,也可以是独立的一个ini文件)加入如下行:
extension=memcache.so
然后重启php或者apache,运行一个phpinfo()来确认一下,正常的话你应该可以看到这个了:memcache
php-memcache的简单使用举例:
<?php
$memcache = new Memcache;
$memcache->connect('127.0.0.1','11211');
$memcache->setCompressThreshold(20000, 0.2); // 设置压缩
echo $memcache->getVersion(); // 输出memcached版本
$test = array(1,2,3,4,5,'abcde'); //生成一个数组
if($memcache->get('test')){
print_r($memcache->get('test')); //获取数据
echo "\n";
echo 'cached';
echo "\n";
}else{
$memcache->set('test',$test,0,30); //写入数据
echo 'no cache';
echo "\n";
}
?>
php中memcached扩展组件的安装(LNMP一键安装包):
最新版ibmemcached-1.0.17.tar.gz可能会报错
error: ‘HAVE_MEMCACHED_BINARY’ was not declared in this scope
用libmemcached-1.0.16.tar.gz没问题
安装如下:
wget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar.gz
wget http://pecl.php.net/get/memcached-2.1.0.tgz
tar xzf libmemcached-1.0.16.tar.gz
cd libmemcached-1.0.16
./configure --with-memcached=/usr/local/memcached
make && make install
cd ..
tar xzf memcached-2.1.0.tgz
cd memcached-2.1.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
按照我的环境,编译出来的memcached.so自动生成在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ 目录下,如果你的环境不一样,你得根据自己情况修改你的php.ini了。
接着要做的工作就是让php加载这个扩展,编辑你的php.ini,在适当位置(通常是最后,也可以是独立的一个ini文件)加入如下行:
extension=memcached.so
然后重启php或者apache,运行一个phpinfo()来确认一下,正常的话你应该可以看到这个了:memcached
总结:
其实很简单,memcache是php的一个扩展,用于php管理memcached(服务端),php-memcache.dll。
如果安装了memcached(服务端)不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题
如果安装了PHP memcache客户端(php memcache和php memcached)。但是没有安装memcached(服务端)服务,那么这个就无法使用
只有同时安装了memcached(服务端)和PHP memcache客户端扩展才可以提高动态网站性能
⑼ 缓存系统中的主要使用的数据结构是什么
缓存系统中的主要使用的数据结构是memcached。
memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。
memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。
由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。
(9)高速缓存分布式扩展阅读:
一、存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。
另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
二、通信分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本文也将介绍memcached的分布式。
⑽ 计算机操作系统的基本概念
计算机操作系统的基本概念
操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。下面是我整理的计算机操作系统的基本概念,希望大家认真阅读!
1、操作系统做什么
注:计算机系统结构作为从程序设计者角度所看到的计算机属性,在计算机系统的层次结构中处于机器语言级;而计算机组织作为计算机系统结构的逻辑实现和物理实现,其任务就是围绕提高性能价格比的目标,实现计算机在机器指令级的功能和特性。研究和建立各功能部件间的相互连接和相互作用,完成各个功能部件内部的逻辑设计等是逻辑实现的内容;把逻辑设计深化到元件、器件级,则是物理实现的内容。
计算机系统可以大致分为四个组成部分:计算机硬件、操作系统、系统程序与应用程序和用户。
硬件为系统提供基本的计算资源,应用程序规定了用户按何种方式使用这些资源,操作系统控制和协调各用户的应用程序对硬件的使用。
从两个视角探索操作系统:用户视角和系统视角。
A、用户视角:
对于PC用户,系统设计是为了让单个用户单独使用其资源,其目的是优化用户所进行的工作。对于这种情况,操作系统的设计目的是为了用户使用方便,性能是次要的,而且不在乎资源使用率。
对于大型机用户,操作系统设计为资源使用做了优化:确保所有的CPU时间、内存和I/O都得到充分使用,并且确保没有用户使用超出其权限以外的资源。
对于工作站用户,操作系统的设计目的是个人使用性能和资源使用率的折中。
对于手持计算机用户,方便个人使用,最大化利用电池能源是操作系统设计的要点。
B、系统视角:
从系统视角,操作系统相当于资源分配器。操作系统管理CPU时间、内存空间等系统资源,在面对许多甚至冲突的资源请求,操作系统必须决定如何为每个程序和用户分配资源,以便计算机系统能有效而公平的运行。
2、计算机系统组织
计算机通过运算器、存储器、控制器、输入输出子系统等主要功能部件的相互连接和相互作用,借以实现机器指令级的各种功能和特性。从最基本的功能和作用原理来说,计算机是在控制器的全面控制下,接收经数字化编码的输入信息(程序和数据),把它存放在存储器中,根据程序的要求对数据进行快速运算,产生结果数据输出。因此,可以把运算器、存储器、控制器、输入输出子系统看成是一台计算机的逻辑组成中最基本的功能部件。
存储设备层次(按总线速率由高到低):
寄存器——高速缓存(Cache)——主存——磁盘——光盘——磁带
3、计算机系统体系结构
通过采用的通用处理器的数量来分类。
A、单处理器系统
在单处理器系统中,有一个主CPU能够执行一个通用指令集,包括来自用户进程的指令。
B、多处理器系统
多处理器系统的优点:
增加吞吐量;规模经济;增加可靠性。
分类:
非对称多处理器(asymmetric multiprocessing)系统——主从关系;
对称多处理器(symmetric multiprocessing)系统——对等关系。
C、集群系统
集群计算机共享存储并通过局域网连接或更快的内部连接。
分类:
非对称集群:一部分机器处于热备份模式,其余的机器运行应用程序。
对称集群:两台或多个主机都运行程序,互相监视。
4、操作系统结构
操作系统理论研究者有时把操作系统分成四大部分:
驱动程序:最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
内核:操作系统内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
接口库:是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
外围:是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
在这里,需要介绍一些关于内核的知识。
内核是操作系统最核心最基础的构件,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。
内核的结构可以分为单内核、微内核、混合内核、外内核等。
单内核(Monolithic kernel),又称为宏内核。此架构的特性是整个核心程序都是以核心空间(Kernel Space)的身份及监管者模式(Supervisor Mode)来运行(宏内核被实现为运行在单一地址空间的单一的进程,核心提供的所有服务,都以特权模式,在这个大型的核心地址空间中运作,这个地址空间被称为核心空间(kernel space))。相对于其他类型的操作系统架构,如微核心架构或混核心架构等,这些核心会定义出一个高级的虚拟接口,由该接口来涵盖描述整个电脑硬件,这些描述会集合成一组硬件描述用词,有时还会附加一些系统调用,如此可以用一个或多个模块来实现各种操作系统服务,如进程管理、共时(Concurrency)控制、存储器管理等。
微内核(Microkernel),又称为微核心。微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。微核心的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务器(service)。所有的服务器进程,都运行在不同的地址空间。只有需要绝对特权的进程,才能在具特权的运行模式下运行,其余的进程则在用户 空间运行。
混合内核(Hybrid kernel)像微内核结构,只不过它的组件更多的在核心态中运行,以获得更快的执行速度。混合内核,一种操作系统内核架构,结合整块性核心与单核心两种设计方法。它的架构实作方式接近于整块性核心。最有名的混合核心为Windows NT核心与XNU。
外内核(Exokernel)的设计理念是尽可能的减少软件的抽象化,这使得开发者可以专注于硬件的抽象化。外核心的设计极为简化,它的目标是在于同时简化传统微内核的讯息传递机制,以及整块性核心的软件抽象层。外核的目标就是让应用程序直接请求一块特定的物理空间,一块特定的磁盘块等等。系统本身只保证被请求的资源当前是空闲的,应用程序就允许直接存取它。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议。
5、操作系统操作
*双重模式操作*:
为了确保操作系统地正常执行,必须区分操作系统代码和用户定义代码的执行。许多操作系统所采取的方法是提供硬件支持以允许区分各种执行模式。
至少需要两种独立的操作模式:用户模式(user mode)和监督程序模式(monitor mode)(也称为管理模式(supervisor mode)、系统模式(system mode)或特权模式(privileged mode))。在计算机硬件中增加一个称为模式位(mode bit)的位以表示当前模式:监督程序模式(0)和用户模式(1)。有了模式位,就可以区分操作系统所执行的任务和用户所执行的任务。
系统引导时,硬件开始处于内核模式。接着,装入操作系统,开始在用户模式下执行用户进程。一旦出现陷阱或中断,硬件会从用户模式切换到内核模式。因此,只要操作系统获得了对计算机的控制,它就处于内核模式。系统在将控制交还给用户程序时会切换到用户模式。
双重模式操作提高了保护操作系统和用户程序不受错误用户程序影响的手段。其实现为:将能引起损害的机器指令作为特权指令。如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将其以陷阱的形式通知操作系统。
系统调用为用户程序请求操作系统代表用户程序完成预留给操作系统的任务提供了方法。系统调用通常采用陷阱到中断向量中的一个指定位置的方式。当系统调用被执行时,硬件会将它作为软件中断。控制权会通过中断向量转交到操作系统的中断处理程序,模式位设置成内核模式。系统调用服务程序是操作系统的一部分。内核检查中断指令以确定发生了什么系统调用;参数表示用户程序请求什么类型的服务。请求所需要的其他信息可通过寄存器、堆栈或内存来传递。内核检验参数是否正确和合法,再执行请求,然后将控制返回到系统调用之后的指令。
6、进程管理
进程是系统工作的单元。系统由多个进程组成,其中一些是操作系统进程(执行系统代码),其余的是用户进程(执行用户代码)。所有这些进程可以潜在地并发执行,如通过在单CPU上采用CPU复用来实现。
操作系统负责下述与进程管理相关的活动:
*创建和删除用户进程和系统进程;
*挂起和重启进程;
*提供进程同步机制;
*提供进程通信机制;
*提供死锁处理机制。
7、内存管理
内存是现代计算机系统操作的中心。内存通常是CPU所能直接寻址和访问的唯一大容量存储器。
操作系统负责下列有关内存管理的活动:
*记录内存的哪部分正在被使用及被谁使用;
*当有内存空间是,决定哪些进程可以装入内存;
*根据需要分配和释放内存空间。
8、存储管理
操作系统对存储设备上的物理属性进行了抽象,定义了逻辑存储单元,即文件。操作系统将文件映射到物理介质上,并通过这些物理介质来访问这些文件。
A、文件系统管理
文件管理是操作系统最为常见的组成部分。文件是由其创建者定义的一组相关信息的集合。通常,文件表示程序(源程序和目标程序)和数据。
操作系统负责下列有关文件管理的活动:
*创建和删除文件;
*创建和删除目录来组织文件;
*提供操作文件和目录的原语;
*将文件映射到二级存储上;
*在稳定介质上备份文件。
B、大容量存储器管理
绝大多数现代计算机系统都采用硬盘作为主要非易失存储介质来存储程序和数据。许多程序都存储在硬盘上,要执行时才调入内存,在执行时将硬盘作为处理的来源地和目的地。因此,硬盘的适当管理对计算机系统尤为重要。
操作系统负责下列有关硬盘管理的活动:
*空闲空间管理;
*存储空间分配;
*硬盘调度。
C、高速缓存
高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。硬件高速缓存基于着名的局部性原理,该原理既适用于程序结构也适用于数据结构。在有高速缓冲存储器的.计算机系统中,中央处理器存取主存储器的地址划分为行号、列号和组内地址三个字段。于是,主存储器就在逻辑上划分为若干行;每行划分 为若干的存储单元组;每组包含几个或几十个字。高速存储器也相应地划分为行和列的存储单元组。二者的列数相同,组的大小也相同,但高速存储器的行数却比主 存储器的行数少得多。
高速缓存主要由三大部分组成:
*Cache存储体:存放由主存调入的指令与数据块。
*地址转换部件:建立目录表以实现主存地址到缓存地址的转换。
*替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。
操作系统执行高速缓存管理,对高速缓存大小和置换策略的仔细选择可以极大提高性能。
D、I/O子系统
I/O子系统包括如下几个部分:
*一个包括缓冲、高速缓存和假脱机的内存管理部分;
*通用设备驱动器接口;
*特定硬件设备的驱动程序。
9、保护和安全
保护是一种控制进程或用户对计算机资源的访问的机制。这个机制必须为强加控制提供一种规格说明方法和一种强制执行方法。
安全的主要工作是防止系统不受外部或内部攻击。这些攻击范围很广,包括病毒和蠕虫、拒绝服务攻击、身份偷窃、服务偷窃。
10、分布式系统
分布式系统是将一组物理上分开来的、各种可能的异构的计算机系统通过网络连接在一起,为用户提供系统所维护的各种资源的计算机的集合。
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。
网络操作系统(Network Operating System)提供跨网络的文件共享、包括允许不同计算机上的进程进行消息交换的通信方法等功能。
11、专用系统
*实时嵌入式系统
*多媒体系统
*手持系统
12、计算环境
*传统计算
*客户机-服务器计算
*对等计算
*基于Web的计算
拓展:计算机三级考试网络操作系统基本概念
1.单机操作系统
单机操作系统包括几个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理等。
(1)操作系统的管理功能
①进程管理:所谓进程(Process)就是一个将执行的程序,它附有该进程的地址空间、相应的寄存器组以及运行程序所需要的其他信息。操作系统必须提供一种启动进程的机制。在DOS中,该机制就是EXEC函数。在Windows中启动进程的函数是CreateProcess。
②内存管理:操作系统的内存管理功能是管理内存资源,主要实现内存的分配与回收、存储保护以及内存的扩充等。
③文件系统:文件系统负责管理在硬盘和其他大容量存储设备中存储的文件,通过文件管理向用户提供创建文件、删除文件、读写文件、打开和关闭文件等功能。
DOS通过文件表FAT寻找磁盘文件; Windows通过虚拟文件表VFAT来寻找磁盘文件; OS/2通过高性能文件系统HPFS来寻找磁盘文件。一般来说,HPFS的性能要比FAT和VFAT都好。
④设备I/O操作系统的设备管理负责分配和回收外部设备,以及控制外围设备按用户程序的要求进行操作。DOS使用驱动程序来管理设备。
(2)操作系统的结构
操作系统通常有4类组件。
①驱动程序;
②内核;
③接口库;
④外围组件
2.网络操作系统
网络操作系统(NOS)是指能使网络上各个计算机方便而有效地共享网络资源,为用户提供所需的各种服务的操作系统软件。
网络操作系统的基本任务是:屏蔽本地资源与网络资源的差异性,为用户提供各种基本网络服务功能,实现网络系统资源的共享管理,并提供网络系统的安全保障。
什么是Web OS?Web OS是一个运行在网页浏览器中的虚拟操作系统,更精确地说,Web OS是一个运行在网页浏览器中的应用程序集合。因此,有人把NOS称为服务器操作系统,把Web OS称为客户端操作系统。
3.网络操作系统的分类
一般来说,网络操作系统可以分为两类:专用型NOS与通用型NOS。
4.网络操作系统的基本功能
网络操作系统的基本功能有:文件服务、打印服务、数据库服务、通信服务、信息服务、分布式服务、网络管理服务、Internet/Intranet服务。
;