CSDN博客

img tesge

unix概述

发表于2004/7/17 9:59:00  1654人阅读

UNIX进程的内部结构

  UNIX 操作系统的中心是所谓的内核(kernel),内核负责实现所有硬件设备,如磁盘ram和cpu与unix进程之间的接口.

通过对unix系统进行系统调用实现了用户进程和os之间的通信,这些系统调用包括open(),read(),write(),exec(),malloc等基本unix操作,unix内核截取了这些系统调用,就会按特定的规则进行处理.

read(),write()对磁盘进行操作

fork() 是产生新任务,即新进程

malloc() 操作ram内存

UNIX缓冲区高速缓存

正如oracle在ram中具有数据高速缓存一样,unix也使用了一个ram缓冲区,使不必要的i/o操作最小化,这个缓冲区通常称为JFS(日志文件系统)缓冲区,当oracle请求获得数据块时,oracle首先会检查data buffer catch,如果没有找到就检查unix jfs缓冲区,如果数据也没有找到的话那么检查磁盘阵列缓冲区(disk array buffer)只有当这些缓冲区中也不包含数据块时才进行物理磁盘读操作.

UNIX内存管理

unix 操作系统拥有虚拟内存(virual memory),在虚拟内存设置中,可以使用特殊的交换磁盘区,

(swap disk area)以扩大现存的ram存储器.

虚拟内存是一种策略:该策略依赖于这样一个事实:并不是每个执行的任务都要经常访问其ram存储区域,因为所有ram区域并不是经常处于使用状态,所以unix已经开发了一种页面调度算法,当下一刻不需要ram内存时,该算法能将ram内存移动到交换磁盘.

当内存区域建立时,unix将不拒绝ram请求已超过ram现有数量的新任务,更确切的说,unix将最近最少使用的ram内存页交给交换磁盘,以便为新来的请求让出空间,当超过ram的物理限制时,unix能清除ram区域,因为这些区域已经被写人交换磁盘.

当要为交换而清除ram区域时,任何原始程序引起的对内存的后续访问都要求unix拷贝在ram中的内存页,以便使这些内存页仍可访问,操作中的unix页面请求需要调用磁盘i/o,并且这是执行缓慢的一个根源,因此对于一个dba来说,避免操作中的unix页面请求至关重要.

1.交换出(page out)操作

预计有额外的ram内存区域请求时,unix通常交换ram页,ram的异步写操作通常是对标记为可交换的所有的内存区域进行的,总之,交换出操作并不能使ram内存区域从ram中物理移出,它只是一种暂时的状态,当unix决定将区域从ram中移走时,已经将ram中的内存copy到磁盘.

2.交换入(page in)操作

因为已经确定unix实际上不从ram中删除区域,所以交换出操作并不能引起关注,然而,当unix执行交换入操作时调用磁盘i/o,当unix从交换磁盘中取回区域并将其重新装入ram区域时,请求任务要等待很长的时间(数毫秒)

因此,对于oracle任务来说,ram交换入操作是一件不愿发生的事情,oracle dba必须经常监视交换入操作并采取适当的措施.

减少交换入的几种方法

为unix服务器增加额外的ram

通过减少数据库缓冲的尺寸来缩小数据库的sga大小

将关键区域sga标记为不可交换的空间

 

 

 

 

 

 

 

 

 

 

 

0 0

相关博文

我的热门文章

img
取 消
img