计算机基础理论知识梳理篇
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机基础理论知识梳理篇相关的知识,希望对你有一定的参考价值。
字长与数据类型长度
字长指CPU在同一时间能够处理二进制数据的位数,是由其外接数据总线(地址总线决定了CPU的寻址空间,如16位微型机的地址总线为20位,其可寻址空间为220 = 1MB)的条数决定的。早期的微机字长一般是8位或16位,目前市面上的计算机的处理器大部分已达到64位。但大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)、双倍字长运算。ANSI C/C++ 定义了基本数据类型长度,而操作系统字长可能与物理机器实际字长不一致,编译器是根据操作系统字长和ANSI C/C++ 标准来决定数据类型长度的。对于64位系统比32位系统代码更长,占用更多的内存空间也是不难理解的。
页、块(簇)与扇区
- 扇区是磁道的一个分区,扇区的大小是固定的512B,是磁盘读写的基本单位。
- 块(Block,Windows中称簇Cluster)是文件分配磁盘空间的基本单位(也可以说是系统读写磁盘的基本单位),每个块可以包括2n个扇区(文件系统可支持的块数量有上限,FAT16簇总数只有216个,FAT32簇总数有232个)。
一个文件通常存放在一个或多个块里,两个文件不能存放在同一个块中。比如,有1024个文件,大小为1字节,
这些文件在硬盘上占用的空间不是1B而是1024个块,如果一个块为8 * 512B = 4K,那么就占了4M的空间。
块越大,磁盘碎片就越少,硬盘的速度就越快,但对小文件而言,硬盘的使用效率就会越小。磁盘如果主要存放
电影等大文件设置大块,如果主要存放很小的文件设置小块。
磁盘碎片:指文件被分散保存到磁盘的不同地方,而不是连续的块。造成该问题的根本原因可能是文件内容长度的增加。
有人认为,虚拟内存空间(硬盘的特定区域,Linux中称swap空间)中的临时交换文件频繁读写,是产生硬盘碎片的主要原因。
我对这种说法是存疑的,既是临时文件,其内容在系统重启后就会失效,当然服务器一般是不会经常重启的;
因此并不需要对PC机频繁进行磁盘碎片的整理,对服务器而言,若是虚拟内存空间中的内容访问频繁,进行磁盘碎片
整理意义不大。Windows pagefile.sys文件一旦创建则长度固定,其占用的连续簇形式就固定下来,读写
并不改变pagefile.sys的大小,当该文件告罄后系统创建temppf.sys依旧占用连续的一块区域(当然temppf.sys与
pagefile.sys可能不在一个毗邻连续的区域)。Linux 虚拟内存空间位于单独的swap分区中,不影响其他分区文件。
- 页(Page)指内存分页存储管理中将一个进程空间划分成多个大小相等的片,并给以编号0、1、2等,是页置换(通过页面置换算法来实现)的基本单位。相应地,也把内存空间分成与页面相同大小的若干个块,称为(物理)块或页框(Frame),也同样加以编号。页大小是2n个扇区大小,通常为512 B~8 KB。系统是通过页表来维护页到块的映射关系的。页置换可解决空闲物理内存空间不足的问题。常见页面置换算法有如下几种:
1)先进先出法FIFO; 2)最佳置换法OPT:选择将来不再使用或在最远的将来才被访问的页调换出去; 3)最近最久未使用LRU:选择在最近一段时间里最久没有使用过的页面予以淘汰; 4)Clock置换算法(LRU算法的近似实现); 5)最少使用(LFU)置换算法; 6)页面缓冲置换算法。
管道(Pipe) 、命名管道(FIFO) 与 IPC Socket
- 管道用于有亲缘关系的进程间通信,是内核管理的一个缓冲区,是一段环形数据结构,可循环利用。其一端连接一个进程的输出,用于向管道中放入信息,若已将管道填满则等待另一端读出;另一端连接一个进程的输入,用于从管道中取出信息,若未读到信息则等待另一端放入。
- 命名管道(Named PIPE)在Linux文件系统中是一种特殊文件类型(p),客服了无名管道的限制,能用于无亲缘关系的进程间通信。当一个进程以读方式打开该文件,而另一个进程以写方式打开该文件时,内核就会在这两个进程之间建立管道。其之所以叫FIFO,是因为管道本质上是一个先进先出的队列数据结构,最早放入的数据被最先读出来,从而保证信息交流的顺序。
- UNIX Domain Socket(IPC Socket)是在网络Socket框架上发展出的一种IPC机制,实现了在本机上把数据从一个进程拷贝到另一个进程,比网络Socket更有效率(无需网络协议栈打包拆包、计算校验和、维护序号和应答等)。IPC Socket也采用类似FIFO文件(p)的形式通过一个指定的文件(s)对应内核的一条通道,相互通信的两个进程读写该文件实际是读写内核通道。下边这段来自 wikipedia:
Like named pipes, Unix domain sockets support transmission of a reliable stream of
bytes (SOCK_STREAM,compare to TCP). In addition, they support ordered and reliable
transmission of datagrams (SOCK_SEQPACKET,compare to SCTP), or unordered and unreliable
transmission of datagrams (SOCK_DGRAM, compare to UDP). The Unix domain socket facility
is a standard component of POSIX operating systems.
以上是关于计算机基础理论知识梳理篇的主要内容,如果未能解决你的问题,请参考以下文章